SlideShare ist ein Scribd-Unternehmen logo
1 von 22
Vorstellung / Use Case fotocommunity
            Stand: März 2013




                      Text
                       Text
                         Text
                           Text




                                  Zeig uns Deine besten Bilder.
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.
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.
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.
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.
Das Technik Team

       * 2 Mitarbeiter Infrastruktur/Server

       * 7 Mitarbeiter Entwicklung

       * Scrum für Projektmanagement




                          Zeig uns Deine besten Bilder.
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.
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.
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.
Timeline Entwicklung

Beginn Entwicklung                                                                                                    Beginn vollständiger
PHP 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.
Ü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.
Routing


  1. Anlaufstelle Legacy-Code

  2. Dump Symfony1 Routen in .htaccess

  3. Symfony2 als CatchAll für übrige Requests




                         Zeig uns Deine besten Bilder.
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.
Authentication


   * Legacy Code fungiert als „Master“

   * Andere Codebasen + 3rd Party implementieren

    System aus dem Legacy Code (lesend, schreibend)




                               Zeig uns Deine besten Bilder.
Performance
Legacy Code - 50 ms PHP                     Symfony2 - 75 ms PHP




Ohne Grafik: Symfony 1 - 230 ms PHP



                                                        Zeig uns Deine besten Bilder.
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.
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.
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.
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.
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.
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.
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.

Weitere ähnliche Inhalte

Was ist angesagt?

Stephan Kaps – IT-Tage 2015 – Flyway vs. LiquiBase – Battle der Datenbankmigr...
Stephan Kaps – IT-Tage 2015 – Flyway vs. LiquiBase – Battle der Datenbankmigr...Stephan Kaps – IT-Tage 2015 – Flyway vs. LiquiBase – Battle der Datenbankmigr...
Stephan Kaps – IT-Tage 2015 – Flyway vs. LiquiBase – Battle der Datenbankmigr...Informatik Aktuell
 
Composer und TYPO3
Composer und TYPO3Composer und TYPO3
Composer und TYPO3Peter Kraume
 
fn project serverless computing
fn project serverless computingfn project serverless computing
fn project serverless computingWolfgang Weigend
 
Migration vom ZF1 zum ZF2 von einfach bis fies (IPC Spring 2013, Berlin)
Migration vom ZF1 zum ZF2 von einfach bis fies (IPC Spring 2013, Berlin)Migration vom ZF1 zum ZF2 von einfach bis fies (IPC Spring 2013, Berlin)
Migration vom ZF1 zum ZF2 von einfach bis fies (IPC Spring 2013, Berlin)Ralf Eggert
 
Dnug35 ak-dev.071111-cookbook
Dnug35 ak-dev.071111-cookbookDnug35 ak-dev.071111-cookbook
Dnug35 ak-dev.071111-cookbookUlrich Krause
 
Continuous Testing: Integration- und UI-Testing mit OpenShift-Build-Pipelines
Continuous Testing: Integration- und UI-Testing mit OpenShift-Build-PipelinesContinuous Testing: Integration- und UI-Testing mit OpenShift-Build-Pipelines
Continuous Testing: Integration- und UI-Testing mit OpenShift-Build-PipelinesTobias Schneck
 
Source2Image - Vom Code zum fertigen Image mit einer Build-Chain basierend au...
Source2Image - Vom Code zum fertigen Image mit einer Build-Chain basierend au...Source2Image - Vom Code zum fertigen Image mit einer Build-Chain basierend au...
Source2Image - Vom Code zum fertigen Image mit einer Build-Chain basierend au...Matthias Fauter
 
Dnug35 ak-dev.071111-basic
Dnug35 ak-dev.071111-basicDnug35 ak-dev.071111-basic
Dnug35 ak-dev.071111-basicUlrich Krause
 
