• Gefällt mir
  • Speichern
Entwicklungsprozess und Arbeit mit Symfony2 in der fotocommunity GmbH
Nächste SlideShare
Wird geladen in ...5
×

Entwicklungsprozess und Arbeit mit Symfony2 in der fotocommunity GmbH

  • 897 Views
Hochgeladen am

* Vorstellung Entwicklungsprozess fotocommunity GmbH ...

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

Mehr in: Technologie
  • Full Name Full Name Comment goes here.
    Sind Sie sicher, dass Sie...
    Ihre Nachricht erscheint hier
    Hinterlassen Sie den ersten Kommentar
Keine Downloads

Views

Gesamtviews
897
Bei Slideshare
0
Aus Einbettungen
0
Anzahl an Einbettungen
8

Aktionen

Geteilt
Downloads
0
Kommentare
0
Gefällt mir
1

Einbettungen 0

No embeds

Inhalte melden

Als unangemessen gemeldet Als unangemessen melden
Als unangemessen melden

Wählen Sie Ihren Grund, warum Sie diese Präsentation als unangemessen melden.

Löschen
    No notes for slide

Transcript

  • 1. Vorstellung / Use Case fotocommunity Stand: März 2013 Text Text Text Text Zeig uns Deine besten Bilder.
  • 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. 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. 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. 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. Das Technik Team * 2 Mitarbeiter Infrastruktur/Server * 7 Mitarbeiter Entwicklung * Scrum für Projektmanagement Zeig uns Deine besten Bilder.
  • 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. 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. 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. 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. Ü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. 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. 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. Authentication * Legacy Code fungiert als „Master“ * Andere Codebasen + 3rd Party implementieren System aus dem Legacy Code (lesend, schreibend) Zeig uns Deine besten Bilder.
  • 15. PerformanceLegacy Code - 50 ms PHP Symfony2 - 75 ms PHPOhne Grafik: Symfony 1 - 230 ms PHP Zeig uns Deine besten Bilder.
  • 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. 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. 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. 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. 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. 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. 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.