SlideShare uma empresa Scribd logo
1 de 42
Baixar para ler offline
An Infrastructure for Team Based PHP
Development
Gaylord Aulke
Director Professional Services DACH
Zend Technologies
Agenda

 •   Why am i talking here? (About the Speaker)
 •   Motivation / The early days
 •   About Processes
 •   About Infrastructure
 •   About Tools




                                                  |
About me

 • Gaylord Aulke, 38, geek and sometimes
     businessman
 •   Did some (serious) Assembler Coding in the past
     (40kb Machinecode)
 •   Commercial Projects in Pascal (yes i am THAT old)
 •   4GL Business Application Coding (i was young
     and needed the money)
 •   Started my Web-Life with Perl / CGI
 •   Early Adoption of Java and J2EE (i love it)
 •   Started using PHP in 1997 for very small projects
     only

                                                         |
Motivation: The good old days


                                             Control/Start




                                    PM


                                              Deploy



                      Change                                  Server
                      Test         SAMBA
                                    Share


          Developer
                                            Test
                               Apache




                                                         QM




                                                                       |
Handcrafted approach
  • Everyone developed on a common Network share
  • Apache had its Docroot there
  • PROs:
     Very simple to set up
     FREQUENT integration of all changes
     Easy to learn, no errors to make
  • CONs:
     Editing a central file may render the application untestable for
      everyone
     Conflict resolution must be done manually
     Version Mgmt the hard way (.old, .old2, .veryold, .ancient)
     Copying code base for concurrent codelines


                                                                         |
Motivation
  •   We have serveral software projects
  •   Some are under active development
  •   Some in production and need occasional fixes
  •   We have a limited number of Developers
  •   Everybody needs to work on different projects
  •   Context switches are normal and need to be
      efficient
  •   We need to keep a high quality level
  •   We want to scale the team and the customer base




                                                        |
About Processes

  •   Development
  •   Integration
  •   QS
  •   Deployment
  •   Maintenance




                    |
Processes: Development

  • Every developer should be able to change and
      extend whatever he wants without restrictions
  •   She should be able to test her changes very
      frequently in a realistic context
  •   Changes of others must not influence the tests of
      her new code
  •   After successfully testing the changes for
      themselves they need to be integrated with the
      changes of everybody else




                                                          |
Processes: Integration

  • Usually, code runs in a certain environment in
      production
  •   Developer needs a development Environment that
      is as close as possible to the production
      environment
  •   Integration needs to be done as early as possible
      in the process
  •   The „real“ integration is often only possible at the
      customer‘s site. A simple way to do this without
      risk is needed



                                                             |
Processes: QS

 • „Quality“ is a process issue
 • Do reasonable tests already at development time
      (test data, environment)
 • Integrate all code on a continuous integration
     Server
 •   Test ALL functionality of the application frequently
 •   Before a release do another test / approval
     process
 •   Define measures and threshold for acceptable
     quality in all process steps



                                                            |
Processes: Deployment

  • Automate deployment
  • Record all deployments made
  • If you have serveral customers: Manage the
    Deployment information centrally




                                                 |
Processes: Maintenance

  • Manage Defects, Feature Requests, open issues
      and Requirements
  •   Define a process for quick fixes/changes
  •   Define a Release Process that coordinates Fixes
      and new Releases




                                                        |
Local Development

                                                            Scp/zip/rsync/ftp


                                           ProjectConfig
                                                DB
                                                                                       Customer
                                                                                       Servers


                                                           Packager

                                                                                                         Deploy
                                                                                                              !


             change             Dev. DB.




                        test
                               Dev.Machine

                                                                                QS Machine
                                                                                                  test
                                                                                (all projects)
           Developers           Checkoutdelete
                                       /




        Update
             /commitrevert
                   /                                        Checkoutdelete
                                                                   /
                                SVN Repository


                                                                                                     QM Team




                                                                                                                  |
Local development

  • Every developer runs his own copy of the
      application
  •   A SCM (Source Code Mgmt) manages all the
      differerent changes and revisions of the Software
       Lorna will talk about SVN in a few minutes
  • Changes are made to the local copy, local Apache
      has its docroot there
  •   Developer tests locally until his component works
  •   Then „check in“ to the repository is done



                                                          |
About Databases
 • A common database for all developers usually
     does the job well because:
      Changes are often backwards compatible (new fields, new
       tables)
      Everybody can use shared test data
      If the DB is corrupted, it can be re-built from scripts
 • Have a separate DB with „authentic“ test data for
     QS
 •   Generate temporary DBs during runtime of
     automated tests (we create and drop these for
     every single test)
 •   If a separate DB is needed, you can always copy…


                                                                 |
Issues with local Development

  • Everyone needs to build a local environment with
      all Extensions / PHP Versions etc.
  •   Some environment details might only be available
      at a central location in one instance (an SAP
      system for example)
  •   No Control about „the right environment“




                                                         |
How we cope with it

  • Define a common environment for all applications
       Framework
       Set of extensions to use
  • Define a common local apache and path setup
  • Put all environment information in config files
  • Manage local config files and Vhosts for this setup
      in the SCM
  •   Build the application for portability (Windows
      Development Systems, Linux Servers)




                                                          |
More Sophisticated: Development Sandboxes
                                                                        Scp/zip/rsync/ftp


                                            ProjectConfig
                                                 DB
                                                                                                     Customer
                                                                                                     Servers

                  Deploy
                       !
                                                                      Packager

                                                                                                                       Deploy
                                                                                                                            !


                                      Priv. Workspace
                    change
                                         Priv. Workspace
                                                    Priv.
                                                 Workspace

                                                                                       Shared Workspace



                             test       Priv. VHost
                                          Priv. VHost
                                                            Checkoutdelete
                                                                   /
                                             Priv. VHost
                                                                                              QS VHost          test


                Developers
                                                                             Checkoutdelete
                                                                                    /
                                          Management
                     Select project
                                           Application
                                                                                    Select project

                                             checkout                                                              QM Team
       Update/commitrevert
                   /




                                         SVN Repository




                                                                                                                                |
Development Sandboxes: File Structure
                                             Dyn . Data




                                 Project#1     Core


                                             Custom
                    Testserver   Project#2                     SymLink
                                             Docroot

                                 Project#3



          BaseDir                             Slot#1      Dyn. Data

                    Sandboxe       Björn
                       s
                                              Slot#2        Core

                                    Eric

                                                          Custom
                                              Slot#3
                                  Thomas


                                                          Docroot




                                                                         |
Development Sandboxes

 • One Development Server
 • All Environment set up there
 • Everyone has his own area there where he can
     Checkout/Test
 •   Every Developer has a number of „Project Slots“
     that he can fill with any project (- revision)
 •   Slots are re-used, can be freed after checkin




                                                       |
Development Sandboxes

 • PROs:
    Single Point of administration
    Complete environment can be set up
    A common set of tools can be used
 • CONs:
    Quite complex in multi-project environments
    Development / SCM checkout on network share
    Single Point of Failure




                                                   |
Middelway: VMWare

 • Build VMWare Image for each project with all
     dependencies
 •   Use hgfs (host file system access) to access local
     code base (outside VM)
 •   Host OS can mount shares in the network for
     shared files and test data
 •   VM can use external or internal DB
 •   Running a project is as easy as copy a VM, start it




                                                           |
Packaging and Branching



 Live Branch                          Change #2                       Change #4                                                 Change #6




                                                  Merge                              Merge




 Development                   Change #1                      Change #3                       Change #5




        Create live branch when development               Each change in the live            Deploy new development Version
        Version has been installed onthe live             Branch is immediately              to Customer Server Old Live Branch
                                                                                                                .
        Server.                                           Merged to the dev branch
                                                                           .                 is deleted and then Created new from
                                                                                             development branch   .




                                                                                                                                            |
