behind the scenes of a grown-up web application

32
Behind the scenes of a grown-up web application Kerstin Puschke YAPC::EU 2014

Upload: kerstin-puschke

Post on 05-Dec-2014

323 views

Category:

Internet


1 download

DESCRIPTION

Behind the scenes of a grown-up web application - YAPC::EU 2014, Sofia, Bulgaria

TRANSCRIPT

Page 1: Behind the scenes of a grown-up web application

Behind the scenes of a grown-up web application Kerstin Puschke YAPC::EU 2014

Page 2: Behind the scenes of a grown-up web application

Who am I

Contact •  http://www.kpuschke.eu

•  twitter: @titanoboa42

•  https://www.xing.com/profile/Kerstin_Puschke

software engineer at XING Hamburg •  xing.com

social network for business professionals

•  about 14M users

•  debian, perl, javascript, ruby on rails, mysql, redis, riak, . . .

We’re hiring!

http://corporate.xing.com/english/company/careers-at-xing/

August 14 // Behind the scenes of a grown-up web application // Kerstin Puschke // YAPC::EU 2014 2

Page 3: Behind the scenes of a grown-up web application

Outline

August 14 // Behind the scenes of a grown-up web application // Kerstin Puschke // YAPC::EU 2014 3

•  Technology & Architecture •  programming languages, databases, storage,...

•  applications, APIs & asynchronous communication

•  Development Process and Tools •  development and test environments

•  version control

•  continous integration, deployment

Page 4: Behind the scenes of a grown-up web application

How it all began

10 years ago - Perl & MySQL

August 14 // Behind the scenes of a grown-up web application // Kerstin Puschke // YAPC::EU 2014 4

Page 5: Behind the scenes of a grown-up web application

The camel has been growing

Today - Perl & MySQL & more

August 14 // Behind the scenes of a grown-up web application // Kerstin Puschke // YAPC::EU 2014 5

Page 6: Behind the scenes of a grown-up web application

xing.com

August 14 // Behind the scenes of a grown-up web application // Kerstin Puschke // YAPC::EU 2014 6

perl

rails

rails

rails

mobile

...

Page 7: Behind the scenes of a grown-up web application

Backend

•  Perl

•  Ruby on Rails

•  Scala

•  Hadoop

•  Elastic Search

•  Insect / Arachnid

August 14 // Behind the scenes of a grown-up web application // Kerstin Puschke // YAPC::EU 2014 7

Page 8: Behind the scenes of a grown-up web application

Frontend

•  HTML

•  Javascript •  jquery

•  backbone

August 14 // Behind the scenes of a grown-up web application // Kerstin Puschke // YAPC::EU 2014 8

Page 9: Behind the scenes of a grown-up web application

Storage, Databases & Cache

•  MySQL

•  Redis

•  Memcache

•  Swift / Open Stack

•  Riak

August 14 // Behind the scenes of a grown-up web application // Kerstin Puschke // YAPC::EU 2014 9

Page 10: Behind the scenes of a grown-up web application

Perl „core“

August 14 // Behind the scenes of a grown-up web application // Kerstin Puschke // YAPC::EU 2014 10

perl „core“

rails

rails

rails

mobile

...

Page 11: Behind the scenes of a grown-up web application

Rails

August 14 // Behind the scenes of a grown-up web application // Kerstin Puschke // YAPC::EU 2014 11

perl „core“

rails jobs

rails ...

rails events

mobile

rails ...

rails ~ 20 apps

Page 12: Behind the scenes of a grown-up web application

Communication

•  REST API

•  RabbitMQ AMQP •  plus Beetle

August 14 // Behind the scenes of a grown-up web application // Kerstin Puschke // YAPC::EU 2014 12

perl „core“

rails jobs

rails public API

rails events

mobile

rails ...

Page 13: Behind the scenes of a grown-up web application

The camel has been growing...

August 14 // Behind the scenes of a grown-up web application // Kerstin Puschke // YAPC::EU 2014 13

Page 14: Behind the scenes of a grown-up web application

Dissolving Profile

August 14 // Behind the scenes of a grown-up web application // Kerstin Puschke // YAPC::EU 2014 14

perl „core“

rails

rails (public API)

rails

mobile

rails profile frontend

Page 15: Behind the scenes of a grown-up web application

Shadow calls

