SlideShare una empresa de Scribd logo
1 de 32
Descargar para leer sin conexión
Behind the
scenes of a
grown-up web
application
Kerstin Puschke
YAPC::EU 2014
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
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
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
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
xing.com
August 14 // Behind the scenes of a grown-up web application // Kerstin Puschke // YAPC::EU 2014 6
perl
rails
rails
rails
mobile
...
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
Frontend
•  HTML
•  Javascript
•  jquery
•  backbone
August 14 // Behind the scenes of a grown-up web application // Kerstin Puschke // YAPC::EU 2014 8
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
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
...
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
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
...
The camel has been growing...
August 14 // Behind the scenes of a grown-up web application // Kerstin Puschke // YAPC::EU 2014 13
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
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
Still at work
August 14 // Behind the scenes of a grown-up web application // Kerstin Puschke // YAPC::EU 2014 16
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
Perl App
August 14 // Behind the scenes of a grown-up web application // Kerstin Puschke // YAPC::EU 2014 18
•  ~30M external requests / day
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
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
Taking care
August 14 // Behind the scenes of a grown-up web application // Kerstin Puschke // YAPC::EU 2014 21
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
Provisioning Development VMs
August 14 // Behind the scenes of a grown-up web application // Kerstin Puschke // YAPC::EU 2014 23
•  Vagrant & Chef
Version Control
August 14 // Behind the scenes of a grown-up web application // Kerstin Puschke // YAPC::EU 2014 24
•  Github >1800 repositories
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
Monitoring
August 14 // Behind the scenes of a grown-up web application // Kerstin Puschke // YAPC::EU 2014 26
•  logjam
Monitoring
August 14 // Behind the scenes of a grown-up web application // Kerstin Puschke // YAPC::EU 2014 27
•  graphite
Monitoring
August 14 // Behind the scenes of a grown-up web application // Kerstin Puschke // YAPC::EU 2014 28
•  cube
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
The professional network
www.xing.com
Thank you
for your
attention!
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
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

Más contenido relacionado

Destacado

Grundlagen der Kommandozeile unter Unix/Linux (Folien)
Grundlagen der Kommandozeile unter Unix/Linux (Folien)Grundlagen der Kommandozeile unter Unix/Linux (Folien)
Grundlagen der Kommandozeile unter Unix/Linux (Folien)Kerstin Puschke
 
Rsyslog - Deutsche Qualitätsarbeit für Linux
Rsyslog - Deutsche Qualitätsarbeit für LinuxRsyslog - Deutsche Qualitätsarbeit für Linux
Rsyslog - Deutsche Qualitätsarbeit für LinuxTrivadis
 
Grundlagen der Kommandozeile unter Unix/Linux (Handout)
Grundlagen der Kommandozeile unter Unix/Linux (Handout)Grundlagen der Kommandozeile unter Unix/Linux (Handout)
Grundlagen der Kommandozeile unter Unix/Linux (Handout)Kerstin Puschke
 
NoSQL-Datenbanken am Beispiel CouchDB
NoSQL-Datenbanken am Beispiel CouchDBNoSQL-Datenbanken am Beispiel CouchDB
NoSQL-Datenbanken am Beispiel CouchDBKerstin Puschke
 
Einstieg in relationale Datenbanken mit MySQL (Handout)
Einstieg in relationale Datenbanken mit MySQL (Handout)Einstieg in relationale Datenbanken mit MySQL (Handout)
Einstieg in relationale Datenbanken mit MySQL (Handout)Kerstin Puschke
 
Einstieg in relationale Datenbanken mit MySQL (Folien)
Einstieg in relationale Datenbanken mit MySQL (Folien)Einstieg in relationale Datenbanken mit MySQL (Folien)
Einstieg in relationale Datenbanken mit MySQL (Folien)Kerstin Puschke
 
Nmon Analysis - Performance monitoring tool for LINUX and AIX
Nmon Analysis - Performance monitoring tool for LINUX and AIXNmon Analysis - Performance monitoring tool for LINUX and AIX
Nmon Analysis - Performance monitoring tool for LINUX and AIXGanesh Mandala
 
