Vorstellung / Use Case fotocommunity            Stand: März 2013                      Text                       Text     ...
Agenda* Vorstellung* Überblick Team* Infrastruktur + Server, Arbeitsumgebungen* Timeline + Überblick Webseite* Eigenheiten...
Wer bin ich ?      * Stephan Tijink      * Head of Web Development      * Beruflich Entwickler seit 1999      * Bei der fo...
Was ist die fotocommunity         * Größte Community für Fotografie in Europa         * Aktuell in fünf Sprachen verfügbar...
Zahlen * 1,5 Millionen Mitglieder * 15 Millionen Fotos * 100 Millionen Bildkommentare * 120 Millionen Seitenaufrufe / Mona...
Das Technik Team       * 2 Mitarbeiter Infrastruktur/Server       * 7 Mitarbeiter Entwicklung       * Scrum für Projektman...
Infrastruktur* 34 physikalische Server, 23 virtuelle Server* Hosting in Frankfurt* Ubuntu 12.04 LTS (Planziel 2013)* Insta...
Serversoftware   * Nginx - SSL Terminierung, Rewrites   * Varnish - Caching / ESI   * HA Proxy - Loadbalancing   * Apache ...
Arbeitsumgebungen     * Jeder Entwickler hat eine eigene VM via Parallels     * VM liegt auf dem Arbeitsgerät (Laptop)    ...
Timeline EntwicklungBeginn Entwicklung                                                                                    ...
Überblick Webseite     * Viele Komponenten noch im Legacy-Code     * Wenige Komponenten mit Symfony1 umgesetzt     * API f...
Routing  1. Anlaufstelle Legacy-Code  2. Dump Symfony1 Routen in .htaccess  3. Symfony2 als CatchAll für übrige Requests  ...
ESI als Baukasten    * Header und Footer in Symfony2 implementiert    * Legacy-Code, Symfony1 und 3rd Party nutzen     Imp...
Authentication   * Legacy Code fungiert als „Master“   * Andere Codebasen + 3rd Party implementieren    System aus dem Leg...
PerformanceLegacy Code - 50 ms PHP                     Symfony2 - 75 ms PHPOhne Grafik: Symfony 1 - 230 ms PHP            ...
Prozess Entwicklung + Q&A        * Pro Feature/Bugfix ein Branch in git        * Pull-Request in github        * Code-Revi...
Testing* Gescheites Testen müssen wir noch lernen ;-)* PHPUnit als Testwerkzeug* Aktuell keine Auswertung Code Coverage* K...
Versionsverwaltung / Deployment           * Legacy Code in Subversion           * Symfony1 + Symfony2 in git (github.com) ...
Weitere Tools und Services         * Amazon S3 + Amazon EC2         * Jira - Issue und Sprintplanung         * github.com ...
Pain Points beim Umstieg        * 10 Jahre Spaghetti-Code        * Funktion bestehender Features nicht dokumentiert       ...
Was wir gelernt haben       * Einführung QA-Prozess       * Dokumentieren, auch ausserhalb des Code       * Mehr Knowledge...
Ausblick* Migration auf Symfony >= 2.2* Weiterführung Rewrite* Refactoring/Cleanup neuer Code, wo sinnvoll* ElasticSearch ...
Nächste SlideShare
Wird geladen in ...5
×

Entwicklungsprozess und Arbeit mit Symfony2 in der fotocommunity GmbH

1,069

Published on

* Vorstellung Entwicklungsprozess fotocommunity GmbH
* Tools, Services, Techniken
* Arbeit mit Symfony2

Published in: Technologie
0 Kommentare
1 Gefällt mir
Statistiken
Notizen
  • Hinterlassen Sie den ersten Kommentar

Keine Downloads
Views
Gesamtviews
1,069
Bei Slideshare
0
Aus Einbettungen
0
Anzahl an Einbettungen
9
Aktionen
Geteilt
0
Downloads
0
Kommentare
0
Gefällt mir
1
Einbettungen 0
No embeds

No notes for slide

