SlideShare a Scribd company logo
1 of 30
Download to read offline
AGILE PLAYBOOK FOR
 SOFTWARE TEAMS
    Enterprise Drupal Edition
THE SOFTWARE CRAFTSMAN
Software Craftsman n. A man who practices the software craft.


1. “software craft”
A craftsman believes that software is a craft. This is important because not everyone believes this. A craftsman takes pride in his work an
strives to do the best job he can. He believes that writing good software requires skill and careful attention. That software is not something
that can be manufactured nor can it be delivered faster by merely adding more bodies.


2. “practices”
A craftsman practices his craft, always striving to become more skillful, to produce better software.

There are traditionally 3 stages of craftsmanship:

  1.   Apprentice
  2.   Journeyman
  3.   Master


No matter which stage one may be in, as long as he practices software as a craft, he is a craftsman.


3. “A man”
Technically the term “craftsman” is gender specific. Women are just as capable of software craftsmanship. Indeed, I’d like to see more software
craftswomen out there. In an effort not to alienate anyone we should use the term “software craftsperson” more liberally.
APPLICATION DEVELOPMENT:
        MANIFESTO
               We are continually uncovering better ways of developing
software by doing it and helping others do it. Through this work we have come to value:

             Individuals and interactions over processes and tools


              Working software over comprehensive documentation


               Customer collaboration over contract negotiation


                   Responding to change over following a plan


      That is, while there is value in the items on
 the RIGHT, we value the items on the LEFT more.
WE FOLLOW THESE 12 PRINCIPLES
                                                       Working software is the primary measure of progress.
    Our highest priority is to satisfy the customer
  through early and continuous delivery of valuable
                      software.

      Welcome changing requirements, even late         Agile processes promote sustainable development. The
   in development. Agile processes harness change        sponsors, developers, and users should be able to
      for the customer's competitive advantage.                 maintain a constant pace indefinitely.


  Deliver working software frequently, from a couple   Continuous attention to technical excellence and good
  of weeks to a couple of months, with a preference                   design enhances agility.
              to the shorter timescale.


       Business people and developers must              Simplicity--the art of maximizing the amount of work
     work together daily throughout the project.                         not done--is essential.



  Build projects around motivated individuals. Give           The best architectures, requirements, and
       them the environment and support they                 designs emerge from self-organizing teams.
      need, and trust them to get the job done.


      The most efficient and effective method             At regular intervals, the team reflects on how to
      of conveying information to and within a           become more effective, then tunes and adjusts its
   development team is face-to-face conversation.                      behavior accordingly.
OUR OPEN SOURCE MENU
         FOR SUCCESS
Our Development Group:
• Is part of a global community with a common vision

• Is a pool of talented and motivated development professionals

• Is a mix of open source and commercial

• Follows an organized, light weight software development approach

• Has a clear leadership structure

• Excels at communication

• Is a business model for success

• Is Agile
SCRUM: A LIGHT WEIGHT
      DEVELOPMENT PROCESS
Based on Agile Programming
methodology and Getting Real, our    •   Supported with web-enabled tools
Scrum process is:                    •   Automated testing integrated with the
                                         software development cycle
  •   High intensity design, test,
                                     •   Short product delivery iterations to
      implementation cycle               provide constant business value
OUR DELIVERY MODEL:
         A “CONTINUOUS” AGILE PROCESS
We will compresses the standard Analyze, Design, Implement, Test cycles into a Continuous
   Agile Process of Design, Develop, Implement and where Testing is always being done.

        Waterfall                              Iterative                                        Agile
                                                                                                (Continuous)

                                                                                        … Test …
                                                                                Reqs.           Design          Code
                                Requirements
          Requirements
                                   Design
                                                                                     … Test …
                                   Code                                       Reqs       Design          Code
             Design                             Requirements
                                    Test                                                … Test …
                                                   Design
                                                                                Reqs.        Design        Code

             Code                                  Code
                                                               Requirements
                                                                                             … Test …
                                                    Test                             Reqs.       Design         Code
                                                                  Design
              Test                                                                              … Test …
                                                                  Code
                                                                                        Reqs.         Design      Code

                                                                   Test
OUR DELIVERY MODEL:
                       SEQUENTIAL VS. OVERLAPPING DEVELOPMENT
  Sequential




               Requirements          Design               Code   Test




                              Rather than doing all
                                of one thing at a
                                     time...