IBM Lotus Notes - From PLATO to the Leading Groupware Platform
IBM Lotus Notes - From PLATO to the Leading Groupware PlatformIBM Lotus Notes - From PLATO to the Leading Groupware Platform
IBM Lotus Notes - From PLATO to the Leading Groupware PlatformUlrich Krause
 
C API for Lotus Notes & Domino
C API for Lotus Notes & DominoC API for Lotus Notes & Domino
C API for Lotus Notes & DominoUlrich Krause
 
Tipps und Tricks im Umgang mit Docker
Tipps und Tricks im Umgang mit DockerTipps und Tricks im Umgang mit Docker
Tipps und Tricks im Umgang mit DockerNicholas Dille
 
AdminCamp 14 - IBM Connections Deep Dive
AdminCamp 14 - IBM Connections Deep DiveAdminCamp 14 - IBM Connections Deep Dive
AdminCamp 14 - IBM Connections Deep DiveKlaus Bild
 
OSDC 2013 | Continuous Integration in data centers by Michael Prokop
OSDC 2013 | Continuous Integration in data centers by Michael ProkopOSDC 2013 | Continuous Integration in data centers by Michael Prokop
OSDC 2013 | Continuous Integration in data centers by Michael ProkopNETWAYS
 
FMK2015: Einführung in Codeversionierungssysteme by Thomas Hirt
FMK2015: Einführung in Codeversionierungssysteme by Thomas HirtFMK2015: Einführung in Codeversionierungssysteme by Thomas Hirt
FMK2015: Einführung in Codeversionierungssysteme by Thomas HirtVerein FM Konferenz
 
OpenShift-Build-Pipelines: Build ► Test ► Run!
OpenShift-Build-Pipelines: Build ► Test ► Run!OpenShift-Build-Pipelines: Build ► Test ► Run!
OpenShift-Build-Pipelines: Build ► Test ► Run!Tobias Schneck
 
C++ Dependency Management 2.0
C++ Dependency Management 2.0C++ Dependency Management 2.0
C++ Dependency Management 2.0Patrick Charrier
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsQAware GmbH
 
The Best Things in Life Are Free – Wie Sie Ihre IBM ConnecEons Umgebung koste...
The Best Things in Life Are Free – Wie Sie Ihre IBM ConnecEons Umgebung koste...The Best Things in Life Are Free – Wie Sie Ihre IBM ConnecEons Umgebung koste...
The Best Things in Life Are Free – Wie Sie Ihre IBM ConnecEons Umgebung koste...Klaus Bild
 

Was ist angesagt? (20)

Stephan Kaps – IT-Tage 2015 – Flyway vs. LiquiBase – Battle der Datenbankmigr...
Stephan Kaps – IT-Tage 2015 – Flyway vs. LiquiBase – Battle der Datenbankmigr...Stephan Kaps – IT-Tage 2015 – Flyway vs. LiquiBase – Battle der Datenbankmigr...
Stephan Kaps – IT-Tage 2015 – Flyway vs. LiquiBase – Battle der Datenbankmigr...
 
Composer und TYPO3
Composer und TYPO3Composer und TYPO3
Composer und TYPO3
 
fn project serverless computing
fn project serverless computingfn project serverless computing
fn project serverless computing
 
Migration vom ZF1 zum ZF2 von einfach bis fies (IPC Spring 2013, Berlin)
Migration vom ZF1 zum ZF2 von einfach bis fies (IPC Spring 2013, Berlin)Migration vom ZF1 zum ZF2 von einfach bis fies (IPC Spring 2013, Berlin)
Migration vom ZF1 zum ZF2 von einfach bis fies (IPC Spring 2013, Berlin)
 
Dnug35 ak-dev.071111-cookbook
Dnug35 ak-dev.071111-cookbookDnug35 ak-dev.071111-cookbook
Dnug35 ak-dev.071111-cookbook
 