Packaging

 • Always have the current version that is installed
     on the customer‘s site in your SCM
 •   Always follow the same process steps:
      Change locally on your system
      Test changes
      Run automatic Deploy
 • To do so,
      Manage configuration on customer‘s site in some tool
      Build an infrastructure for deployment to different sites with
       different transport mechanisms



                                                                        |
Tools

  •   IDE
  •   SCM
  •   Automated Testing / Metrics / Code Coverage
  •   Code-Analyzing
  •   Continuous Integration
  •   Packaging / Deployment
  •   Bug Tracking / Project management




                                                    |
IDE: Zend Studio




                   |
Zend Platform




                |
SCM

 • RCS works cool for config files
 • CVS can already manage development projects
     with many users
 •   SVN is „the better CVS“ (which is already a
     question of believe for some)
 •   GIT is extremely cool
 •   Commercial tools are very different in focus and
     functionality/quality
 •   We bought 80 Perforce licenses during New
     Economy times (600 $ per seat) and didn‘t regret
     it.

                                                        |
Tesing: PHPUnit




                  |
Selenium IDE




               |
PHP Code Sniffer




                   |
Static Code Analyzer / Metrics

  • „Project Mess Detection“
         PMD scans source code and looks for potential problems like:
         Possible bugs
         Dead code - unused local variables, parameters and private methods
         Suboptimal code
         Overcomplicated expressions - unnecessary if statements, for loops etc.
         Duplicate code - copied/pasted code means copied/pasted bugs

  •   Coding Style Check
  •   Static Security analysis (www.armorize.com)
  •   Static Code Quality analysis (Zend Code Analyzer)
  •   …




                                                                                    |
Continuous Integration: Cruise Control




                                         |