Extreme Linux Performance Monitoring and Tuning
Extreme Linux Performance Monitoring and TuningExtreme Linux Performance Monitoring and Tuning
Extreme Linux Performance Monitoring and TuningMilind Koyande
 
Windows command prompt a to z
Windows command prompt a to zWindows command prompt a to z
Windows command prompt a to zSubuh Kurniawan
 
Webentwicklung mit PHP und MySQL
Webentwicklung mit PHP und MySQLWebentwicklung mit PHP und MySQL
Webentwicklung mit PHP und MySQLKerstin Puschke
 
Linux monitoring and Troubleshooting for DBA's
Linux monitoring and Troubleshooting for DBA'sLinux monitoring and Troubleshooting for DBA's
Linux monitoring and Troubleshooting for DBA'sMydbops
 
Linux Troubleshooting
Linux TroubleshootingLinux Troubleshooting
Linux TroubleshootingKeith Wright
 
Course on Ehtical Hacking - Introduction
Course on Ehtical Hacking - IntroductionCourse on Ehtical Hacking - Introduction
Course on Ehtical Hacking - IntroductionBharat Thakkar
 
The New CSS Layout - dotCSS
The New CSS Layout - dotCSSThe New CSS Layout - dotCSS
The New CSS Layout - dotCSSRachel Andrew
 

Destacado (16)

Grundlagen der Kommandozeile unter Unix/Linux (Folien)
Grundlagen der Kommandozeile unter Unix/Linux (Folien)Grundlagen der Kommandozeile unter Unix/Linux (Folien)
Grundlagen der Kommandozeile unter Unix/Linux (Folien)
 
Rsyslog - Deutsche Qualitätsarbeit für Linux
Rsyslog - Deutsche Qualitätsarbeit für LinuxRsyslog - Deutsche Qualitätsarbeit für Linux
Rsyslog - Deutsche Qualitätsarbeit für Linux
 
Grundlagen der Kommandozeile unter Unix/Linux (Handout)
Grundlagen der Kommandozeile unter Unix/Linux (Handout)Grundlagen der Kommandozeile unter Unix/Linux (Handout)
Grundlagen der Kommandozeile unter Unix/Linux (Handout)
 
NoSQL-Datenbanken am Beispiel CouchDB
NoSQL-Datenbanken am Beispiel CouchDBNoSQL-Datenbanken am Beispiel CouchDB
NoSQL-Datenbanken am Beispiel CouchDB
 
Einstieg in relationale Datenbanken mit MySQL (Handout)
Einstieg in relationale Datenbanken mit MySQL (Handout)Einstieg in relationale Datenbanken mit MySQL (Handout)
Einstieg in relationale Datenbanken mit MySQL (Handout)
 
Linux monitoring
Linux monitoringLinux monitoring
Linux monitoring
 
Einstieg in relationale Datenbanken mit MySQL (Folien)
Einstieg in relationale Datenbanken mit MySQL (Folien)Einstieg in relationale Datenbanken mit MySQL (Folien)
Einstieg in relationale Datenbanken mit MySQL (Folien)
 
Nmon Analysis - Performance monitoring tool for LINUX and AIX
Nmon Analysis - Performance monitoring tool for LINUX and AIXNmon Analysis - Performance monitoring tool for LINUX and AIX
Nmon Analysis - Performance monitoring tool for LINUX and AIX
 
3 infomeeting
3 infomeeting3 infomeeting
3 infomeeting
 
Extreme Linux Performance Monitoring and Tuning
Extreme Linux Performance Monitoring and TuningExtreme Linux Performance Monitoring and Tuning
Extreme Linux Performance Monitoring and Tuning
 
Windows command prompt a to z
Windows command prompt a to zWindows command prompt a to z
Windows command prompt a to z
 
Webentwicklung mit PHP und MySQL
Webentwicklung mit PHP und MySQLWebentwicklung mit PHP und MySQL
Webentwicklung mit PHP und MySQL
 