Transcript of "Entwicklungsprozess und Arbeit mit Symfony2 in der fotocommunity GmbH"

  1. 1. Vorstellung / Use Case fotocommunity Stand: März 2013 Text Text Text Text Zeig uns Deine besten Bilder.
  2. 2. Agenda* Vorstellung* Überblick Team* Infrastruktur + Server, Arbeitsumgebungen* Timeline + Überblick Webseite* Eigenheiten bei der Implementation mit Symfony2* Performance* Entwicklung + Q&A, Testing, Deployment* Tools / Services* Painpoints, Erkenntnisse, Ausblick Zeig uns Deine besten Bilder.
  3. 3. Wer bin ich ? * Stephan Tijink * Head of Web Development * Beruflich Entwickler seit 1999 * Bei der fotocommunity seit 2005 * Ausbilder Fachinformatiker seit 2012 * Twitter/github: @stijink Zeig uns Deine besten Bilder.
  4. 4. Was ist die fotocommunity * Größte Community für Fotografie in Europa * Aktuell in fünf Sprachen verfügbar * Gegründet 2001 als Hobbyprojekt * Komerziell seit 2002 * Schwerpunkt auf Kommunikation Zeig uns Deine besten Bilder.
  5. 5. Zahlen * 1,5 Millionen Mitglieder * 15 Millionen Fotos * 100 Millionen Bildkommentare * 120 Millionen Seitenaufrufe / Monat * 172 GB Daten in MySQL Zeig uns Deine besten Bilder.
  6. 6. Das Technik Team * 2 Mitarbeiter Infrastruktur/Server * 7 Mitarbeiter Entwicklung * Scrum für Projektmanagement Zeig uns Deine besten Bilder.
  7. 7. Infrastruktur* 34 physikalische Server, 23 virtuelle Server* Hosting in Frankfurt* Ubuntu 12.04 LTS (Planziel 2013)* Installation via Kickstart* Provisionierung mit Chef* KVM für Virtualisierung* Amazon S3 + Amazon EC2 als Failover Bildauslieferung Zeig uns Deine besten Bilder.
  8. 8. Serversoftware * Nginx - SSL Terminierung, Rewrites * Varnish - Caching / ESI * HA Proxy - Loadbalancing * Apache / PHP (7 Application-Server) * MySQL (Master/Slave), SOLR (noch) * Redis, memcache (Sessions) Zeig uns Deine besten Bilder.
  9. 9. Arbeitsumgebungen * Jeder Entwickler hat eine eigene VM via Parallels * VM liegt auf dem Arbeitsgerät (Laptop) * Provisionierung der VM über Chef * Mac oder Linux als Entwicklergeräte * Diverse Testgeräte (Windows, Andriod, iOS) Zeig uns Deine besten Bilder.
  10. 10. Timeline EntwicklungBeginn Entwicklung Beginn vollständigerPHP 4, MySQL 3 Rewrite in Symfony 2 2010 heute Spaghetti-Code, Prozedual, PHP4-OOP, register_globals = on ... das volle Programm ;) 2001 2011 Neu-Komponenten 35 % Zugriffe * + API in Symfony 1 über Symfony2 * ca. 120 Millionen Seitenaufrufe Monat insgesamt. Etwa 42 Millionen über Symfony2 (exkl. ESI) Zeig uns Deine besten Bilder.
  11. 11. Überblick Webseite * Viele Komponenten noch im Legacy-Code * Wenige Komponenten mit Symfony1 umgesetzt * API für Dritte mit Symfony1 umgesetzt * Neue Komponenten werden in Symfony2 erstellt * 3rd Party: PHPBB 3, MediaWiki, Wordpress Zeig uns Deine besten Bilder.
  12. 12. Routing 1. Anlaufstelle Legacy-Code 2. Dump Symfony1 Routen in .htaccess 3. Symfony2 als CatchAll für übrige Requests Zeig uns Deine besten Bilder.
  13. 13. ESI als Baukasten * Header und Footer in Symfony2 implementiert * Legacy-Code, Symfony1 und 3rd Party nutzen Implementation aus Symfony2 via ESI-Includes * Invalidierung durch verschiedene Codebasen Zeig uns Deine besten Bilder.
  14. 14. Authentication * Legacy Code fungiert als „Master“ * Andere Codebasen + 3rd Party implementieren System aus dem Legacy Code (lesend, schreibend) Zeig uns Deine besten Bilder.
  15. 15. PerformanceLegacy Code - 50 ms PHP Symfony2 - 75 ms PHPOhne Grafik: Symfony 1 - 230 ms PHP Zeig uns Deine besten Bilder.
  16. 16. Prozess Entwicklung + Q&A * Pro Feature/Bugfix ein Branch in git * Pull-Request in github * Code-Review durch ein Teammitglied * Funktionstest durch ein Teammitglied * Merge in master durch ein Teammitglied Zeig uns Deine besten Bilder.
  17. 17. Testing* Gescheites Testen müssen wir noch lernen ;-)* PHPUnit als Testwerkzeug* Aktuell keine Auswertung Code Coverage* Keine Tests im Legacy Code* Etwa 50 Assertions in Symfony1* Aktuell etwa 200 Assertions in Symfony2 Zeig uns Deine besten Bilder.
  18. 18. Versionsverwaltung / Deployment * Legacy Code in Subversion * Symfony1 + Symfony2 in git (github.com) * Deployment mit phing * Build per Knopfdruck als .tar.gz (langsam) * Staging (Auf Live-Hardware / UserAgent-Weiche) * Geplant: Atlassian Bamboo für CI / Deployment Zeig uns Deine besten Bilder.
  19. 19. Weitere Tools und Services * Amazon S3 + Amazon EC2 * Jira - Issue und Sprintplanung * github.com - Hosting Source (häufiger Ausfälle) * NewRelic.com - Application Monitoring * Icinga für Server-Monitoring * Confluence - Dokumentation, Collaboration Zeig uns Deine besten Bilder.
  20. 20. Pain Points beim Umstieg * 10 Jahre Spaghetti-Code * Funktion bestehender Features nicht dokumentiert * Fehlendes Wissen moderner Programmieransätze * Einarbeitung in Symfony2-Struktur (Was wohin ?) * Doctrine2 (Dokumentation ausbaufähig) * Keine Constraints in Datenbank * Testen wollen, aber nicht wissen wie Zeig uns Deine besten Bilder.
  21. 21. Was wir gelernt haben * Einführung QA-Prozess * Dokumentieren, auch ausserhalb des Code * Mehr Knowledge-Transfer / Pair Programming * Programmieren nach Coding-Standards * Grundlagen Test-Driven-Development * Einarbeitung neuer Kollegen jetzt deutlich einfacher Zeig uns Deine besten Bilder.
  22. 22. Ausblick* Migration auf Symfony >= 2.2* Weiterführung Rewrite* Refactoring/Cleanup neuer Code, wo sinnvoll* ElasticSearch anstatt SOLR* Neues Bilder-Backends in Arbeit (Ceph + S3)* Ausbau Cloud-Fähigkeit (Tests mit OpenStack)* Atlassian Bamboo für CI / Deployment Zeig uns Deine besten Bilder.

×