Continuous Testing: Integration- und UI-Testing mit OpenShift-Build-Pipelines
Continuous Testing: Integration- und UI-Testing mit OpenShift-Build-PipelinesContinuous Testing: Integration- und UI-Testing mit OpenShift-Build-Pipelines
Continuous Testing: Integration- und UI-Testing mit OpenShift-Build-Pipelines
 
Source2Image - Vom Code zum fertigen Image mit einer Build-Chain basierend au...
Source2Image - Vom Code zum fertigen Image mit einer Build-Chain basierend au...Source2Image - Vom Code zum fertigen Image mit einer Build-Chain basierend au...
Source2Image - Vom Code zum fertigen Image mit einer Build-Chain basierend au...
 
Dnug35 ak-dev.071111-basic
Dnug35 ak-dev.071111-basicDnug35 ak-dev.071111-basic
Dnug35 ak-dev.071111-basic
 
IBM Lotus Notes - From PLATO to the Leading Groupware Platform
IBM Lotus Notes - From PLATO to the Leading Groupware PlatformIBM Lotus Notes - From PLATO to the Leading Groupware Platform
IBM Lotus Notes - From PLATO to the Leading Groupware Platform
 
C API for Lotus Notes & Domino
C API for Lotus Notes & DominoC API for Lotus Notes & Domino
C API for Lotus Notes & Domino
 
Tipps und Tricks im Umgang mit Docker
Tipps und Tricks im Umgang mit DockerTipps und Tricks im Umgang mit Docker
Tipps und Tricks im Umgang mit Docker
 
AdminCamp 14 - IBM Connections Deep Dive
AdminCamp 14 - IBM Connections Deep DiveAdminCamp 14 - IBM Connections Deep Dive
AdminCamp 14 - IBM Connections Deep Dive
 
OSDC 2013 | Continuous Integration in data centers by Michael Prokop
OSDC 2013 | Continuous Integration in data centers by Michael ProkopOSDC 2013 | Continuous Integration in data centers by Michael Prokop
OSDC 2013 | Continuous Integration in data centers by Michael Prokop
 
Was ist Docker ?
Was ist Docker ?Was ist Docker ?
Was ist Docker ?
 
FMK2015: Einführung in Codeversionierungssysteme by Thomas Hirt
FMK2015: Einführung in Codeversionierungssysteme by Thomas HirtFMK2015: Einführung in Codeversionierungssysteme by Thomas Hirt
FMK2015: Einführung in Codeversionierungssysteme by Thomas Hirt
 
OpenShift-Build-Pipelines: Build ► Test ► Run!
OpenShift-Build-Pipelines: Build ► Test ► Run!OpenShift-Build-Pipelines: Build ► Test ► Run!
OpenShift-Build-Pipelines: Build ► Test ► Run!
 
C++ Dependency Management 2.0
C++ Dependency Management 2.0C++ Dependency Management 2.0
C++ Dependency Management 2.0
 
Deployment 2.0
Deployment 2.0Deployment 2.0
Deployment 2.0
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-Patterns
 
The Best Things in Life Are Free – Wie Sie Ihre IBM ConnecEons Umgebung koste...
The Best Things in Life Are Free – Wie Sie Ihre IBM ConnecEons Umgebung koste...The Best Things in Life Are Free – Wie Sie Ihre IBM ConnecEons Umgebung koste...
The Best Things in Life Are Free – Wie Sie Ihre IBM ConnecEons Umgebung koste...
 

Andere mochten auch

Marcos reyes period 6
Marcos reyes period 6Marcos reyes period 6
Marcos reyes period 6Ernie97
 
Javni nastup i prezentacijske veštine
Javni nastup i prezentacijske veštineJavni nastup i prezentacijske veštine
Javni nastup i prezentacijske veštineMilka Negrović
 
Dominik Blitek profile_
Dominik Blitek profile_Dominik Blitek profile_
Dominik Blitek profile_Dominik Blitek
 
Halloween by Eddie (all you need to know)
 Halloween by Eddie (all you need to know) Halloween by Eddie (all you need to know)