Linux monitoring and Troubleshooting for DBA's
Linux monitoring and Troubleshooting for DBA'sLinux monitoring and Troubleshooting for DBA's
Linux monitoring and Troubleshooting for DBA's
 
Linux Troubleshooting
Linux TroubleshootingLinux Troubleshooting
Linux Troubleshooting
 
Course on Ehtical Hacking - Introduction
Course on Ehtical Hacking - IntroductionCourse on Ehtical Hacking - Introduction
Course on Ehtical Hacking - Introduction
 
The New CSS Layout - dotCSS
The New CSS Layout - dotCSSThe New CSS Layout - dotCSS
The New CSS Layout - dotCSS
 

Similar a Behind the scenes of a grown-up web application

Happy birthday "monUPMC": 9 years of Portal at UPMC
Happy birthday "monUPMC": 9 years of Portal at UPMCHappy birthday "monUPMC": 9 years of Portal at UPMC
Happy birthday "monUPMC": 9 years of Portal at UPMCLudovic A
 
Europeana Newspapers - the Gateway to European Newspapers Online
Europeana Newspapers - the Gateway to European Newspapers OnlineEuropeana Newspapers - the Gateway to European Newspapers Online
Europeana Newspapers - the Gateway to European Newspapers Onlinecneudecker
 
Europeana_Newspapers_ONB_infoday_HJLieder
Europeana_Newspapers_ONB_infoday_HJLiederEuropeana_Newspapers_ONB_infoday_HJLieder
Europeana_Newspapers_ONB_infoday_HJLiederEuropeana Newspapers
 
Five Elements of Software Engineering for Mobile
Five Elements of Software Engineering for MobileFive Elements of Software Engineering for Mobile
Five Elements of Software Engineering for Mobile3scale.net
 
Opening collections with digital services and Social Media (Offene Archive 2.2)
Opening collections with digital services and Social Media (Offene Archive 2.2) Opening collections with digital services and Social Media (Offene Archive 2.2)
Opening collections with digital services and Social Media (Offene Archive 2.2) Offene Archive
 
Europeana Newspapers LIBER2013 Workshop intro
Europeana Newspapers LIBER2013 Workshop introEuropeana Newspapers LIBER2013 Workshop intro
Europeana Newspapers LIBER2013 Workshop introEuropeana Newspapers
 
Europeana Newspapers - Data, Tools & Future Plans
 Europeana Newspapers - Data, Tools & Future Plans  Europeana Newspapers - Data, Tools & Future Plans
Europeana Newspapers - Data, Tools & Future Plans cneudecker
 
Phidias: Steps forward in detection and identification of anomalous atmospher...
Phidias: Steps forward in detection and identification of anomalous atmospher...Phidias: Steps forward in detection and identification of anomalous atmospher...
Phidias: Steps forward in detection and identification of anomalous atmospher...Phidias
 
IFLA 2014 Europeana Newspapers Rossitza Atanassova
IFLA 2014 Europeana Newspapers Rossitza AtanassovaIFLA 2014 Europeana Newspapers Rossitza Atanassova
IFLA 2014 Europeana Newspapers Rossitza AtanassovaEuropeana Newspapers
 
Europeana Newspapers LFT Infoday Muehlberger
Europeana Newspapers LFT Infoday MuehlbergerEuropeana Newspapers LFT Infoday Muehlberger
Europeana Newspapers LFT Infoday MuehlbergerEuropeana Newspapers
 
Refinement of Digitised Newspapers
Refinement of Digitised NewspapersRefinement of Digitised Newspapers
Refinement of Digitised Newspaperscneudecker
 
SCAPE Webinar: Tools for uncovering preservation risks in large repositories
SCAPE Webinar: Tools for uncovering preservation risks in large repositoriesSCAPE Webinar: Tools for uncovering preservation risks in large repositories
SCAPE Webinar: Tools for uncovering preservation risks in large repositoriesSCAPE Project
 