August 14 // Behind the scenes of a grown-up web application // Kerstin Puschke // YAPC::EU 2014 15

old app

new app user request

worker amqp message

shadow call

Page 16: Behind the scenes of a grown-up web application

Still at work

August 14 // Behind the scenes of a grown-up web application // Kerstin Puschke // YAPC::EU 2014 16

Page 17: Behind the scenes of a grown-up web application

Perl App

August 14 // Behind the scenes of a grown-up web application // Kerstin Puschke // YAPC::EU 2014 17

•  ~600k lines of code, ~300k lines of perl code

Page 18: Behind the scenes of a grown-up web application

Perl App

August 14 // Behind the scenes of a grown-up web application // Kerstin Puschke // YAPC::EU 2014 18

•  ~30M external requests / day

Page 19: Behind the scenes of a grown-up web application

Perl App

August 14 // Behind the scenes of a grown-up web application // Kerstin Puschke // YAPC::EU 2014 19

•  ~360M internal REST requests / day, 6k / second

Page 20: Behind the scenes of a grown-up web application

Perl App

August 14 // Behind the scenes of a grown-up web application // Kerstin Puschke // YAPC::EU 2014 20

DC1

DC2

2 x 6 application server

2 x 18 API Server

2 x 4 worker server

Page 21: Behind the scenes of a grown-up web application

Taking care

August 14 // Behind the scenes of a grown-up web application // Kerstin Puschke // YAPC::EU 2014 21

Page 22: Behind the scenes of a grown-up web application

Office Locations

August 14 // Behind the scenes of a grown-up web application // Kerstin Puschke // YAPC::EU 2014 22

Hamburg, Munich, Vienna, Barcelona

~520 people from ~28 countries, ~80 engineers

Page 23: Behind the scenes of a grown-up web application

Provisioning Development VMs

August 14 // Behind the scenes of a grown-up web application // Kerstin Puschke // YAPC::EU 2014 23

•  Vagrant & Chef

Page 24: Behind the scenes of a grown-up web application

Version Control

August 14 // Behind the scenes of a grown-up web application // Kerstin Puschke // YAPC::EU 2014 24

•  Github >1800 repositories

Page 25: Behind the scenes of a grown-up web application

Continuous Integration & Deployment

August 14 // Behind the scenes of a grown-up web application // Kerstin Puschke // YAPC::EU 2014 25

•  Jenkins CI ~30 projects, ~250 build jobs

•  weekly to continuous deployment

Page 26: Behind the scenes of a grown-up web application

Monitoring

August 14 // Behind the scenes of a grown-up web application // Kerstin Puschke // YAPC::EU 2014 26

•  logjam

Page 27: Behind the scenes of a grown-up web application

Monitoring

August 14 // Behind the scenes of a grown-up web application // Kerstin Puschke // YAPC::EU 2014 27

•  graphite

Page 28: Behind the scenes of a grown-up web application

Monitoring

August 14 // Behind the scenes of a grown-up web application // Kerstin Puschke // YAPC::EU 2014 28

•  cube

Page 29: Behind the scenes of a grown-up web application

famous last words

die "WTF?"; # should not be possible

August 14 // Behind the scenes of a grown-up web application // Kerstin Puschke // YAPC::EU 2014 29

Page 30: Behind the scenes of a grown-up web application

The professional network www.xing.com

Thank you for your attention!

Page 31: Behind the scenes of a grown-up web application

Who am I

Contact •  http://www.kpuschke.eu

•  twitter: @titanoboa42

•  https://www.xing.com/profile/Kerstin_Puschke

software engineer at XING Hamburg •  xing.com

social network for business professionals

•  about 14M users

•  debian, perl, javascript, ruby on rails, mysql, redis, riak, . . .

We’re hiring!

http://corporate.xing.com/english/company/careers-at-xing/

August 14 // Behind the scenes of a grown-up web application // Kerstin Puschke // YAPC::EU 2014 31

Page 32: Behind the scenes of a grown-up web application

Credits

Map •  The map on slide 21 was created as a screenshot from

http://umap.openstreetmap.fr

• Map background credits Outdoors (OSM) Tiles © Gravitystorm / map data OpenStreetMap

August 14 // Behind the scenes of a grown-up web application // Kerstin Puschke // YAPC::EU 2014 32