continuous delivery & one touch deployment
TRANSCRIPT
Event Sponsors:
CONTINUOUS DELIVERY & ONE TOUCH DEPLOYMENT
SPIN PRESENTATION
By Rustin Daniels of Story Wall Technology Consulting
Wednesday 20th June 2012, 6pm, Bandwidth Barn, Cape Town
Manual Error Prone Process
Deployment need not be Bureaucratic
Incorrect TDD Practices Distinction between white box / black box testing. Having unit tests that hit the file system or database.
Monolithic Codebase Not implementing RESTful or Soap services. Not implementing component based architectures. One application solution for entire application instead of multiple solutions.
Feature Branching Not working on mainline. Not integrating work into mainline everyday.
Current Practices
Shorten the Feedback Loop Develop on mainline. Integrate early. The earlier it fails, the earlier we fix it, the less it will cost.
Holistic Approach to Software Development & Delivery C/D optimizes the entire process of development.
Design & Develop Testable Software & Infrastructure
Software Best Practices By automating we implement software best practices in development, test and
deployment. We start focusing on non functional practices: security, performance, load, latency etc.
Reduce Risk
Goal Of Continuous Delivery
Design for Testability Developers should design API’s that are testable. Use mocking framework / better software design. Adopt an acceptance test framework for testing specifications and business rules.
- FitNesse. - Cucumber. - Jbehave. - Spock.
Develop on Mainline
Component Based Architecture Develop loosely coupled systems architecture using Soap or RESTful interfaces.
Use Advanced CI Servers with a built-in Artifact Repository Good examples of these are ThoughtWorks GO and UrbanCode AnthillPro.
Version Control Everything Ensure your code, database and everything else needed to test & run your application is
version controlled. Good examples of database versioning are dbDeploy & Liquibase.
Where To Start With Continuous Delivery
Its simple and completely Automated
Creates a Test Bed Easily and quickly expand your environment infrastructure.
Self Serviced Environments Give testers the ability to do self service deployments into the environments they
manage.
How the Cloud Helps
How long will it take to develop a Continuous Delivery system? It should take approximately 8 weeks. However, before attempting to develop a C/D
platform you should make sure that your systems are designed to be testable.
I agree with Automation but I still feel we need manual testing! Yes I agree. We have exploratory test environments to manually test in addition to
automated testing.
How does Continuous Delivery compare to Continuous Deployment? With Continuous Deployment every check-in goes through a number of automated tests.
If it passes those tests it automatically gets deployed to production. In this environment you need comprehensive regression test suites and extremely high code coverage.
With Continuous Delivery a release candidate goes through a number of environments and is quality vetted by automated and manual testing before sign off to production.
Questions & Answers