Halloween by Eddie (all you need to know)Bledar Isaku
 
Domingo García 4A
Domingo García 4ADomingo García 4A
Domingo García 4ADomingoG10
 
Am j hosp palliat care 2004-davis-137-42
Am j hosp palliat care 2004-davis-137-42Am j hosp palliat care 2004-davis-137-42
Am j hosp palliat care 2004-davis-137-42Esposito Evelyn
 
Trening - Liderstvo - Kako biti uspesan lider? Kako biti uspesan menadzer? Ka...
Trening - Liderstvo - Kako biti uspesan lider? Kako biti uspesan menadzer? Ka...Trening - Liderstvo - Kako biti uspesan lider? Kako biti uspesan menadzer? Ka...
Trening - Liderstvo - Kako biti uspesan lider? Kako biti uspesan menadzer? Ka...Marko Burazor
 
Palestra Una - Redes Sociais para o curso de Gestão Comercial
Palestra Una - Redes Sociais para o curso de Gestão ComercialPalestra Una - Redes Sociais para o curso de Gestão Comercial
Palestra Una - Redes Sociais para o curso de Gestão ComercialRodrigo Otávio
 
5xBHSM - Marketing digital para pequena e médias empresas
5xBHSM - Marketing digital para pequena e médias empresas5xBHSM - Marketing digital para pequena e médias empresas
5xBHSM - Marketing digital para pequena e médias empresasZoom Comunicação
 
1. i 2. cas t1 bezbednost
1. i 2. cas t1 bezbednost1. i 2. cas t1 bezbednost
1. i 2. cas t1 bezbednostigoriv
 
MCO 2011 - Slide 12 - J. Gligorov - Spotlight session - Triple negative breas...
MCO 2011 - Slide 12 - J. Gligorov - Spotlight session - Triple negative breas...MCO 2011 - Slide 12 - J. Gligorov - Spotlight session - Triple negative breas...
MCO 2011 - Slide 12 - J. Gligorov - Spotlight session - Triple negative breas...European School of Oncology
 
MapR M7: Providing an enterprise quality Apache HBase API
MapR M7: Providing an enterprise quality Apache HBase APIMapR M7: Providing an enterprise quality Apache HBase API
MapR M7: Providing an enterprise quality Apache HBase APImcsrivas
 
3rd kingdom cyber security forum it gov in saudi arabia- aqel
3rd kingdom cyber security forum   it gov in saudi arabia- aqel3rd kingdom cyber security forum   it gov in saudi arabia- aqel
3rd kingdom cyber security forum it gov in saudi arabia- aqelaqel aqel
 
Nenasilna komunikacija 2
Nenasilna komunikacija 2Nenasilna komunikacija 2
Nenasilna komunikacija 2Svetlana Čeko
 
Social Media - De tendência a essência
Social Media - De tendência a essênciaSocial Media - De tendência a essência
Social Media - De tendência a essênciaDanilo Fattori Fajani
 
Gestão de compras - fornecedores, concorrência e contratação
Gestão de compras - fornecedores, concorrência e contrataçãoGestão de compras - fornecedores, concorrência e contratação
Gestão de compras - fornecedores, concorrência e contrataçãoAntonio Marcos Montai Messias
 

Andere mochten auch (20)

Marcos reyes period 6
Marcos reyes period 6Marcos reyes period 6
Marcos reyes period 6
 
Javni nastup i prezentacijske veštine
Javni nastup i prezentacijske veštineJavni nastup i prezentacijske veštine
Javni nastup i prezentacijske veštine
 
Zakletve
ZakletveZakletve
Zakletve
 
Dominik Blitek profile_
Dominik Blitek profile_Dominik Blitek profile_
Dominik Blitek profile_
 
Halloween by Eddie (all you need to know)
 Halloween by Eddie (all you need to know) Halloween by Eddie (all you need to know)