Overlapping




                                 ...Our team does a
                               little of everything all
                                       the time
OUR AGILE
DEVELOPMENT MODEL
 Behavior Driven Development (BDD)
MAPPING AGILE BDD
OUR AGILE PRACTICE
OUR AGILE PRACTICE
CODE MOVES FORWARD,
    CONTENT MOVES BACKWARD
While the content and the
software lifecycles will be de-
coupled, they are also
interdependent. Developers need
realistic content to develop and
test code with, and the content
relies on the code to define and
display itself.
The standard approach for managing these
interdependencies is “code forward, content          Functionality and configuration is developed in Development Environment
backward.” Content and configuration is
developed in the Development environment and
tested in the QA environment. When it is ready, it         Functionality and configuration is tested in QA Environment
is deployed to the Live environment for UAT and
Production instances. Content is developed and
previewed in the Production instance that contains      Content is developed and previewed in Staging (UAT) Environment
the Staging (or preview/UAT) and Live content
states. Periodically, content should be published
backwards to the Development and QA instances
so that testing can be realistic as possible.        Production contains the Staging (UAT) and Live Content and Code states
TEST. DEVELOP. TEST. REVIEW. DEPLOY.
   Please note the complete lack of developers in this picture...only Hudson, or similar automated build service, can deploy
                                    code, directly from the code revision control system.




                                            Continuous Integration
Environment




                              Test Automation
                                                                                                        Build & Release




                                                                                                          (UAT/Prod)


                          Deploy                                 Deploy                        Deploy



                   Dev                                    QA                                    Live
               Code Quality Control                     Source Code
                                                                                             Code Revision Control
SOURCE CODE MANAGEMENT:
                  DISTRIBUTED VERSION CONTROL SYSTEMS (DVCS)
In a DVCS (such as Git, Mercurial, Bazaar
or Darcs), clients don’t just check out the
latest snapshot of the files: they fully
mirror the repository. Thus if any server
dies, and these systems were
collaborating via it, any of the client
repositories can be copied back up to the
server to restore it. Every checkout is really
a full backup of all the data.



Git Basics:
•Snapshots, Not Differences
•Nearly Every Operation Is Local
•Git has integrity (checksum everything)
•Git Generally Only Adds Data
•Operates in three states (working,
staging, local)


 http://progit.org/book/
DVCS BRANCH PATTERN:
   FEATURE BRANCHING
DVCS: FEATURE BRANCHING EXAMPLE
GIT WORKFLOW
CONTINUOUS INTEGRATION
      WORKFLOW




  Start         Finish
RELEASE EARLY, RELEASE OFTEN…
             RELEASE QUALITY.
	

   Although our web developers will be tempted to keep their code under wraps until it is perfect,
      this process will encourage them to release their code as soon as it passes its intended tests.

	

   The longer the code is visible to the community (other developers, team leads, testers, managers,
      clients, etc.) the better integrated it will be.


                         All developers agree to keep their software defect free.

      Although everyone is encouraged to submit
      their code early, the code must compile and
                   pass nightly tests

      A continuous build process sends e-mails to
      developers who check in code that does not
                       compile

        More effectively, the development group
        enforces the commitment though peer
                         pressure
UNIT TESTS + ACCEPTANCE TESTS
Building The Code Right                              Building The Right Code
    Automated unit tests are white-box tests that  Automated tests are about building the right
     describe and verify very low-level behavior.         code in the first place: the code with the most
     Especially when working test-first, developers        business value. While developers may be
     rely on such tests to make sure that the             involved in writing such tests, they are not just
     design is sound, and that there are no defects.      for our developers. Tests are especially for
     Such tests are built by and largely for              customers, business analysts, testing/quality
     developers, and can be independent of                professionals, support staff, management, and
     functionality.                                       all other stakeholders who need evidence
                                                          that the project is producing solid return on
                                                          investment, every step of the way.
    Our web team uses SimpleTest to perform
     test-driven development. However, if our
     TDD effort is still hampered by a broken
     requirements process, we can easily end up
     building robust, lean, well-factored code with
     no business value.

AGILE TOOLS
Engineering
• Revision control
• Story Mgmt (& Issue Tracking)
• Continuous Builds
• Data Quality (Schema Analysis)
• Code Quality (Code Analysis)


Documentation and Product Management
• Project Management (& Issue Tracking)
• Community Communication & Collaboration
• Technical Documentation
• Product Documentation (End User)



