- Waterfall model :
- Sequential appraoch
- Customer cannot see the product unless testing phase
- Major version release requires too long to process all the steps sequentially all over again
- Changing requirement during development is hard
- V-shaped model :
- Sequential approach
- Each phase in verification corresponds validation phase
- Changing requirement during development is hard
- Tests is written in verification and executed in validation phase
- Agile model :
- Iterative, cyclical approach
- Accomodates changes
- Each phase is short
- Teams work in cycles or sprints
- Unit Testing happens in each sprint to minimize risk of failure
- At the end of each sprint, a chunk of working code is released called the sprint demo (stakeholders see the functionalities and provide feedback)
- After several sprint cycle, a Minimul Viable Product (MVP) is released
- DevOps
- Incorporates agile methodology for iterative implementation
- Development and Operation teams are no longer siloed (not different, they are integrated together, creating greater collaboration, higher quality product and high velocity deployment)
- Offers automation with continuous integration as well as incorporating continuous changes in deliverables into production
- Best practices:
- Continuous Integration
- Developers regularly merge code changes in central repository
- Automated build and tests are run after each change
- Goal : Find and solve bugs, release fast update
- Continuous Delivery
- Expands CI stage
- Deploy code changes to testing environment and/or production environment after build
- Stage Responsible for creating deployment-ready build artifact through standardized tests
- Microservices
- Design approach to build single application as a set of small services
- each service runs its own process and designed for a single purpose
- services talk to other services through some API
- Infrastructure as code
- Manage infrastructure resources with code instead of manual setting
- Using code based tools to reduce manual task for setting up infrastructure
- Monitoring and Logging
- Visualize the performance
- Analyze key metrics
- Track issues / unexpected changes
- Communication and collaboration
- Brings together the workflows and responsibilities of development and operations