A Hadoop-enabled Ship Tracking Application for the Port of Rotterdam
A Hadoop-enabled Ship Tracking Application for the Port of RotterdamA Hadoop-enabled Ship Tracking Application for the Port of Rotterdam
A Hadoop-enabled Ship Tracking Application for the Port of RotterdamDataWorks Summit
 
04 europeana newspapers
04 europeana newspapers04 europeana newspapers
04 europeana newspapersEuropeana
 
Puppet Keynote
Puppet KeynotePuppet Keynote
Puppet KeynotePuppet
 
Future Internet Visions: An Opportunity for Ireland
Future Internet Visions: An Opportunity for IrelandFuture Internet Visions: An Opportunity for Ireland
Future Internet Visions: An Opportunity for IrelandMícheál Ó Foghlú
 
Overview of the Europeana Newspapers Project
Overview of the Europeana Newspapers ProjectOverview of the Europeana Newspapers Project
Overview of the Europeana Newspapers ProjectEuropeana Newspapers
 
Shaping the EOSC Portal - future vision for EOSC Hub
Shaping the EOSC Portal - future vision for EOSC Hub Shaping the EOSC Portal - future vision for EOSC Hub
Shaping the EOSC Portal - future vision for EOSC Hub EOSC-hub project
 

Similar a Behind the scenes of a grown-up web application (20)

Happy birthday "monUPMC": 9 years of Portal at UPMC
Happy birthday "monUPMC": 9 years of Portal at UPMCHappy birthday "monUPMC": 9 years of Portal at UPMC
Happy birthday "monUPMC": 9 years of Portal at UPMC
 
Europeana Newspapers - the Gateway to European Newspapers Online
Europeana Newspapers - the Gateway to European Newspapers OnlineEuropeana Newspapers - the Gateway to European Newspapers Online
Europeana Newspapers - the Gateway to European Newspapers Online
 
Europeana_Newspapers_ONB_infoday_HJLieder
Europeana_Newspapers_ONB_infoday_HJLiederEuropeana_Newspapers_ONB_infoday_HJLieder
Europeana_Newspapers_ONB_infoday_HJLieder
 
Five Elements of Software Engineering for Mobile
Five Elements of Software Engineering for MobileFive Elements of Software Engineering for Mobile
Five Elements of Software Engineering for Mobile
 
ENP_Dutch_Infoday_LWilms
ENP_Dutch_Infoday_LWilmsENP_Dutch_Infoday_LWilms
ENP_Dutch_Infoday_LWilms
 
Opening collections with digital services and Social Media (Offene Archive 2.2)
Opening collections with digital services and Social Media (Offene Archive 2.2) Opening collections with digital services and Social Media (Offene Archive 2.2)
Opening collections with digital services and Social Media (Offene Archive 2.2)
 
Europeana Newspapers LIBER2013 Workshop intro
Europeana Newspapers LIBER2013 Workshop introEuropeana Newspapers LIBER2013 Workshop intro
Europeana Newspapers LIBER2013 Workshop intro
 
Europeana Newspapers - Data, Tools & Future Plans
 Europeana Newspapers - Data, Tools & Future Plans  Europeana Newspapers - Data, Tools & Future Plans
Europeana Newspapers - Data, Tools & Future Plans
 
Phidias: Steps forward in detection and identification of anomalous atmospher...
Phidias: Steps forward in detection and identification of anomalous atmospher...Phidias: Steps forward in detection and identification of anomalous atmospher...
Phidias: Steps forward in detection and identification of anomalous atmospher...
 
IFLA 2014 Europeana Newspapers Rossitza Atanassova
IFLA 2014 Europeana Newspapers Rossitza AtanassovaIFLA 2014 Europeana Newspapers Rossitza Atanassova
IFLA 2014 Europeana Newspapers Rossitza Atanassova
 
Europeana Newspapers LFT Infoday Muehlberger
Europeana Newspapers LFT Infoday MuehlbergerEuropeana Newspapers LFT Infoday Muehlberger
Europeana Newspapers LFT Infoday Muehlberger
 