Halloween by Eddie (all you need to know)
 
IPMA-certificate
IPMA-certificateIPMA-certificate
IPMA-certificate
 
Owasp Chapter Belo Horizonte
Owasp Chapter Belo HorizonteOwasp Chapter Belo Horizonte
Owasp Chapter Belo Horizonte
 
Domingo García 4A
Domingo García 4ADomingo García 4A
Domingo García 4A
 
Am j hosp palliat care 2004-davis-137-42
Am j hosp palliat care 2004-davis-137-42Am j hosp palliat care 2004-davis-137-42
Am j hosp palliat care 2004-davis-137-42
 
Trening - Liderstvo - Kako biti uspesan lider? Kako biti uspesan menadzer? Ka...
Trening - Liderstvo - Kako biti uspesan lider? Kako biti uspesan menadzer? Ka...Trening - Liderstvo - Kako biti uspesan lider? Kako biti uspesan menadzer? Ka...
Trening - Liderstvo - Kako biti uspesan lider? Kako biti uspesan menadzer? Ka...
 
Palestra Una - Redes Sociais para o curso de Gestão Comercial
Palestra Una - Redes Sociais para o curso de Gestão ComercialPalestra Una - Redes Sociais para o curso de Gestão Comercial
Palestra Una - Redes Sociais para o curso de Gestão Comercial
 
Digitalni multimetri
Digitalni multimetriDigitalni multimetri
Digitalni multimetri
 
5xBHSM - Marketing digital para pequena e médias empresas
5xBHSM - Marketing digital para pequena e médias empresas5xBHSM - Marketing digital para pequena e médias empresas
5xBHSM - Marketing digital para pequena e médias empresas
 
1. i 2. cas t1 bezbednost
1. i 2. cas t1 bezbednost1. i 2. cas t1 bezbednost
1. i 2. cas t1 bezbednost
 
MCO 2011 - Slide 12 - J. Gligorov - Spotlight session - Triple negative breas...
MCO 2011 - Slide 12 - J. Gligorov - Spotlight session - Triple negative breas...MCO 2011 - Slide 12 - J. Gligorov - Spotlight session - Triple negative breas...
MCO 2011 - Slide 12 - J. Gligorov - Spotlight session - Triple negative breas...
 
MapR M7: Providing an enterprise quality Apache HBase API
MapR M7: Providing an enterprise quality Apache HBase APIMapR M7: Providing an enterprise quality Apache HBase API
MapR M7: Providing an enterprise quality Apache HBase API
 
3rd kingdom cyber security forum it gov in saudi arabia- aqel
3rd kingdom cyber security forum   it gov in saudi arabia- aqel3rd kingdom cyber security forum   it gov in saudi arabia- aqel
3rd kingdom cyber security forum it gov in saudi arabia- aqel
 
Nenasilna komunikacija 2
Nenasilna komunikacija 2Nenasilna komunikacija 2
Nenasilna komunikacija 2
 
Social Media - De tendência a essência
Social Media - De tendência a essênciaSocial Media - De tendência a essência
Social Media - De tendência a essência
 
Gestão de compras - fornecedores, concorrência e contratação
Gestão de compras - fornecedores, concorrência e contrataçãoGestão de compras - fornecedores, concorrência e contratação
Gestão de compras - fornecedores, concorrência e contratação
 

Ähnlich wie Entwicklungsprozess und Arbeit mit Symfony2 in der fotocommunity GmbH

Ionic 2 - Hybridapps auf Steroiden
Ionic 2 - Hybridapps auf SteroidenIonic 2 - Hybridapps auf Steroiden
Ionic 2 - Hybridapps auf SteroidenHendrik Lösch
 
C / C++ Api for Beginners
C / C++ Api for BeginnersC / C++ Api for Beginners
C / C++ Api for BeginnersUlrich Krause
 