Collaboration & Communication 
• Group Wiki
• Live Chat
• Video Chat
• File Sharing
APPLICATION DEVELOPMENT
          STACK


 Application Development Stack (ADS):
          Architectural Patterns
ADS: LAMP PATTERN
ADS LAMP PATTERN:
                   DRUPAL STACK
   Through several rounds of benchmarking internally as well as external benchmarks performed by
industry leaders, we have found that our previous web application stack for Drupal requires significant
hardening for large scale implementations. In light of this, architectural analysis and our commitment to
open source, Drupal, LAMP and of course, growth, the below grid outlines our standard Drupal Stack,
        hardened by the enterprise scale and commercially supported PHP stack, Zend Server.

                                   Varnish

                              Pressflow Drupal

                MemCached

                          Zend PHP + APC                  Apache Solr
       MySQL
                                Apache

                            CentOS/RHEL Linux
PHP WEB APPLICATION
                SERVER: ZEND
       Zend Server is a complete, enterprise-ready Web Application Server for running and managing PHP
       applications that require a high level of reliability, performance and security on Linux, Windows or IBM i.

                                   Business-Grade PHP
An up-to-date, tested and supported PHP stack ensures high reliability, enhances security and
                                increases staff productivity

    Deploy with confidence                       Rapid response to problems         Optimal application performance
    A complete and consistent      Advanced application monitoring                      Built-in optimization and
environment used in development,      and diagnostics enable early                     acceleration ensures high
 testing and production eliminates problem detection and quick root                  performance and low resource
       many of the problems                  cause analysis                                      utilization
 encountered during deployment




                    Highlights:
      Enhance PHP Application Reliability and Security               Quickly Pinpoint Root Cause of Problems With Code Tracing
             Ensure Successful Deployments                                          Boost Application Performance
         Detect Problems Before the Phone Rings                      Job Queue: Offload Execution of Long-running PHP Scripts
APPLICATION PERFORMANCE
     +
             MONITORING
         What is Application Performance Monitoring?

Application performance monitoring (APM)
detects slow response times, poor throughput,
user errors, and other performance problems, and
then guides us to diagnose the cause. It also
provides powerful features for tuning and
optimizing our apps such as capacity planning and
scalability reporting.


APM helps to ensure the health and availability of
our production and lab PHP web apps — such as
Drupal. We can monitor overall application
response time and throughput including
memcached, database and external services. We
can go deeper into individual web transactions
and database calls to MySQL and all the way
down to SQL statements. Zend Server
(commercial) + New Relic RPM provides this to
us, on demand.
CONFIGURATION MANAGEMENT
Taking configuration management to the automation level allows us to create a consistent environment spec for our
applications, albeit a lab, test, or even production environment. We utilize Chef, an open source systems integration
framework, to bring the benefits of configuration management to our entire web infrastructure.


The result is a fully automated infrastructure: when a new server comes on line, the only thing we have to do is tell
Chef what role it should play in the architecture.
IMPROVING QOS THROUGH A
    SIMPLE SERVICE ORIENTATED
       ARCHITECTURE (SSOA)
    To provide a more agile, autonomous, scalable, integrated and quality driven system for Enterprise Architectures and their
  applications and clients to operate within, the application stack used for web enabled applications requiring services from back
                        office systems, such as legacy systems, should consume systems as common services.
Service Creation & Mgmt
• Expose end-points, legacy interfaces, and objects as services
• Host these services as a lightweight service container



Service Mediation
• Completely separate business logic from messaging
• Shield services from message formats and protocols
• Enable location-independent service calls and provides protocol bridging


Message Routing
• Route messages based on content and rules
• Filter, aggregate and re-sequence messages



Data Transformation
• Exchange data across applications with varying data formats
• Manipulate message payload, including encryption, compression and encoding transformations
• Format messages across heterogeneous transport protocols data types
TYING THE KNOTS:
                        AGILE TOOLS
    We bring our Agile Practice, Development Model, and of course...People to tie this knot. And by people, we mean
   everyone involved in the product development life cycle, be it agile developers, business and product managers, scrum
                                     masters (or project managers), analysts or users.

   We bring this all together by using several tools to provide us integrated agile project management, issue tracking, wiki
collaboration, source code analysis and reviews, code version control to improve release planning, team communication and
                                                 customer feedback gathering.