Refinement of Digitised Newspapers
Refinement of Digitised NewspapersRefinement of Digitised Newspapers
Refinement of Digitised Newspapers
 
SCAPE Webinar: Tools for uncovering preservation risks in large repositories
SCAPE Webinar: Tools for uncovering preservation risks in large repositoriesSCAPE Webinar: Tools for uncovering preservation risks in large repositories
SCAPE Webinar: Tools for uncovering preservation risks in large repositories
 
A Hadoop-enabled Ship Tracking Application for the Port of Rotterdam
A Hadoop-enabled Ship Tracking Application for the Port of RotterdamA Hadoop-enabled Ship Tracking Application for the Port of Rotterdam
A Hadoop-enabled Ship Tracking Application for the Port of Rotterdam
 
04 europeana newspapers
04 europeana newspapers04 europeana newspapers
04 europeana newspapers
 
Puppet Keynote
Puppet KeynotePuppet Keynote
Puppet Keynote
 
Future Internet Visions: An Opportunity for Ireland
Future Internet Visions: An Opportunity for IrelandFuture Internet Visions: An Opportunity for Ireland
Future Internet Visions: An Opportunity for Ireland
 
Overview of the Europeana Newspapers Project
Overview of the Europeana Newspapers ProjectOverview of the Europeana Newspapers Project
Overview of the Europeana Newspapers Project
 
Shaping the EOSC Portal - future vision for EOSC Hub
Shaping the EOSC Portal - future vision for EOSC Hub Shaping the EOSC Portal - future vision for EOSC Hub
Shaping the EOSC Portal - future vision for EOSC Hub
 
PPU DSpace - ROMOR Workshop
PPU DSpace - ROMOR WorkshopPPU DSpace - ROMOR Workshop
PPU DSpace - ROMOR Workshop
 

Último

Unidad 4 – Redes de ordenadores (en inglés).pptx
Unidad 4 – Redes de ordenadores (en inglés).pptxUnidad 4 – Redes de ordenadores (en inglés).pptx
Unidad 4 – Redes de ordenadores (en inglés).pptxmibuzondetrabajo
 
ETHICAL HACKING dddddddddddddddfnandni.pptx
ETHICAL HACKING dddddddddddddddfnandni.pptxETHICAL HACKING dddddddddddddddfnandni.pptx
ETHICAL HACKING dddddddddddddddfnandni.pptxNIMMANAGANTI RAMAKRISHNA
 
IP addressing and IPv6, presented by Paul Wilson at IETF 119
IP addressing and IPv6, presented by Paul Wilson at IETF 119IP addressing and IPv6, presented by Paul Wilson at IETF 119
IP addressing and IPv6, presented by Paul Wilson at IETF 119APNIC
 
Cybersecurity Threats and Cybersecurity Best Practices
Cybersecurity Threats and Cybersecurity Best PracticesCybersecurity Threats and Cybersecurity Best Practices
Cybersecurity Threats and Cybersecurity Best PracticesLumiverse Solutions Pvt Ltd
 
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书rnrncn29
 
Company Snapshot Theme for Business by Slidesgo.pptx
Company Snapshot Theme for Business by Slidesgo.pptxCompany Snapshot Theme for Business by Slidesgo.pptx
Company Snapshot Theme for Business by Slidesgo.pptxMario
 
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书rnrncn29
 
SCM Symposium PPT Format Customer loyalty is predi
SCM Symposium PPT Format Customer loyalty is prediSCM Symposium PPT Format Customer loyalty is predi
SCM Symposium PPT Format Customer loyalty is predieusebiomeyer
 
TRENDS Enabling and inhibiting dimensions.pptx
TRENDS Enabling and inhibiting dimensions.pptxTRENDS Enabling and inhibiting dimensions.pptx
TRENDS Enabling and inhibiting dimensions.pptxAndrieCagasanAkio
 

Último (9)

