Continuous Deployment JEFFREY KNAPP 8/6/14. Introduction Why is it valuable How to achieve What to...

Preview:

Citation preview

Continuous DeploymentJEFFREY KNAPP

8/6/14

Introduction Why is it valuable How to achieve What to consider

Why? - Value To the end client

◦ Rapid delivery, less time from idea to production To the company

◦ Less software inventory◦ Consistent deployment process

To the team◦ Less effort to deploy◦ More frequent system testing feedback

Why? - Consistency Consistent process Consistent testing Reproducibility

Why? - Quality Testing strategy and design are taken into account up front Consistent testing methods and execution Quality checks in deployment process ensure quality releases

Implementation – Continuous Integration

Continuous Integration

Continuous Delivery

Continuous Deployment

SourceControl

Readyto Run

Ready forProduction

InProduction

Implementation – Continuous Delivery

Continuous Integration

Continuous Delivery

Continuous Deployment

SourceControl

Readyto Run

Ready forProduction

InProduction

Implementation – Continuous Deployment

Continuous Integration

Continuous Delivery

Continuous Deployment

SourceControl

Readyto Run

Ready forProduction

InProduction

Implementation – Building a Deployment Pipeline Pros

◦ Efficient◦ Easy to implement◦ Quick to deploy

Cons◦ Low confidence level◦ Inconsistent quality

Source Control

Production

Implementation - Testing Benefits

◦Confidence◦Consistent quality

Types◦Unit◦ Integration◦Acceptance

Implementation – Building a Deployment Pipeline Pros

◦ Higher confidence level◦ Consistent quality

Cons◦ More difficult to implement◦ Takes longer to deploy

Source Control

Unit Tests

Integration Tests

Acceptance Tests

Production

Implementation – Deployment Pipeline

Implementation – Putting it all together

ContinuousIntegration

ContinuousDelivery

ContinuousDeployment

Considerations Business considerations between delivery and deployment◦Up to engineering to achieve continuous delivery◦Continuous deployment may be affected by business processes◦ Segregated networks◦ Controlled release dates

Considerations Amount of testing (Time vs. Confidence)

◦Generally, higher confidence requires more testing which requires more time to implement and deployment process takes longer

◦How much confidence is required?◦ Defined by the team◦ Defined by the company◦ Defined by the client◦ Defined by the market

Considerations Automated vs. manual testing◦Anything repetitive should be automated

◦ Humans are poor at repetitive tasks◦ Computers are good at repetitive tasks

◦More efficient◦ QA can focus on designing tests and implementing automated

testing (which is an investment with an ROI that increases over time)◦ Manual testing does not scale well

Considerations Single tenant vs. multi tenant systems

◦Single tenant = one production environment per client◦Multi tenant = one production environment for all clients◦Don’t forget about demo and sales environments

Conclusion By implementing continuous deployment, value can be delivered to the client quicker, more consistently, and with higher quality.

Q&A