Slide 1

Slide 1 text

Entwicklungs- prozess und Architektur Entwicklungsprozess und Architektur einer gewachsenen Webanwendung Kerstin Puschke German Perl Workshop 2014

Slide 2

Slide 2 text

Wer bin ich Kontakt •  http://www.kpuschke.eu •  twitter: @titanoboa42 •  https://www.xing.com/profile/ Kerstin_Puschke software engineer bei XING Hamburg •  xing.com soziales Netzwerk für berufliche Kontakte •  ~14 Mio. Mitglieder •  debian, perl, javascript, ruby on rails, mysql, redis, riak, . . . Wir stellen ein! http://corporate.xing.com/ deutsch/unternehmen/karriere- bei-xing/ März 2014 // Entwicklungsprozess und Architektur // Kerstin Puschke // German Perl Workshop 2014 2

Slide 3

Slide 3 text

Überblick März 2014 // Entwicklungsprozess und Architektur // Kerstin Puschke // German Perl Workshop 2014 3 •  Einleitung •  Technologien & Architektur •  Programmiersprachen, Datenbanken, Storage und mehr •  Anwendungen, APIs & asynchrone Kommunikation •  Entwicklungsprozess & -werkzeuge •  Entwicklungs- und Testumgebungen •  Versionskontrolle •  continous integration, Releasezyklen / continous deployment

Slide 4

Slide 4 text

Einleitung März 2014 // Entwicklungsprozess und Architektur // Kerstin Puschke // German Perl Workshop 2014 4 •  xing.com •  soziales Netzwerk für berufliche Kontakte •  ~14 Mio. Mitglieder •  XING •  xing.com •  amiando aka XING EVENTS •  kununu

Slide 5

Slide 5 text

xing.com März 2014 // Entwicklungsprozess und Architektur // Kerstin Puschke // German Perl Workshop 2014 5 perl rails rails (public API) rails mobile ...

Slide 6

Slide 6 text

Frontend •  HTML •  Javascript •  jquery •  backbone März 2014 // Entwicklungsprozess und Architektur // Kerstin Puschke // German Perl Workshop 2014 6

Slide 7

Slide 7 text

Backend •  Perl •  Ruby on Rails •  Scala •  Hadoop •  Elastic Search •  Insect / Arachnid März 2014 // Entwicklungsprozess und Architektur // Kerstin Puschke // German Perl Workshop 2014 7

Slide 8

Slide 8 text

Storage, Datenbanken & Cache •  MySQL •  Riak •  Swift / Open Stack •  Redis •  Memcache März 2014 // Entwicklungsprozess und Architektur // Kerstin Puschke // German Perl Workshop 2014 8

Slide 9

Slide 9 text

Perl „core“ März 2014 // Entwicklungsprozess und Architektur // Kerstin Puschke // German Perl Workshop 2014 9 perl „core“ rails rails (public API) rails mobile ...

Slide 10

Slide 10 text

Perl App •  vor ~10 Jahren begonnen •  kein modernes Webframework •  selbstentwickeltes Templating •  aber auch „modern perl“ (Moose,...) •  Perl 5.12 März 2014 // Entwicklungsprozess und Architektur // Kerstin Puschke // German Perl Workshop 2014 10

Slide 11

Slide 11 text

Perl App März 2014 // Entwicklungsprozess und Architektur // Kerstin Puschke // German Perl Workshop 2014 11 •  ~600k Zeilen, davon ~300k Zeilen Perl

Slide 12

Slide 12 text

Perl App März 2014 // Entwicklungsprozess und Architektur // Kerstin Puschke // German Perl Workshop 2014 12 •  ~30M externe Zugriffe / Tag

Slide 13

Slide 13 text

Perl App März 2014 // Entwicklungsprozess und Architektur // Kerstin Puschke // German Perl Workshop 2014 13 •  ~360M interne REST Zugriffe / Tag, 6k / Sekunde

Slide 14

Slide 14 text

Rails März 2014 // Entwicklungsprozess und Architektur // Kerstin Puschke // German Perl Workshop 2014 14 perl „core“ rails jobs rails (public API) rails events mobile rails profile rails ~ 20 apps

Slide 15

Slide 15 text

Kommunikation •  REST API •  RabbitMQ AMQP •  plus Beetle März 2014 // Entwicklungsprozess und Architektur // Kerstin Puschke // German Perl Workshop 2014 15 perl „core“ rails jobs rails (public API) rails events mobile rails profile

Slide 16

Slide 16 text

Perl App März 2014 // Entwicklungsprozess und Architektur // Kerstin Puschke // German Perl Workshop 2014 16 2 x 6 Anwendungsserver 2 x 18 API-Server 2 x 4 Worker-Server DC1 DC2

Slide 17

Slide 17 text

Entwicklung •  ~520 Leute aus ~28 Ländern, ~80 engineers •  Hamburg, München, Barcelona, Wien •  Crossfunktionale Entwicklungsteams •  Scrum, Kanban •  pair programming, code reviews •  QA März 2014 // Entwicklungsprozess und Architektur // Kerstin Puschke // German Perl Workshop 2014 17

Slide 18

Slide 18 text

Provisioning Development-VMs März 2014 // Entwicklungsprozess und Architektur // Kerstin Puschke // German Perl Workshop 2014 18 •  Vagrant & Chef

Slide 19

Slide 19 text

Versionskontrolle März 2014 // Entwicklungsprozess und Architektur // Kerstin Puschke // German Perl Workshop 2014 19 •  Github >1800 repositories

Slide 20

Slide 20 text

Continuous Integration & Deployment März 2014 // Entwicklungsprozess und Architektur // Kerstin Puschke // German Perl Workshop 2014 20 •  Jenkins CI ~30 Projekte, ~250 build jobs •  wöchentliches bis zu continuous deployment

Slide 21

Slide 21 text

Monitoring März 2014 // Entwicklungsprozess und Architektur // Kerstin Puschke // German Perl Workshop 2014 21 •  logjam

Slide 22

Slide 22 text

Monitoring März 2014 // Entwicklungsprozess und Architektur // Kerstin Puschke // German Perl Workshop 2014 22 •  graphite

Slide 23

Slide 23 text

Monitoring März 2014 // Entwicklungsprozess und Architektur // Kerstin Puschke // German Perl Workshop 2014 23 •  cube

Slide 24

Slide 24 text

famous last words die "WTF?"; # should not be possible März 2014 // Entwicklungsprozess und Architektur // Kerstin Puschke // German Perl Workshop 2014 24

Slide 25

Slide 25 text

www.xing.com Vielen Dank für Eure Aufmerksamkeit!

Slide 26

Slide 26 text

Wer bin ich Kontakt •  http://www.kpuschke.eu •  twitter: @titanoboa42 •  https://www.xing.com/profile/ Kerstin_Puschke software engineer bei XING Hamburg •  xing.com soziales Netzwerk für berufliche Kontakte •  ~14 Mio. Mitglieder •  debian, perl, javascript, ruby on rails, mysql, redis, riak, . . . Wir stellen ein! http://corporate.xing.com/deutsch/ unternehmen/karriere-bei-xing/ März 2014 // Entwicklungsprozess und Architektur // Kerstin Puschke // German Perl Workshop 2014 26