Atlassian JIRA +                Atlassian                     Cloudbees Nectar               Sonar Crucible for
GreenHopper for                 Confluence for                 or Atlassian                   code quality and
agile project                   agile collaboration           Bamboo for                     coverage
management                      Confluence is designed         continuous                     Sonar integrates peer code
GreenHopper adds agile          to help us as, agile          integration                    review and code coverage
project management to any       developers, to plan           As agile developers we         directly into our agile
JIRA project with one click.    requirements,                 use continuous                 developer’s work habits.
GreenHopper is the perfect      collaborate on changes        integration to get the         We use Sonar to get timely
tool for managing our           and display metrics.          most from our unit tests.      feedback on our code,
product and sprint                                            We use CI to get               maintain quality metrics,
backlogs, planning sprints                                    instantaneous feedback         assesses the impact of our
and tracking our team                                         on the impact of each          tests and notifies us of test
through the entire release                                    commit and monitor             coverage gaps before it is
process.                                                      build metrics.                 too late.

                                    Best of breed

More Related Content

Featured

AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Applitools
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at WorkGetSmarter
 

Featured (20)

AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
 
ChatGPT webinar slides
ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slides
 
More than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike RoutesMore than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike Routes
 

Agile Playbook for Software Teams - Enterprise Drupal Edition

  • 1. AGILE PLAYBOOK FOR SOFTWARE TEAMS Enterprise Drupal Edition
  • 2. THE SOFTWARE CRAFTSMAN Software Craftsman n. A man who practices the software craft. 1. “software craft” A craftsman believes that software is a craft. This is important because not everyone believes this. A craftsman takes pride in his work an strives to do the best job he can. He believes that writing good software requires skill and careful attention. That software is not something that can be manufactured nor can it be delivered faster by merely adding more bodies. 2. “practices” A craftsman practices his craft, always striving to become more skillful, to produce better software. There are traditionally 3 stages of craftsmanship: 1. Apprentice 2. Journeyman 3. Master No matter which stage one may be in, as long as he practices software as a craft, he is a craftsman. 3. “A man” Technically the term “craftsman” is gender specific. Women are just as capable of software craftsmanship. Indeed, I’d like to see more software craftswomen out there. In an effort not to alienate anyone we should use the term “software craftsperson” more liberally.
  • 3. APPLICATION DEVELOPMENT: MANIFESTO We are continually uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value: Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan That is, while there is value in the items on the RIGHT, we value the items on the LEFT more.
  • 4. WE FOLLOW THESE 12 PRINCIPLES Working software is the primary measure of progress. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. Welcome changing requirements, even late Agile processes promote sustainable development. The in development. Agile processes harness change sponsors, developers, and users should be able to for the customer's competitive advantage. maintain a constant pace indefinitely. Deliver working software frequently, from a couple Continuous attention to technical excellence and good of weeks to a couple of months, with a preference design enhances agility. to the shorter timescale. Business people and developers must Simplicity--the art of maximizing the amount of work work together daily throughout the project. not done--is essential. Build projects around motivated individuals. Give The best architectures, requirements, and them the environment and support they designs emerge from self-organizing teams. need, and trust them to get the job done. The most efficient and effective method At regular intervals, the team reflects on how to of conveying information to and within a become more effective, then tunes and adjusts its development team is face-to-face conversation. behavior accordingly.
  • 5. OUR OPEN SOURCE MENU FOR SUCCESS Our Development Group: • Is part of a global community with a common vision • Is a pool of talented and motivated development professionals • Is a mix of open source and commercial • Follows an organized, light weight software development approach • Has a clear leadership structure • Excels at communication • Is a business model for success • Is Agile
  • 6. SCRUM: A LIGHT WEIGHT DEVELOPMENT PROCESS Based on Agile Programming methodology and Getting Real, our • Supported with web-enabled tools Scrum process is: • Automated testing integrated with the software development cycle • High intensity design, test, • Short product delivery iterations to implementation cycle provide constant business value
  • 7. OUR DELIVERY MODEL: A “CONTINUOUS” AGILE PROCESS We will compresses the standard Analyze, Design, Implement, Test cycles into a Continuous Agile Process of Design, Develop, Implement and where Testing is always being done. Waterfall Iterative Agile (Continuous) … Test … Reqs. Design Code Requirements Requirements Design … Test … Code Reqs Design Code Design Requirements Test … Test … Design Reqs. Design Code Code Code Requirements … Test … Test Reqs. Design Code Design Test … Test … Code Reqs. Design Code Test
  • 8. OUR DELIVERY MODEL: SEQUENTIAL VS. OVERLAPPING DEVELOPMENT Sequential Requirements Design Code Test Rather than doing all of one thing at a time... Overlapping ...Our team does a little of everything all the time
  • 9. OUR AGILE DEVELOPMENT MODEL Behavior Driven Development (BDD)
  • 13. CODE MOVES FORWARD, CONTENT MOVES BACKWARD While the content and the software lifecycles will be de- coupled, they are also interdependent. Developers need realistic content to develop and test code with, and the content relies on the code to define and display itself. The standard approach for managing these interdependencies is “code forward, content Functionality and configuration is developed in Development Environment backward.” Content and configuration is developed in the Development environment and tested in the QA environment. When it is ready, it Functionality and configuration is tested in QA Environment is deployed to the Live environment for UAT and Production instances. Content is developed and previewed in the Production instance that contains Content is developed and previewed in Staging (UAT) Environment the Staging (or preview/UAT) and Live content states. Periodically, content should be published backwards to the Development and QA instances so that testing can be realistic as possible. Production contains the Staging (UAT) and Live Content and Code states
  • 14. TEST. DEVELOP. TEST. REVIEW. DEPLOY. Please note the complete lack of developers in this picture...only Hudson, or similar automated build service, can deploy code, directly from the code revision control system. Continuous Integration Environment Test Automation Build & Release (UAT/Prod) Deploy Deploy Deploy Dev QA Live Code Quality Control Source Code Code Revision Control
  • 15. SOURCE CODE MANAGEMENT: DISTRIBUTED VERSION CONTROL SYSTEMS (DVCS) In a DVCS (such as Git, Mercurial, Bazaar or Darcs), clients don’t just check out the latest snapshot of the files: they fully mirror the repository. Thus if any server dies, and these systems were collaborating via it, any of the client repositories can be copied back up to the server to restore it. Every checkout is really a full backup of all the data. Git Basics: •Snapshots, Not Differences •Nearly Every Operation Is Local •Git has integrity (checksum everything) •Git Generally Only Adds Data •Operates in three states (working, staging, local) http://progit.org/book/
  • 16. DVCS BRANCH PATTERN: FEATURE BRANCHING
  • 19. CONTINUOUS INTEGRATION WORKFLOW Start Finish
  • 20. RELEASE EARLY, RELEASE OFTEN… RELEASE QUALITY. Although our web developers will be tempted to keep their code under wraps until it is perfect, this process will encourage them to release their code as soon as it passes its intended tests. The longer the code is visible to the community (other developers, team leads, testers, managers, clients, etc.) the better integrated it will be. All developers agree to keep their software defect free. Although everyone is encouraged to submit their code early, the code must compile and pass nightly tests A continuous build process sends e-mails to developers who check in code that does not compile More effectively, the development group enforces the commitment though peer pressure
  • 21. UNIT TESTS + ACCEPTANCE TESTS Building The Code Right Building The Right Code  Automated unit tests are white-box tests that  Automated tests are about building the right describe and verify very low-level behavior. code in the first place: the code with the most Especially when working test-first, developers business value. While developers may be rely on such tests to make sure that the involved in writing such tests, they are not just design is sound, and that there are no defects. for our developers. Tests are especially for Such tests are built by and largely for customers, business analysts, testing/quality developers, and can be independent of professionals, support staff, management, and functionality. all other stakeholders who need evidence that the project is producing solid return on investment, every step of the way.  Our web team uses SimpleTest to perform test-driven development. However, if our TDD effort is still hampered by a broken requirements process, we can easily end up building robust, lean, well-factored code with no business value. 
  • 22. AGILE TOOLS Engineering • Revision control • Story Mgmt (& Issue Tracking) • Continuous Builds • Data Quality (Schema Analysis) • Code Quality (Code Analysis) Documentation and Product Management • Project Management (& Issue Tracking) • Community Communication & Collaboration • Technical Documentation • Product Documentation (End User) Collaboration & Communication  • Group Wiki • Live Chat • Video Chat • File Sharing
  • 23. APPLICATION DEVELOPMENT STACK Application Development Stack (ADS): Architectural Patterns
  • 25. ADS LAMP PATTERN: DRUPAL STACK Through several rounds of benchmarking internally as well as external benchmarks performed by industry leaders, we have found that our previous web application stack for Drupal requires significant hardening for large scale implementations. In light of this, architectural analysis and our commitment to open source, Drupal, LAMP and of course, growth, the below grid outlines our standard Drupal Stack, hardened by the enterprise scale and commercially supported PHP stack, Zend Server. Varnish Pressflow Drupal MemCached Zend PHP + APC Apache Solr MySQL Apache CentOS/RHEL Linux
  • 26. PHP WEB APPLICATION SERVER: ZEND Zend Server is a complete, enterprise-ready Web Application Server for running and managing PHP applications that require a high level of reliability, performance and security on Linux, Windows or IBM i. Business-Grade PHP An up-to-date, tested and supported PHP stack ensures high reliability, enhances security and increases staff productivity Deploy with confidence Rapid response to problems Optimal application performance A complete and consistent Advanced application monitoring Built-in optimization and environment used in development, and diagnostics enable early acceleration ensures high testing and production eliminates problem detection and quick root performance and low resource many of the problems cause analysis utilization encountered during deployment Highlights: Enhance PHP Application Reliability and Security Quickly Pinpoint Root Cause of Problems With Code Tracing Ensure Successful Deployments Boost Application Performance Detect Problems Before the Phone Rings Job Queue: Offload Execution of Long-running PHP Scripts
  • 27. APPLICATION PERFORMANCE + MONITORING What is Application Performance Monitoring? Application performance monitoring (APM) detects slow response times, poor throughput, user errors, and other performance problems, and then guides us to diagnose the cause. It also provides powerful features for tuning and optimizing our apps such as capacity planning and scalability reporting. APM helps to ensure the health and availability of our production and lab PHP web apps — such as Drupal. We can monitor overall application response time and throughput including memcached, database and external services. We can go deeper into individual web transactions and database calls to MySQL and all the way down to SQL statements. Zend Server (commercial) + New Relic RPM provides this to us, on demand.
  • 28. CONFIGURATION MANAGEMENT Taking configuration management to the automation level allows us to create a consistent environment spec for our applications, albeit a lab, test, or even production environment. We utilize Chef, an open source systems integration framework, to bring the benefits of configuration management to our entire web infrastructure. The result is a fully automated infrastructure: when a new server comes on line, the only thing we have to do is tell Chef what role it should play in the architecture.
  • 29. IMPROVING QOS THROUGH A SIMPLE SERVICE ORIENTATED ARCHITECTURE (SSOA) To provide a more agile, autonomous, scalable, integrated and quality driven system for Enterprise Architectures and their applications and clients to operate within, the application stack used for web enabled applications requiring services from back office systems, such as legacy systems, should consume systems as common services. Service Creation & Mgmt • Expose end-points, legacy interfaces, and objects as services • Host these services as a lightweight service container Service Mediation • Completely separate business logic from messaging • Shield services from message formats and protocols • Enable location-independent service calls and provides protocol bridging Message Routing • Route messages based on content and rules • Filter, aggregate and re-sequence messages Data Transformation • Exchange data across applications with varying data formats • Manipulate message payload, including encryption, compression and encoding transformations • Format messages across heterogeneous transport protocols data types
  • 30. TYING THE KNOTS: AGILE TOOLS We bring our Agile Practice, Development Model, and of course...People to tie this knot. And by people, we mean everyone involved in the product development life cycle, be it agile developers, business and product managers, scrum masters (or project managers), analysts or users. We bring this all together by using several tools to provide us integrated agile project management, issue tracking, wiki collaboration, source code analysis and reviews, code version control to improve release planning, team communication and customer feedback gathering. Atlassian JIRA + Atlassian Cloudbees Nectar Sonar Crucible for GreenHopper for Confluence for or Atlassian code quality and agile project agile collaboration Bamboo for coverage management Confluence is designed continuous Sonar integrates peer code GreenHopper adds agile to help us as, agile integration review and code coverage project management to any developers, to plan As agile developers we directly into our agile JIRA project with one click. requirements, use continuous developer’s work habits. GreenHopper is the perfect collaborate on changes integration to get the We use Sonar to get timely tool for managing our and display metrics. most from our unit tests. feedback on our code, product and sprint We use CI to get maintain quality metrics, backlogs, planning sprints instantaneous feedback assesses the impact of our and tracking our team on the impact of each tests and notifies us of test through the entire release commit and monitor coverage gaps before it is process. build metrics. too late. Best of breed