Packaging/Deployment
 • Build-Tools:
     ANT, PHING, RAKE, Shell Scripts
 • They can generate Packages (ZIP or RPM)
 • Deployment to Staging Server
 • Then local deployment to Cluster

 • Integrated Solution (Ruby): Capistrano (
   http://capify.org/)
     Deploy, Rollback
     Remote Execution via SSH
 • Puppet (http://reductivelabs.com/trac/puppet/)


                                                    |
Packaging: What we do

  • Intranet-App that has a „deploy“ button for each
      Project
  •   SCM Sync to Test-Server first (test-deploy-Button)
  •   Run tests there
  •   Then deploy to customer‘s site (deploy-life Button)
  •   Sync to test server is done via SCM checkout
  •   Sync to customer server is done with arbitrary
      shell script
       ANT, PHING or RAKE for building packets
       FTP, SCP, RSYNC or HTTP Upload to tansfer
       Postsync Script on Target Machines to unpack, install


                                                                |
Bug Tracking, Project Mgmt

  • Trac
       Integrates with SCM,
       many plugins
       (example: http://www.agile42.com/cms/pages/download/)
       Manages Changes, Tickets, Wiki
  • ActiveCollab
     More PM/Collaboration features, no SCM integration
     http://www.activecollab.com/
  • Phprojekt
     More Groupware oriented
     http://www.phprojekt.com/


                                                                |
phpUnderControl

 •   Cruise Control
 •   PHPUnit
 •   PHPCodeSniffer
 •   PHPDocumentor
 •   http://www.phpundercontrol.org




                                      |
phpUnderControl




                  |
Buildix

  http://buildix.thoughtworks.com/

  Buildix includes:
  • Subversion for Source Control
  • Mingle for Agile Project Management
  • Cruise Control for Continuous Integration
  • Trac as a wiki and bug-tracker
  • …plus a little bit of our own ThoughtWorks magic,
    to glue it all together


                                                        |
Learnings / Ideas

  • For Local development: Set up a local DNS server
      that resolves all project names to 127.0.0.1
  •   Example: <projectname>.<customername>.local

  • For SCM servers, File System can make a big
      difference. Choose the right one!




                                                       |
Reference to tools

  •   Zend Studio: http://www.zend.com/products/zend_studio
  •   Cruise Control: http://cruisecontrol.sourceforge.net/
  •   Xinc: http://code.google.com/p/xinc/
  •   Apache ANT: http://ant.apache.org/
  •   PHP Alternative to ANT: http://phing.info/
  •   Subversion: http://subversion.tigris.org/
  •   Tortoise SVN Explorer Extension: http://tortoisesvn.tigris.org/
  •   Trac SVN+ Technical Project Management: http://trac.edgewall.org/
  •   Nagios: http://www.nagios.org/
  •   Zend Platform: http://www.zend.com/de/products/zend_platform
  •   PHPUnit: http://www.phpunit.de/
  •   Selenium: http://www.openqa.org/selenium/




                                                                          |
Books I found useful
  • „Projekt-Automatisierung“, Mike Clark, Carl Hanser Verlag,
      München, 2006
  •   (english: „Pragmatic Project Automation – How to build …“, The
      Pragmatic Programmers, LLC. 2004

  • Subversion Book: http://svnbook.red-bean.com/

  • “Effektive Softwarearchitekturen”, Gernot Starke, Hanser, 2005

  • “Organisational Patterns for Agile Software Development”, Coplien,
      Harrison, Lucent Technologies, Prentice Hall, 2005

  • “Test Driven Development. By Example”, Addison-Wesley, Kent
      Beck, 2002



                                                                         |

Mais conteúdo relacionado

Mais procurados

Att lyckas med integration av arbetet från flera scrum team - Christophe Acho...
Att lyckas med integration av arbetet från flera scrum team - Christophe Acho...Att lyckas med integration av arbetet från flera scrum team - Christophe Acho...
Att lyckas med integration av arbetet från flera scrum team - Christophe Acho...manssandstrom
 
Preparing for DevOps
Preparing for DevOpsPreparing for DevOps
Preparing for DevOpsEklove Mohan
 
Microsoft SQL Server Testing Frameworks
Microsoft SQL Server Testing FrameworksMicrosoft SQL Server Testing Frameworks
Microsoft SQL Server Testing FrameworksMark Ginnebaugh
 
Automated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWS
Automated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWSAutomated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWS
Automated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWSBamdad Dashtban
 
Managing Test Labs Without the Headaches
Managing Test Labs Without the HeadachesManaging Test Labs Without the Headaches
Managing Test Labs Without the HeadachesImaginet
 
Gearman - Northeast PHP 2012
Gearman - Northeast PHP 2012Gearman - Northeast PHP 2012
Gearman - Northeast PHP 2012Mike Willbanks
 
Ginsbourg.com presentation of open source performance validation
Ginsbourg.com presentation of open source performance validationGinsbourg.com presentation of open source performance validation
Ginsbourg.com presentation of open source performance validationPerfecto Mobile
 
Curso de JBPM5
Curso de JBPM5Curso de JBPM5
Curso de JBPM5Oscar V
 
DevOps / Agile Tools Seminar 2013
DevOps / Agile Tools Seminar 2013DevOps / Agile Tools Seminar 2013
DevOps / Agile Tools Seminar 2013Ethan Ram
 
Use Docker to Enhance Your Testing
Use Docker to Enhance Your TestingUse Docker to Enhance Your Testing
Use Docker to Enhance Your TestingTechWell
 
Perforce webinar clear-case_jb[2]
Perforce webinar clear-case_jb[2]Perforce webinar clear-case_jb[2]
Perforce webinar clear-case_jb[2]Perforce
 
Chef vs Puppet vs Ansible vs Saltstack | Configuration Management Tools | Dev...
Chef vs Puppet vs Ansible vs Saltstack | Configuration Management Tools | Dev...Chef vs Puppet vs Ansible vs Saltstack | Configuration Management Tools | Dev...
Chef vs Puppet vs Ansible vs Saltstack | Configuration Management Tools | Dev...Simplilearn
 
IP Expo Nordic: Successful Practices for Continuous Delivery
IP Expo Nordic: Successful Practices for Continuous DeliveryIP Expo Nordic: Successful Practices for Continuous Delivery
IP Expo Nordic: Successful Practices for Continuous DeliveryMandi Walls
 
JIRA Studio: Development in the Cloud - Atlassian Summit 2010
JIRA Studio: Development in the Cloud - Atlassian Summit 2010JIRA Studio: Development in the Cloud - Atlassian Summit 2010
JIRA Studio: Development in the Cloud - Atlassian Summit 2010Atlassian
 
The Rocky Cloud Road
The Rocky Cloud RoadThe Rocky Cloud Road
The Rocky Cloud RoadGert Drapers
 
PASS 24HOP Linux Scripting Tips and Tricks
PASS 24HOP Linux Scripting Tips and TricksPASS 24HOP Linux Scripting Tips and Tricks
PASS 24HOP Linux Scripting Tips and TricksKellyn Pot'Vin-Gorman
 
DVCS: Making the move? How Atlassian can help...
DVCS: Making the move? How Atlassian can help...DVCS: Making the move? How Atlassian can help...
DVCS: Making the move? How Atlassian can help...Atlassian
 
Executing.Bpmn.Eclipscon.2009
Executing.Bpmn.Eclipscon.2009Executing.Bpmn.Eclipscon.2009
Executing.Bpmn.Eclipscon.2009koentsje
 
SharePoint Application Lifecycle Management (ALM)
SharePoint Application Lifecycle Management (ALM)SharePoint Application Lifecycle Management (ALM)
SharePoint Application Lifecycle Management (ALM)Ayman El-Hattab
 

Mais procurados (20)

Att lyckas med integration av arbetet från flera scrum team - Christophe Acho...
Att lyckas med integration av arbetet från flera scrum team - Christophe Acho...Att lyckas med integration av arbetet från flera scrum team - Christophe Acho...
Att lyckas med integration av arbetet från flera scrum team - Christophe Acho...
 
Preparing for DevOps
Preparing for DevOpsPreparing for DevOps
Preparing for DevOps
 
Microsoft SQL Server Testing Frameworks
Microsoft SQL Server Testing FrameworksMicrosoft SQL Server Testing Frameworks
Microsoft SQL Server Testing Frameworks
 
Automated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWS
Automated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWSAutomated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWS
Automated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWS
 
Managing Test Labs Without the Headaches
Managing Test Labs Without the HeadachesManaging Test Labs Without the Headaches
Managing Test Labs Without the Headaches
 
Svn tutorial
Svn tutorialSvn tutorial
Svn tutorial
 
Gearman - Northeast PHP 2012
Gearman - Northeast PHP 2012Gearman - Northeast PHP 2012
Gearman - Northeast PHP 2012
 
Ginsbourg.com presentation of open source performance validation
Ginsbourg.com presentation of open source performance validationGinsbourg.com presentation of open source performance validation
Ginsbourg.com presentation of open source performance validation
 
Curso de JBPM5
Curso de JBPM5Curso de JBPM5
Curso de JBPM5
 
DevOps / Agile Tools Seminar 2013
DevOps / Agile Tools Seminar 2013DevOps / Agile Tools Seminar 2013
DevOps / Agile Tools Seminar 2013
 
Use Docker to Enhance Your Testing
Use Docker to Enhance Your TestingUse Docker to Enhance Your Testing
Use Docker to Enhance Your Testing
 
Perforce webinar clear-case_jb[2]
Perforce webinar clear-case_jb[2]Perforce webinar clear-case_jb[2]
Perforce webinar clear-case_jb[2]
 
Chef vs Puppet vs Ansible vs Saltstack | Configuration Management Tools | Dev...
Chef vs Puppet vs Ansible vs Saltstack | Configuration Management Tools | Dev...Chef vs Puppet vs Ansible vs Saltstack | Configuration Management Tools | Dev...
Chef vs Puppet vs Ansible vs Saltstack | Configuration Management Tools | Dev...
 
IP Expo Nordic: Successful Practices for Continuous Delivery
IP Expo Nordic: Successful Practices for Continuous DeliveryIP Expo Nordic: Successful Practices for Continuous Delivery
IP Expo Nordic: Successful Practices for Continuous Delivery
 
JIRA Studio: Development in the Cloud - Atlassian Summit 2010
JIRA Studio: Development in the Cloud - Atlassian Summit 2010JIRA Studio: Development in the Cloud - Atlassian Summit 2010
JIRA Studio: Development in the Cloud - Atlassian Summit 2010
 
The Rocky Cloud Road
The Rocky Cloud RoadThe Rocky Cloud Road
The Rocky Cloud Road
 
PASS 24HOP Linux Scripting Tips and Tricks
PASS 24HOP Linux Scripting Tips and TricksPASS 24HOP Linux Scripting Tips and Tricks
PASS 24HOP Linux Scripting Tips and Tricks
 
DVCS: Making the move? How Atlassian can help...
DVCS: Making the move? How Atlassian can help...DVCS: Making the move? How Atlassian can help...
DVCS: Making the move? How Atlassian can help...
 
Executing.Bpmn.Eclipscon.2009
Executing.Bpmn.Eclipscon.2009Executing.Bpmn.Eclipscon.2009
Executing.Bpmn.Eclipscon.2009
 
SharePoint Application Lifecycle Management (ALM)
SharePoint Application Lifecycle Management (ALM)SharePoint Application Lifecycle Management (ALM)
SharePoint Application Lifecycle Management (ALM)
 

Destaque

Top Ten Common Defects
Top Ten Common DefectsTop Ten Common Defects
Top Ten Common DefectsJim Metcalf
 
Repairs and rehabilitation 2012
Repairs and rehabilitation 2012Repairs and rehabilitation 2012
Repairs and rehabilitation 2012Dhaval Jadhav
 
Internship Report on Building Construction
Internship Report on Building ConstructionInternship Report on Building Construction
Internship Report on Building ConstructionEsmael Aragaw
 

Destaque (6)

Construction
ConstructionConstruction
Construction
 
Top Ten Common Defects
Top Ten Common DefectsTop Ten Common Defects
Top Ten Common Defects
 
Retrofitting
RetrofittingRetrofitting
Retrofitting
 
Repairs and rehabilitation 2012
Repairs and rehabilitation 2012Repairs and rehabilitation 2012
Repairs and rehabilitation 2012
 
Building maintenance
Building maintenanceBuilding maintenance
Building maintenance
 
Internship Report on Building Construction
Internship Report on Building ConstructionInternship Report on Building Construction
Internship Report on Building Construction
 

Semelhante a An Infrastructure for Team Based PHP Development

DevOps, A brief introduction to Vagrant & Ansible
DevOps, A brief introduction to Vagrant & AnsibleDevOps, A brief introduction to Vagrant & Ansible
DevOps, A brief introduction to Vagrant & AnsibleArnaud LEMAIRE
 
PHX Session #1: Development Best Practices And How Microsoft Helps
PHX Session #1: Development  Best  Practices And  How  Microsoft  HelpsPHX Session #1: Development  Best  Practices And  How  Microsoft  Helps
PHX Session #1: Development Best Practices And How Microsoft HelpsSteve Lange
 
Peer Code Review: In a Nutshell and The Tantric Team: Getting Your Automated ...
Peer Code Review: In a Nutshell and The Tantric Team: Getting Your Automated ...Peer Code Review: In a Nutshell and The Tantric Team: Getting Your Automated ...
Peer Code Review: In a Nutshell and The Tantric Team: Getting Your Automated ...Atlassian
 
Maven, Archiva, Subversion and Team City
Maven, Archiva, Subversion and Team CityMaven, Archiva, Subversion and Team City
Maven, Archiva, Subversion and Team CityBoy Tech
 
Beyond Scrum: Scaling Agile with Continuous Delivery and Subversion
Beyond Scrum: Scaling Agile with Continuous Delivery and SubversionBeyond Scrum: Scaling Agile with Continuous Delivery and Subversion
Beyond Scrum: Scaling Agile with Continuous Delivery and SubversionProduct Marketing Services
 
Application lifecycle management in SharePoint
Application lifecycle management in SharePointApplication lifecycle management in SharePoint
Application lifecycle management in SharePointJeremy Thake
 
Achieving Full Stack DevOps at Colonial Life
Achieving Full Stack DevOps at Colonial Life Achieving Full Stack DevOps at Colonial Life
Achieving Full Stack DevOps at Colonial Life DevOps.com
 
Continuous Delivery with Jenkins declarative pipeline XPDays-2018-12-08
Continuous Delivery with Jenkins declarative pipeline XPDays-2018-12-08Continuous Delivery with Jenkins declarative pipeline XPDays-2018-12-08
Continuous Delivery with Jenkins declarative pipeline XPDays-2018-12-08Борис Зора
 
Towards Continuous Deployment with Django
Towards Continuous Deployment with DjangoTowards Continuous Deployment with Django
Towards Continuous Deployment with DjangoRoger Barnes
 
Chef for DevOps - an Introduction
Chef for DevOps - an IntroductionChef for DevOps - an Introduction
Chef for DevOps - an IntroductionSanjeev Sharma
 
JMeter - Performance testing your webapp
JMeter - Performance testing your webappJMeter - Performance testing your webapp
JMeter - Performance testing your webappAmit Solanki
 
DevOps Pipeline for Liferay Application
DevOps Pipeline for Liferay ApplicationDevOps Pipeline for Liferay Application
DevOps Pipeline for Liferay ApplicationMaruti Gollapudi
 
Know More About Rational Performance - Snehamoy K
Know More About Rational Performance - Snehamoy KKnow More About Rational Performance - Snehamoy K
Know More About Rational Performance - Snehamoy KRoopa Nadkarni
 
3 know more_about_rational_performance_tester_8-1-snehamoy_k
3 know more_about_rational_performance_tester_8-1-snehamoy_k3 know more_about_rational_performance_tester_8-1-snehamoy_k
3 know more_about_rational_performance_tester_8-1-snehamoy_kIBM
 
Deployment with capistrano
Deployment with capistranoDeployment with capistrano
Deployment with capistranosagar junnarkar
 
Arch9 - A cloud based continuous delivery implementation
Arch9 - A cloud based continuous delivery implementationArch9 - A cloud based continuous delivery implementation
Arch9 - A cloud based continuous delivery implementationPavel Chunyayev
 

Semelhante a An Infrastructure for Team Based PHP Development (20)

DevOps, A brief introduction to Vagrant & Ansible
DevOps, A brief introduction to Vagrant & AnsibleDevOps, A brief introduction to Vagrant & Ansible
DevOps, A brief introduction to Vagrant & Ansible
 
Capistrano
CapistranoCapistrano
Capistrano
 
PHX Session #1: Development Best Practices And How Microsoft Helps
PHX Session #1: Development  Best  Practices And  How  Microsoft  HelpsPHX Session #1: Development  Best  Practices And  How  Microsoft  Helps
PHX Session #1: Development Best Practices And How Microsoft Helps
 
Peer Code Review: In a Nutshell and The Tantric Team: Getting Your Automated ...
Peer Code Review: In a Nutshell and The Tantric Team: Getting Your Automated ...Peer Code Review: In a Nutshell and The Tantric Team: Getting Your Automated ...
Peer Code Review: In a Nutshell and The Tantric Team: Getting Your Automated ...
 
Maven, Archiva, Subversion and Team City
Maven, Archiva, Subversion and Team CityMaven, Archiva, Subversion and Team City
Maven, Archiva, Subversion and Team City
 
Seminar - JBoss Migration
Seminar - JBoss MigrationSeminar - JBoss Migration
Seminar - JBoss Migration
 
Beyond Scrum: Scaling Agile with Continuous Delivery and Subversion
Beyond Scrum: Scaling Agile with Continuous Delivery and SubversionBeyond Scrum: Scaling Agile with Continuous Delivery and Subversion
Beyond Scrum: Scaling Agile with Continuous Delivery and Subversion
 
Application lifecycle management in SharePoint
Application lifecycle management in SharePointApplication lifecycle management in SharePoint
Application lifecycle management in SharePoint
 
Achieving Full Stack DevOps at Colonial Life
Achieving Full Stack DevOps at Colonial Life Achieving Full Stack DevOps at Colonial Life
Achieving Full Stack DevOps at Colonial Life
 
Continuous Delivery with Jenkins declarative pipeline XPDays-2018-12-08
Continuous Delivery with Jenkins declarative pipeline XPDays-2018-12-08Continuous Delivery with Jenkins declarative pipeline XPDays-2018-12-08
Continuous Delivery with Jenkins declarative pipeline XPDays-2018-12-08
 
Towards Continuous Deployment with Django
Towards Continuous Deployment with DjangoTowards Continuous Deployment with Django
Towards Continuous Deployment with Django
 
DevOps and Chef improve your life
DevOps and Chef improve your life DevOps and Chef improve your life
DevOps and Chef improve your life
 
Chef for DevOps - an Introduction
Chef for DevOps - an IntroductionChef for DevOps - an Introduction
Chef for DevOps - an Introduction
 
JMeter - Performance testing your webapp
JMeter - Performance testing your webappJMeter - Performance testing your webapp
JMeter - Performance testing your webapp
 
DevOps Pipeline for Liferay Application
DevOps Pipeline for Liferay ApplicationDevOps Pipeline for Liferay Application
DevOps Pipeline for Liferay Application
 
Know More About Rational Performance - Snehamoy K
Know More About Rational Performance - Snehamoy KKnow More About Rational Performance - Snehamoy K
Know More About Rational Performance - Snehamoy K
 
3 know more_about_rational_performance_tester_8-1-snehamoy_k
3 know more_about_rational_performance_tester_8-1-snehamoy_k3 know more_about_rational_performance_tester_8-1-snehamoy_k
3 know more_about_rational_performance_tester_8-1-snehamoy_k
 
AvenDATA and Devops
AvenDATA and DevopsAvenDATA and Devops
AvenDATA and Devops
 
Deployment with capistrano
Deployment with capistranoDeployment with capistrano
Deployment with capistrano
 
Arch9 - A cloud based continuous delivery implementation
Arch9 - A cloud based continuous delivery implementationArch9 - A cloud based continuous delivery implementation
Arch9 - A cloud based continuous delivery implementation
 

Mais de dpc

ezComponents - Derick Rethans
ezComponents - Derick RethansezComponents - Derick Rethans
ezComponents - Derick Rethansdpc
 
Software And The Taste Of Mayo - Marco Tabini
Software And The Taste Of Mayo - Marco TabiniSoftware And The Taste Of Mayo - Marco Tabini
Software And The Taste Of Mayo - Marco Tabinidpc
 
Deployment With Subversion - Lorna Mitchell
Deployment With Subversion - Lorna MitchellDeployment With Subversion - Lorna Mitchell
Deployment With Subversion - Lorna Mitchelldpc
 
Best Practices with Zend Framework - Matthew Weier O'Phinney
Best Practices with Zend Framework - Matthew Weier O'PhinneyBest Practices with Zend Framework - Matthew Weier O'Phinney
Best Practices with Zend Framework - Matthew Weier O'Phinneydpc
 
State Of PHP - Zeev Suraski
State Of PHP - Zeev SuraskiState Of PHP - Zeev Suraski
State Of PHP - Zeev Suraskidpc
 
Symfony 1.1 - Fabien Potencier
Symfony 1.1 - Fabien PotencierSymfony 1.1 - Fabien Potencier
Symfony 1.1 - Fabien Potencierdpc
 
Advanced PHP: Design Patterns - Dennis-Jan Broerse
Advanced PHP: Design Patterns - Dennis-Jan BroerseAdvanced PHP: Design Patterns - Dennis-Jan Broerse
Advanced PHP: Design Patterns - Dennis-Jan Broersedpc
 
New Features PHPUnit 3.3 - Sebastian Bergmann
New Features PHPUnit 3.3 - Sebastian BergmannNew Features PHPUnit 3.3 - Sebastian Bergmann
New Features PHPUnit 3.3 - Sebastian Bergmanndpc
 
PHP 5.3 and PHP 6; a look ahead - Stefan Priebsch
PHP 5.3 and PHP 6; a look ahead - Stefan PriebschPHP 5.3 and PHP 6; a look ahead - Stefan Priebsch
PHP 5.3 and PHP 6; a look ahead - Stefan Priebschdpc
 
Quality Assurance in PHP projects - Sebastian Bergmann
Quality Assurance in PHP projects - Sebastian BergmannQuality Assurance in PHP projects - Sebastian Bergmann
Quality Assurance in PHP projects - Sebastian Bergmanndpc
 
Enterprise PHP Development - Ivo Jansch
Enterprise PHP Development - Ivo JanschEnterprise PHP Development - Ivo Jansch
Enterprise PHP Development - Ivo Janschdpc
 
DPC2008 Intro - Ivo Jansch
DPC2008 Intro - Ivo JanschDPC2008 Intro - Ivo Jansch
DPC2008 Intro - Ivo Janschdpc
 
DPC 2007 My First Mashup (Cal Evans)
DPC 2007 My First Mashup (Cal Evans)DPC 2007 My First Mashup (Cal Evans)
DPC 2007 My First Mashup (Cal Evans)dpc
 
DPC2007 CodeGear, Delphi For PHP (Pawel Glowacki)
DPC2007 CodeGear, Delphi For PHP (Pawel Glowacki)DPC2007 CodeGear, Delphi For PHP (Pawel Glowacki)
DPC2007 CodeGear, Delphi For PHP (Pawel Glowacki)dpc
 
DPC2007 Zend Framework (Gaylord Aulke)
DPC2007 Zend Framework (Gaylord Aulke)DPC2007 Zend Framework (Gaylord Aulke)
DPC2007 Zend Framework (Gaylord Aulke)dpc
 
DPC2007 Objects Of Desire (Kevlin Henney)
DPC2007 Objects Of Desire (Kevlin Henney)DPC2007 Objects Of Desire (Kevlin Henney)
DPC2007 Objects Of Desire (Kevlin Henney)dpc
 
DPC2007 Symfony (Stefan Koopmanschap)
DPC2007 Symfony (Stefan Koopmanschap)DPC2007 Symfony (Stefan Koopmanschap)
DPC2007 Symfony (Stefan Koopmanschap)dpc
 
DPC2007 PHP And Oracle (Kuassi Mensah)
DPC2007 PHP And Oracle (Kuassi Mensah)DPC2007 PHP And Oracle (Kuassi Mensah)
DPC2007 PHP And Oracle (Kuassi Mensah)dpc
 
DPC2007 Case Study Surfnet (Herman Van Dompseler)
DPC2007 Case Study Surfnet (Herman Van Dompseler)DPC2007 Case Study Surfnet (Herman Van Dompseler)
DPC2007 Case Study Surfnet (Herman Van Dompseler)dpc
 
DPC2007 Case Study Zoom & Webwereld (Sander vd Graaf)
DPC2007 Case Study Zoom & Webwereld (Sander vd Graaf)DPC2007 Case Study Zoom & Webwereld (Sander vd Graaf)
DPC2007 Case Study Zoom & Webwereld (Sander vd Graaf)dpc
 

Mais de dpc (20)

ezComponents - Derick Rethans
ezComponents - Derick RethansezComponents - Derick Rethans
ezComponents - Derick Rethans
 
Software And The Taste Of Mayo - Marco Tabini
Software And The Taste Of Mayo - Marco TabiniSoftware And The Taste Of Mayo - Marco Tabini
Software And The Taste Of Mayo - Marco Tabini
 
Deployment With Subversion - Lorna Mitchell
Deployment With Subversion - Lorna MitchellDeployment With Subversion - Lorna Mitchell
Deployment With Subversion - Lorna Mitchell
 
Best Practices with Zend Framework - Matthew Weier O'Phinney
Best Practices with Zend Framework - Matthew Weier O'PhinneyBest Practices with Zend Framework - Matthew Weier O'Phinney
Best Practices with Zend Framework - Matthew Weier O'Phinney
 
State Of PHP - Zeev Suraski
State Of PHP - Zeev SuraskiState Of PHP - Zeev Suraski
State Of PHP - Zeev Suraski
 
Symfony 1.1 - Fabien Potencier
Symfony 1.1 - Fabien PotencierSymfony 1.1 - Fabien Potencier
Symfony 1.1 - Fabien Potencier
 
Advanced PHP: Design Patterns - Dennis-Jan Broerse
Advanced PHP: Design Patterns - Dennis-Jan BroerseAdvanced PHP: Design Patterns - Dennis-Jan Broerse
Advanced PHP: Design Patterns - Dennis-Jan Broerse
 
New Features PHPUnit 3.3 - Sebastian Bergmann
New Features PHPUnit 3.3 - Sebastian BergmannNew Features PHPUnit 3.3 - Sebastian Bergmann
New Features PHPUnit 3.3 - Sebastian Bergmann
 
PHP 5.3 and PHP 6; a look ahead - Stefan Priebsch
PHP 5.3 and PHP 6; a look ahead - Stefan PriebschPHP 5.3 and PHP 6; a look ahead - Stefan Priebsch
PHP 5.3 and PHP 6; a look ahead - Stefan Priebsch
 
Quality Assurance in PHP projects - Sebastian Bergmann
Quality Assurance in PHP projects - Sebastian BergmannQuality Assurance in PHP projects - Sebastian Bergmann
Quality Assurance in PHP projects - Sebastian Bergmann
 
Enterprise PHP Development - Ivo Jansch
Enterprise PHP Development - Ivo JanschEnterprise PHP Development - Ivo Jansch
Enterprise PHP Development - Ivo Jansch
 
DPC2008 Intro - Ivo Jansch
DPC2008 Intro - Ivo JanschDPC2008 Intro - Ivo Jansch
DPC2008 Intro - Ivo Jansch
 
DPC 2007 My First Mashup (Cal Evans)
DPC 2007 My First Mashup (Cal Evans)DPC 2007 My First Mashup (Cal Evans)
DPC 2007 My First Mashup (Cal Evans)
 
DPC2007 CodeGear, Delphi For PHP (Pawel Glowacki)
DPC2007 CodeGear, Delphi For PHP (Pawel Glowacki)DPC2007 CodeGear, Delphi For PHP (Pawel Glowacki)
DPC2007 CodeGear, Delphi For PHP (Pawel Glowacki)
 
DPC2007 Zend Framework (Gaylord Aulke)
DPC2007 Zend Framework (Gaylord Aulke)DPC2007 Zend Framework (Gaylord Aulke)
DPC2007 Zend Framework (Gaylord Aulke)
 
DPC2007 Objects Of Desire (Kevlin Henney)
DPC2007 Objects Of Desire (Kevlin Henney)DPC2007 Objects Of Desire (Kevlin Henney)
DPC2007 Objects Of Desire (Kevlin Henney)
 
DPC2007 Symfony (Stefan Koopmanschap)
DPC2007 Symfony (Stefan Koopmanschap)DPC2007 Symfony (Stefan Koopmanschap)
DPC2007 Symfony (Stefan Koopmanschap)
 
DPC2007 PHP And Oracle (Kuassi Mensah)
DPC2007 PHP And Oracle (Kuassi Mensah)DPC2007 PHP And Oracle (Kuassi Mensah)
DPC2007 PHP And Oracle (Kuassi Mensah)
 
DPC2007 Case Study Surfnet (Herman Van Dompseler)
DPC2007 Case Study Surfnet (Herman Van Dompseler)DPC2007 Case Study Surfnet (Herman Van Dompseler)
DPC2007 Case Study Surfnet (Herman Van Dompseler)
 
DPC2007 Case Study Zoom & Webwereld (Sander vd Graaf)
DPC2007 Case Study Zoom & Webwereld (Sander vd Graaf)DPC2007 Case Study Zoom & Webwereld (Sander vd Graaf)
DPC2007 Case Study Zoom & Webwereld (Sander vd Graaf)
 

Último

FULL ENJOY Call girls in Paharganj Delhi | 8377087607
FULL ENJOY Call girls in Paharganj Delhi | 8377087607FULL ENJOY Call girls in Paharganj Delhi | 8377087607
FULL ENJOY Call girls in Paharganj Delhi | 8377087607dollysharma2066
 
Kenya’s Coconut Value Chain by Gatsby Africa
Kenya’s Coconut Value Chain by Gatsby AfricaKenya’s Coconut Value Chain by Gatsby Africa
Kenya’s Coconut Value Chain by Gatsby Africaictsugar
 
Call US-88OO1O2216 Call Girls In Mahipalpur Female Escort Service
Call US-88OO1O2216 Call Girls In Mahipalpur Female Escort ServiceCall US-88OO1O2216 Call Girls In Mahipalpur Female Escort Service
Call US-88OO1O2216 Call Girls In Mahipalpur Female Escort Servicecallgirls2057
 
8447779800, Low rate Call girls in New Ashok Nagar Delhi NCR
8447779800, Low rate Call girls in New Ashok Nagar Delhi NCR8447779800, Low rate Call girls in New Ashok Nagar Delhi NCR
8447779800, Low rate Call girls in New Ashok Nagar Delhi NCRashishs7044
 
8447779800, Low rate Call girls in Tughlakabad Delhi NCR
8447779800, Low rate Call girls in Tughlakabad Delhi NCR8447779800, Low rate Call girls in Tughlakabad Delhi NCR
8447779800, Low rate Call girls in Tughlakabad Delhi NCRashishs7044
 
2024 Numerator Consumer Study of Cannabis Usage
2024 Numerator Consumer Study of Cannabis Usage2024 Numerator Consumer Study of Cannabis Usage
2024 Numerator Consumer Study of Cannabis UsageNeil Kimberley
 
India Consumer 2024 Redacted Sample Report
India Consumer 2024 Redacted Sample ReportIndia Consumer 2024 Redacted Sample Report
India Consumer 2024 Redacted Sample ReportMintel Group
 
Memorándum de Entendimiento (MoU) entre Codelco y SQM
Memorándum de Entendimiento (MoU) entre Codelco y SQMMemorándum de Entendimiento (MoU) entre Codelco y SQM
Memorándum de Entendimiento (MoU) entre Codelco y SQMVoces Mineras
 
8447779800, Low rate Call girls in Rohini Delhi NCR
8447779800, Low rate Call girls in Rohini Delhi NCR8447779800, Low rate Call girls in Rohini Delhi NCR
8447779800, Low rate Call girls in Rohini Delhi NCRashishs7044
 
Marketplace and Quality Assurance Presentation - Vincent Chirchir
Marketplace and Quality Assurance Presentation - Vincent ChirchirMarketplace and Quality Assurance Presentation - Vincent Chirchir
Marketplace and Quality Assurance Presentation - Vincent Chirchirictsugar
 
(Best) ENJOY Call Girls in Faridabad Ex | 8377087607
(Best) ENJOY Call Girls in Faridabad Ex | 8377087607(Best) ENJOY Call Girls in Faridabad Ex | 8377087607
(Best) ENJOY Call Girls in Faridabad Ex | 8377087607dollysharma2066
 
Future Of Sample Report 2024 | Redacted Version
Future Of Sample Report 2024 | Redacted VersionFuture Of Sample Report 2024 | Redacted Version
Future Of Sample Report 2024 | Redacted VersionMintel Group
 
NewBase 19 April 2024 Energy News issue - 1717 by Khaled Al Awadi.pdf
NewBase  19 April  2024  Energy News issue - 1717 by Khaled Al Awadi.pdfNewBase  19 April  2024  Energy News issue - 1717 by Khaled Al Awadi.pdf
NewBase 19 April 2024 Energy News issue - 1717 by Khaled Al Awadi.pdfKhaled Al Awadi
 
Organizational Structure Running A Successful Business
Organizational Structure Running A Successful BusinessOrganizational Structure Running A Successful Business
Organizational Structure Running A Successful BusinessSeta Wicaksana
 
Contemporary Economic Issues Facing the Filipino Entrepreneur (1).pptx
Contemporary Economic Issues Facing the Filipino Entrepreneur (1).pptxContemporary Economic Issues Facing the Filipino Entrepreneur (1).pptx
Contemporary Economic Issues Facing the Filipino Entrepreneur (1).pptxMarkAnthonyAurellano
 
Traction part 2 - EOS Model JAX Bridges.
Traction part 2 - EOS Model JAX Bridges.Traction part 2 - EOS Model JAX Bridges.
Traction part 2 - EOS Model JAX Bridges.Anamaria Contreras
 
Youth Involvement in an Innovative Coconut Value Chain by Mwalimu Menza
Youth Involvement in an Innovative Coconut Value Chain by Mwalimu MenzaYouth Involvement in an Innovative Coconut Value Chain by Mwalimu Menza
Youth Involvement in an Innovative Coconut Value Chain by Mwalimu Menzaictsugar
 
Ms Motilal Padampat Sugar Mills vs. State of Uttar Pradesh & Ors. - A Milesto...
Ms Motilal Padampat Sugar Mills vs. State of Uttar Pradesh & Ors. - A Milesto...Ms Motilal Padampat Sugar Mills vs. State of Uttar Pradesh & Ors. - A Milesto...
Ms Motilal Padampat Sugar Mills vs. State of Uttar Pradesh & Ors. - A Milesto...ShrutiBose4
 

Último (20)

FULL ENJOY Call girls in Paharganj Delhi | 8377087607
FULL ENJOY Call girls in Paharganj Delhi | 8377087607FULL ENJOY Call girls in Paharganj Delhi | 8377087607
FULL ENJOY Call girls in Paharganj Delhi | 8377087607
 
Kenya’s Coconut Value Chain by Gatsby Africa
Kenya’s Coconut Value Chain by Gatsby AfricaKenya’s Coconut Value Chain by Gatsby Africa
Kenya’s Coconut Value Chain by Gatsby Africa
 
Call Us ➥9319373153▻Call Girls In North Goa
Call Us ➥9319373153▻Call Girls In North GoaCall Us ➥9319373153▻Call Girls In North Goa
Call Us ➥9319373153▻Call Girls In North Goa
 
Call US-88OO1O2216 Call Girls In Mahipalpur Female Escort Service
Call US-88OO1O2216 Call Girls In Mahipalpur Female Escort ServiceCall US-88OO1O2216 Call Girls In Mahipalpur Female Escort Service
Call US-88OO1O2216 Call Girls In Mahipalpur Female Escort Service
 
8447779800, Low rate Call girls in New Ashok Nagar Delhi NCR
8447779800, Low rate Call girls in New Ashok Nagar Delhi NCR8447779800, Low rate Call girls in New Ashok Nagar Delhi NCR
8447779800, Low rate Call girls in New Ashok Nagar Delhi NCR
 
Enjoy ➥8448380779▻ Call Girls In Sector 18 Noida Escorts Delhi NCR
Enjoy ➥8448380779▻ Call Girls In Sector 18 Noida Escorts Delhi NCREnjoy ➥8448380779▻ Call Girls In Sector 18 Noida Escorts Delhi NCR
Enjoy ➥8448380779▻ Call Girls In Sector 18 Noida Escorts Delhi NCR
 
8447779800, Low rate Call girls in Tughlakabad Delhi NCR
8447779800, Low rate Call girls in Tughlakabad Delhi NCR8447779800, Low rate Call girls in Tughlakabad Delhi NCR
8447779800, Low rate Call girls in Tughlakabad Delhi NCR
 
2024 Numerator Consumer Study of Cannabis Usage
2024 Numerator Consumer Study of Cannabis Usage2024 Numerator Consumer Study of Cannabis Usage
2024 Numerator Consumer Study of Cannabis Usage
 
India Consumer 2024 Redacted Sample Report
India Consumer 2024 Redacted Sample ReportIndia Consumer 2024 Redacted Sample Report
India Consumer 2024 Redacted Sample Report
 
Memorándum de Entendimiento (MoU) entre Codelco y SQM
Memorándum de Entendimiento (MoU) entre Codelco y SQMMemorándum de Entendimiento (MoU) entre Codelco y SQM
Memorándum de Entendimiento (MoU) entre Codelco y SQM
 
8447779800, Low rate Call girls in Rohini Delhi NCR
8447779800, Low rate Call girls in Rohini Delhi NCR8447779800, Low rate Call girls in Rohini Delhi NCR
8447779800, Low rate Call girls in Rohini Delhi NCR
 
Marketplace and Quality Assurance Presentation - Vincent Chirchir
Marketplace and Quality Assurance Presentation - Vincent ChirchirMarketplace and Quality Assurance Presentation - Vincent Chirchir
Marketplace and Quality Assurance Presentation - Vincent Chirchir
 
(Best) ENJOY Call Girls in Faridabad Ex | 8377087607
(Best) ENJOY Call Girls in Faridabad Ex | 8377087607(Best) ENJOY Call Girls in Faridabad Ex | 8377087607
(Best) ENJOY Call Girls in Faridabad Ex | 8377087607
 
Future Of Sample Report 2024 | Redacted Version
Future Of Sample Report 2024 | Redacted VersionFuture Of Sample Report 2024 | Redacted Version
Future Of Sample Report 2024 | Redacted Version
 
NewBase 19 April 2024 Energy News issue - 1717 by Khaled Al Awadi.pdf
NewBase  19 April  2024  Energy News issue - 1717 by Khaled Al Awadi.pdfNewBase  19 April  2024  Energy News issue - 1717 by Khaled Al Awadi.pdf
NewBase 19 April 2024 Energy News issue - 1717 by Khaled Al Awadi.pdf
 
Organizational Structure Running A Successful Business
Organizational Structure Running A Successful BusinessOrganizational Structure Running A Successful Business
Organizational Structure Running A Successful Business
 
Contemporary Economic Issues Facing the Filipino Entrepreneur (1).pptx
Contemporary Economic Issues Facing the Filipino Entrepreneur (1).pptxContemporary Economic Issues Facing the Filipino Entrepreneur (1).pptx
Contemporary Economic Issues Facing the Filipino Entrepreneur (1).pptx
 
Traction part 2 - EOS Model JAX Bridges.
Traction part 2 - EOS Model JAX Bridges.Traction part 2 - EOS Model JAX Bridges.
Traction part 2 - EOS Model JAX Bridges.
 
Youth Involvement in an Innovative Coconut Value Chain by Mwalimu Menza
Youth Involvement in an Innovative Coconut Value Chain by Mwalimu MenzaYouth Involvement in an Innovative Coconut Value Chain by Mwalimu Menza
Youth Involvement in an Innovative Coconut Value Chain by Mwalimu Menza
 
Ms Motilal Padampat Sugar Mills vs. State of Uttar Pradesh & Ors. - A Milesto...
Ms Motilal Padampat Sugar Mills vs. State of Uttar Pradesh & Ors. - A Milesto...Ms Motilal Padampat Sugar Mills vs. State of Uttar Pradesh & Ors. - A Milesto...
Ms Motilal Padampat Sugar Mills vs. State of Uttar Pradesh & Ors. - A Milesto...
 

An Infrastructure for Team Based PHP Development

  • 1. An Infrastructure for Team Based PHP Development Gaylord Aulke Director Professional Services DACH Zend Technologies
  • 2. Agenda • Why am i talking here? (About the Speaker) • Motivation / The early days • About Processes • About Infrastructure • About Tools |
  • 3. About me • Gaylord Aulke, 38, geek and sometimes businessman • Did some (serious) Assembler Coding in the past (40kb Machinecode) • Commercial Projects in Pascal (yes i am THAT old) • 4GL Business Application Coding (i was young and needed the money) • Started my Web-Life with Perl / CGI • Early Adoption of Java and J2EE (i love it) • Started using PHP in 1997 for very small projects only |
  • 4. Motivation: The good old days Control/Start PM Deploy Change Server Test SAMBA Share Developer Test Apache QM |
  • 5. Handcrafted approach • Everyone developed on a common Network share • Apache had its Docroot there • PROs:  Very simple to set up  FREQUENT integration of all changes  Easy to learn, no errors to make • CONs:  Editing a central file may render the application untestable for everyone  Conflict resolution must be done manually  Version Mgmt the hard way (.old, .old2, .veryold, .ancient)  Copying code base for concurrent codelines |
  • 6. Motivation • We have serveral software projects • Some are under active development • Some in production and need occasional fixes • We have a limited number of Developers • Everybody needs to work on different projects • Context switches are normal and need to be efficient • We need to keep a high quality level • We want to scale the team and the customer base |
  • 7. About Processes • Development • Integration • QS • Deployment • Maintenance |
  • 8. Processes: Development • Every developer should be able to change and extend whatever he wants without restrictions • She should be able to test her changes very frequently in a realistic context • Changes of others must not influence the tests of her new code • After successfully testing the changes for themselves they need to be integrated with the changes of everybody else |
  • 9. Processes: Integration • Usually, code runs in a certain environment in production • Developer needs a development Environment that is as close as possible to the production environment • Integration needs to be done as early as possible in the process • The „real“ integration is often only possible at the customer‘s site. A simple way to do this without risk is needed |
  • 10. Processes: QS • „Quality“ is a process issue • Do reasonable tests already at development time  (test data, environment) • Integrate all code on a continuous integration Server • Test ALL functionality of the application frequently • Before a release do another test / approval process • Define measures and threshold for acceptable quality in all process steps |
  • 11. Processes: Deployment • Automate deployment • Record all deployments made • If you have serveral customers: Manage the Deployment information centrally |
  • 12. Processes: Maintenance • Manage Defects, Feature Requests, open issues and Requirements • Define a process for quick fixes/changes • Define a Release Process that coordinates Fixes and new Releases |
  • 13. Local Development Scp/zip/rsync/ftp ProjectConfig DB Customer Servers Packager Deploy ! change Dev. DB. test Dev.Machine QS Machine test (all projects) Developers Checkoutdelete / Update /commitrevert / Checkoutdelete / SVN Repository QM Team |
  • 14. Local development • Every developer runs his own copy of the application • A SCM (Source Code Mgmt) manages all the differerent changes and revisions of the Software  Lorna will talk about SVN in a few minutes • Changes are made to the local copy, local Apache has its docroot there • Developer tests locally until his component works • Then „check in“ to the repository is done |
  • 15. About Databases • A common database for all developers usually does the job well because:  Changes are often backwards compatible (new fields, new tables)  Everybody can use shared test data  If the DB is corrupted, it can be re-built from scripts • Have a separate DB with „authentic“ test data for QS • Generate temporary DBs during runtime of automated tests (we create and drop these for every single test) • If a separate DB is needed, you can always copy… |
  • 16. Issues with local Development • Everyone needs to build a local environment with all Extensions / PHP Versions etc. • Some environment details might only be available at a central location in one instance (an SAP system for example) • No Control about „the right environment“ |
  • 17. How we cope with it • Define a common environment for all applications  Framework  Set of extensions to use • Define a common local apache and path setup • Put all environment information in config files • Manage local config files and Vhosts for this setup in the SCM • Build the application for portability (Windows Development Systems, Linux Servers) |
  • 18. More Sophisticated: Development Sandboxes Scp/zip/rsync/ftp ProjectConfig DB Customer Servers Deploy ! Packager Deploy ! Priv. Workspace change Priv. Workspace Priv. Workspace Shared Workspace test Priv. VHost Priv. VHost Checkoutdelete / Priv. VHost QS VHost test Developers Checkoutdelete / Management Select project Application Select project checkout QM Team Update/commitrevert / SVN Repository |
  • 19. Development Sandboxes: File Structure Dyn . Data Project#1 Core Custom Testserver Project#2 SymLink Docroot Project#3 BaseDir Slot#1 Dyn. Data Sandboxe Björn s Slot#2 Core Eric Custom Slot#3 Thomas Docroot |
  • 20. Development Sandboxes • One Development Server • All Environment set up there • Everyone has his own area there where he can Checkout/Test • Every Developer has a number of „Project Slots“ that he can fill with any project (- revision) • Slots are re-used, can be freed after checkin |
  • 21. Development Sandboxes • PROs:  Single Point of administration  Complete environment can be set up  A common set of tools can be used • CONs:  Quite complex in multi-project environments  Development / SCM checkout on network share  Single Point of Failure |
  • 22. Middelway: VMWare • Build VMWare Image for each project with all dependencies • Use hgfs (host file system access) to access local code base (outside VM) • Host OS can mount shares in the network for shared files and test data • VM can use external or internal DB • Running a project is as easy as copy a VM, start it |
  • 23. Packaging and Branching Live Branch Change #2 Change #4 Change #6 Merge Merge Development Change #1 Change #3 Change #5 Create live branch when development Each change in the live Deploy new development Version Version has been installed onthe live Branch is immediately to Customer Server Old Live Branch . Server. Merged to the dev branch . is deleted and then Created new from development branch . |
  • 24. Packaging • Always have the current version that is installed on the customer‘s site in your SCM • Always follow the same process steps:  Change locally on your system  Test changes  Run automatic Deploy • To do so,  Manage configuration on customer‘s site in some tool  Build an infrastructure for deployment to different sites with different transport mechanisms |
  • 25. Tools • IDE • SCM • Automated Testing / Metrics / Code Coverage • Code-Analyzing • Continuous Integration • Packaging / Deployment • Bug Tracking / Project management |
  • 28. SCM • RCS works cool for config files • CVS can already manage development projects with many users • SVN is „the better CVS“ (which is already a question of believe for some) • GIT is extremely cool • Commercial tools are very different in focus and functionality/quality • We bought 80 Perforce licenses during New Economy times (600 $ per seat) and didn‘t regret it. |
  • 32. Static Code Analyzer / Metrics • „Project Mess Detection“  PMD scans source code and looks for potential problems like:  Possible bugs  Dead code - unused local variables, parameters and private methods  Suboptimal code  Overcomplicated expressions - unnecessary if statements, for loops etc.  Duplicate code - copied/pasted code means copied/pasted bugs • Coding Style Check • Static Security analysis (www.armorize.com) • Static Code Quality analysis (Zend Code Analyzer) • … |
  • 34. Packaging/Deployment • Build-Tools:  ANT, PHING, RAKE, Shell Scripts • They can generate Packages (ZIP or RPM) • Deployment to Staging Server • Then local deployment to Cluster • Integrated Solution (Ruby): Capistrano ( http://capify.org/)  Deploy, Rollback  Remote Execution via SSH • Puppet (http://reductivelabs.com/trac/puppet/) |
  • 35. Packaging: What we do • Intranet-App that has a „deploy“ button for each Project • SCM Sync to Test-Server first (test-deploy-Button) • Run tests there • Then deploy to customer‘s site (deploy-life Button) • Sync to test server is done via SCM checkout • Sync to customer server is done with arbitrary shell script  ANT, PHING or RAKE for building packets  FTP, SCP, RSYNC or HTTP Upload to tansfer  Postsync Script on Target Machines to unpack, install |
  • 36. Bug Tracking, Project Mgmt • Trac  Integrates with SCM,  many plugins  (example: http://www.agile42.com/cms/pages/download/)  Manages Changes, Tickets, Wiki • ActiveCollab  More PM/Collaboration features, no SCM integration  http://www.activecollab.com/ • Phprojekt  More Groupware oriented  http://www.phprojekt.com/ |
  • 37. phpUnderControl • Cruise Control • PHPUnit • PHPCodeSniffer • PHPDocumentor • http://www.phpundercontrol.org |
  • 39. Buildix http://buildix.thoughtworks.com/ Buildix includes: • Subversion for Source Control • Mingle for Agile Project Management • Cruise Control for Continuous Integration • Trac as a wiki and bug-tracker • …plus a little bit of our own ThoughtWorks magic, to glue it all together |
  • 40. Learnings / Ideas • For Local development: Set up a local DNS server that resolves all project names to 127.0.0.1 • Example: <projectname>.<customername>.local • For SCM servers, File System can make a big difference. Choose the right one! |
  • 41. Reference to tools • Zend Studio: http://www.zend.com/products/zend_studio • Cruise Control: http://cruisecontrol.sourceforge.net/ • Xinc: http://code.google.com/p/xinc/ • Apache ANT: http://ant.apache.org/ • PHP Alternative to ANT: http://phing.info/ • Subversion: http://subversion.tigris.org/ • Tortoise SVN Explorer Extension: http://tortoisesvn.tigris.org/ • Trac SVN+ Technical Project Management: http://trac.edgewall.org/ • Nagios: http://www.nagios.org/ • Zend Platform: http://www.zend.com/de/products/zend_platform • PHPUnit: http://www.phpunit.de/ • Selenium: http://www.openqa.org/selenium/ |
  • 42. Books I found useful • „Projekt-Automatisierung“, Mike Clark, Carl Hanser Verlag, München, 2006 • (english: „Pragmatic Project Automation – How to build …“, The Pragmatic Programmers, LLC. 2004 • Subversion Book: http://svnbook.red-bean.com/ • “Effektive Softwarearchitekturen”, Gernot Starke, Hanser, 2005 • “Organisational Patterns for Agile Software Development”, Coplien, Harrison, Lucent Technologies, Prentice Hall, 2005 • “Test Driven Development. By Example”, Addison-Wesley, Kent Beck, 2002 |