Dev ops testautomatisierer bei Technosoft
Dev ops testautomatisierer bei TechnosoftDev ops testautomatisierer bei Technosoft
Dev ops testautomatisierer bei TechnosoftBart Zwager
 
C/ C++ for Notes & Domino Developers
C/ C++ for Notes & Domino DevelopersC/ C++ for Notes & Domino Developers
C/ C++ for Notes & Domino DevelopersUlrich Krause
 
elemente websolutions - Zusammenfassung T3DD09
elemente websolutions - Zusammenfassung T3DD09elemente websolutions - Zusammenfassung T3DD09
elemente websolutions - Zusammenfassung T3DD09elemente websolutions
 
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET CoreHands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET CoreGregor Biswanger
 
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturContinuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturQAware GmbH
 
Fachreferat: Visual Studio 2012, Windows 8 und .NET 4.5
Fachreferat: Visual Studio 2012, Windows 8 und .NET 4.5Fachreferat: Visual Studio 2012, Windows 8 und .NET 4.5
Fachreferat: Visual Studio 2012, Windows 8 und .NET 4.5Digicomp Academy AG
 
Grundlagen puppet
Grundlagen puppetGrundlagen puppet
Grundlagen puppetinovex GmbH
 
Oracle oem 12c_plugin_development-doag-konferenz_11_2014_print_gunther_pipperr
Oracle oem 12c_plugin_development-doag-konferenz_11_2014_print_gunther_pipperrOracle oem 12c_plugin_development-doag-konferenz_11_2014_print_gunther_pipperr
Oracle oem 12c_plugin_development-doag-konferenz_11_2014_print_gunther_pipperrGunther Pippèrr
 
Maemo 5 Developer Workshop @ Metalab
Maemo 5 Developer Workshop @ MetalabMaemo 5 Developer Workshop @ Metalab
Maemo 5 Developer Workshop @ Metalabthp4
 
Codewiederverwendung in Xamarin-Apps maximieren
Codewiederverwendung in Xamarin-Apps maximierenCodewiederverwendung in Xamarin-Apps maximieren
Codewiederverwendung in Xamarin-Apps maximierenAndré Krämer
 
Mehr Sicherheit durch Automatisierung
Mehr Sicherheit durch AutomatisierungMehr Sicherheit durch Automatisierung
Mehr Sicherheit durch AutomatisierungOPEN KNOWLEDGE GmbH
 
Augmented Reality Workshop
Augmented Reality WorkshopAugmented Reality Workshop
Augmented Reality Workshopargency
 
Webservice API - Webportale mit Force.com verbinden
Webservice API - Webportale mit Force.com verbindenWebservice API - Webportale mit Force.com verbinden
Webservice API - Webportale mit Force.com verbindenAptly GmbH
 
.NET Core, .NET Standard & ASP.NET Core - Eine Übersicht
.NET Core, .NET Standard & ASP.NET Core - Eine Übersicht.NET Core, .NET Standard & ASP.NET Core - Eine Übersicht
.NET Core, .NET Standard & ASP.NET Core - Eine ÜbersichtJürgen Gutsch
 
HTML5 und node.js Grundlagen
HTML5 und node.js GrundlagenHTML5 und node.js Grundlagen
HTML5 und node.js GrundlagenMayflower GmbH
 
German: Softwareprodukte aus einem Source Code mit Javascript
German: Softwareprodukte aus einem Source Code mit JavascriptGerman: Softwareprodukte aus einem Source Code mit Javascript
German: Softwareprodukte aus einem Source Code mit JavascriptRalf Schwoebel
 
Vagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und ArchitektenVagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und ArchitektenOPITZ CONSULTING Deutschland
 

Ähnlich wie Entwicklungsprozess und Arbeit mit Symfony2 in der fotocommunity GmbH (20)

Ionic 2 - Hybridapps auf Steroiden
Ionic 2 - Hybridapps auf SteroidenIonic 2 - Hybridapps auf Steroiden
Ionic 2 - Hybridapps auf Steroiden
 