Unidad 4 – Redes de ordenadores (en inglés).pptx
Unidad 4 – Redes de ordenadores (en inglés).pptxUnidad 4 – Redes de ordenadores (en inglés).pptx
Unidad 4 – Redes de ordenadores (en inglés).pptx
 
ETHICAL HACKING dddddddddddddddfnandni.pptx
ETHICAL HACKING dddddddddddddddfnandni.pptxETHICAL HACKING dddddddddddddddfnandni.pptx
ETHICAL HACKING dddddddddddddddfnandni.pptx
 
IP addressing and IPv6, presented by Paul Wilson at IETF 119
IP addressing and IPv6, presented by Paul Wilson at IETF 119IP addressing and IPv6, presented by Paul Wilson at IETF 119
IP addressing and IPv6, presented by Paul Wilson at IETF 119
 
Cybersecurity Threats and Cybersecurity Best Practices
Cybersecurity Threats and Cybersecurity Best PracticesCybersecurity Threats and Cybersecurity Best Practices
Cybersecurity Threats and Cybersecurity Best Practices
 
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
 
Company Snapshot Theme for Business by Slidesgo.pptx
Company Snapshot Theme for Business by Slidesgo.pptxCompany Snapshot Theme for Business by Slidesgo.pptx
Company Snapshot Theme for Business by Slidesgo.pptx
 
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
 
SCM Symposium PPT Format Customer loyalty is predi
SCM Symposium PPT Format Customer loyalty is prediSCM Symposium PPT Format Customer loyalty is predi
SCM Symposium PPT Format Customer loyalty is predi
 
TRENDS Enabling and inhibiting dimensions.pptx
TRENDS Enabling and inhibiting dimensions.pptxTRENDS Enabling and inhibiting dimensions.pptx
TRENDS Enabling and inhibiting dimensions.pptx
 

Behind the scenes of a grown-up web application

  • 1. Behind the scenes of a grown-up web application Kerstin Puschke YAPC::EU 2014
  • 2. 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
  • 3. 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
  • 4. 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
  • 5. 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
  • 6. xing.com August 14 // Behind the scenes of a grown-up web application // Kerstin Puschke // YAPC::EU 2014 6 perl rails rails rails mobile ...
  • 7. 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
  • 8. Frontend •  HTML •  Javascript •  jquery •  backbone August 14 // Behind the scenes of a grown-up web application // Kerstin Puschke // YAPC::EU 2014 8
  • 9. 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
  • 10. 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 ...
  • 11. 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
  • 12. 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 ...
  • 13. The camel has been growing... August 14 // Behind the scenes of a grown-up web application // Kerstin Puschke // YAPC::EU 2014 13
  • 14. 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
  • 15. 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
  • 16. Still at work August 14 // Behind the scenes of a grown-up web application // Kerstin Puschke // YAPC::EU 2014 16
  • 17. 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
  • 18. Perl App August 14 // Behind the scenes of a grown-up web application // Kerstin Puschke // YAPC::EU 2014 18 •  ~30M external requests / day
  • 19. 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
  • 20. 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
  • 21. Taking care August 14 // Behind the scenes of a grown-up web application // Kerstin Puschke // YAPC::EU 2014 21
  • 22. 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
  • 23. Provisioning Development VMs August 14 // Behind the scenes of a grown-up web application // Kerstin Puschke // YAPC::EU 2014 23 •  Vagrant & Chef
  • 24. Version Control August 14 // Behind the scenes of a grown-up web application // Kerstin Puschke // YAPC::EU 2014 24 •  Github >1800 repositories
  • 25. 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
  • 26. Monitoring August 14 // Behind the scenes of a grown-up web application // Kerstin Puschke // YAPC::EU 2014 26 •  logjam
  • 27. Monitoring August 14 // Behind the scenes of a grown-up web application // Kerstin Puschke // YAPC::EU 2014 27 •  graphite
  • 28. Monitoring August 14 // Behind the scenes of a grown-up web application // Kerstin Puschke // YAPC::EU 2014 28 •  cube
  • 29. 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
  • 31. 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
  • 32. 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