C / C++ Api for Beginners
C / C++ Api for BeginnersC / C++ Api for Beginners
C / C++ Api for Beginners
 
Dev ops testautomatisierer bei Technosoft
Dev ops testautomatisierer bei TechnosoftDev ops testautomatisierer bei Technosoft
Dev ops testautomatisierer bei Technosoft
 
C/ C++ for Notes & Domino Developers
C/ C++ for Notes & Domino DevelopersC/ C++ for Notes & Domino Developers
C/ C++ for Notes & Domino Developers
 
elemente websolutions - Zusammenfassung T3DD09
elemente websolutions - Zusammenfassung T3DD09elemente websolutions - Zusammenfassung T3DD09
elemente websolutions - Zusammenfassung T3DD09
 
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET CoreHands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
 
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturContinuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
 
Fachreferat: Visual Studio 2012, Windows 8 und .NET 4.5
Fachreferat: Visual Studio 2012, Windows 8 und .NET 4.5Fachreferat: Visual Studio 2012, Windows 8 und .NET 4.5
Fachreferat: Visual Studio 2012, Windows 8 und .NET 4.5
 
Grundlagen puppet
Grundlagen puppetGrundlagen puppet
Grundlagen puppet
 
Oracle oem 12c_plugin_development-doag-konferenz_11_2014_print_gunther_pipperr
Oracle oem 12c_plugin_development-doag-konferenz_11_2014_print_gunther_pipperrOracle oem 12c_plugin_development-doag-konferenz_11_2014_print_gunther_pipperr
Oracle oem 12c_plugin_development-doag-konferenz_11_2014_print_gunther_pipperr
 
Maemo 5 Developer Workshop @ Metalab
Maemo 5 Developer Workshop @ MetalabMaemo 5 Developer Workshop @ Metalab
Maemo 5 Developer Workshop @ Metalab
 
Codewiederverwendung in Xamarin-Apps maximieren
Codewiederverwendung in Xamarin-Apps maximierenCodewiederverwendung in Xamarin-Apps maximieren
Codewiederverwendung in Xamarin-Apps maximieren
 
Mehr Sicherheit durch Automatisierung
Mehr Sicherheit durch AutomatisierungMehr Sicherheit durch Automatisierung
Mehr Sicherheit durch Automatisierung
 
Augmented Reality Workshop
Augmented Reality WorkshopAugmented Reality Workshop
Augmented Reality Workshop
 
Webservice API - Webportale mit Force.com verbinden
Webservice API - Webportale mit Force.com verbindenWebservice API - Webportale mit Force.com verbinden
Webservice API - Webportale mit Force.com verbinden
 
Ec2009 Templates
Ec2009 TemplatesEc2009 Templates
Ec2009 Templates
 
.NET Core, .NET Standard & ASP.NET Core - Eine Übersicht
.NET Core, .NET Standard & ASP.NET Core - Eine Übersicht.NET Core, .NET Standard & ASP.NET Core - Eine Übersicht
.NET Core, .NET Standard & ASP.NET Core - Eine Übersicht
 
HTML5 und node.js Grundlagen
HTML5 und node.js GrundlagenHTML5 und node.js Grundlagen
HTML5 und node.js Grundlagen
 
German: Softwareprodukte aus einem Source Code mit Javascript
German: Softwareprodukte aus einem Source Code mit JavascriptGerman: Softwareprodukte aus einem Source Code mit Javascript
German: Softwareprodukte aus einem Source Code mit Javascript
 
Vagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und ArchitektenVagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und Architekten
 

Entwicklungsprozess und Arbeit mit Symfony2 in der fotocommunity GmbH

  • 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 Entwicklung Beginn Entwicklung Beginn vollständiger PHP 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. Performance Legacy Code - 50 ms PHP Symfony2 - 75 ms PHP Ohne 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.