Continuous Delivery offers a proven solution for streamlining software design that enables rapid, reliable, and repeated delivery code enhancements at low risk and with minimal overhead. Using a framework that automates processes from code design to deployment, software can be developed to high standards while reducing time-to-market. Continuous Delivery not only establishes consistent delivery of higher quality software with greater reliability, it does so at a lower overall cost.
1. NOVEMBER 14
Agile Software Factory
Demo
1
Max Martynov, VP of Technology
Grid Dynamics
2. Project X: Day 1
Future
Production
2
Product
Backlog Development Operations
Feature A
As a customer, I
want …, so that
…
Feature H
As a customer, I
want …, so that
…
Feature D
As a customer, I
want …, so that
…
Feature C
As a customer, I
want …, so that
…
Feature G
As a customer, I
want …, so that
…
Feature B
As a customer, I
want …, so that
…
Feature E
As a customer, I
want …, so that
…
Feature M
As a customer, I
want …, so that
…
Feature X
As a customer, I
want …, so that
…
Future
production
env
(doesn’t
exist yet)
3. Product
Backlog Development Operations
Dev workstation
Project X: Day 10
Future
Production
3
Feature H
As a
customer, I
Feature D
As a
customer, I
Feature C
As a
customer, I
Feature G
As a
customer, I
Code B
…………………
…………………
…………………
Feature E
As a
customer, I
Feature M
As a
customer, I
Feature X
As a
customer, I
Future
production
env
(doesn’t
exist yet)
Code A
…………………
…..……bug…
…………………
4. Project X: Implementing Continuous Delivery
Test Automation
Environments & Deployments Continuous Integration
4
Continuous Delivery infrastructure
requires diverse toolset.
There is no single tool that
implements CICD infrastructure
end-to-end.
?
Deployment Automation
Management
Code Versioning, Analysis & Review Infrastructure
Project
Management
Database
Management
7. Project X: Day 1 (Agile Software Factory)
Future
Production
7
Product
Backlog Development Operations
Feature A
As a customer, I
want …, so that
…
Feature H
As a customer, I
want …, so that
…
Feature D
As a customer, I
want …, so that
…
Feature C
As a customer, I
want …, so that
…
Feature G
As a customer, I
want …, so that
…
Feature B
As a customer, I
want …, so that
…
Feature E
As a customer, I
want …, so that
…
Feature M
As a customer, I
want …, so that
…
Feature X
As a customer, I
want …, so that
…
Future
production
env
(doesn’t
exist yet)
Continuous Integration, Continuous Delivery
Agile Software Factory
19. NOVEMBER 14
Thank You!
19
Max Martynov, VP of Technology, Grid Dynamics
mmartynov@griddynamics.com
20. Dynamic Environments & DevTest Cloud
20
─ Shortage or rigidness of corporate datacenter resources slows down development process and hampers innovation
─ Use public cloud to host developer’s sandboxes and QA environments
Public cloud
(Virtual Private Cloud)
• Problem
• Solution
Quota-limited open experimentation area
Dev Sandbox
Internal datacenter
Performance
testing
environment
Staging
environment
Production
environment
ODne vd eSmaannddb o x
developer’s sandbox
Project X area
(quota-limited, created on demand per project)
Smoke testing
environment
Regression
… environment
Developer’s sandbox
Project Y area
(quota-limited, created on demand per project)
21. Branching Strategy (GitFlow)
21
Feature Dev Release Master Hotfix
Latest changes from Dev
Merge to Dev
Build & Deploy
Smoke
New feature
Development in
Dev continues
Build & Deploy
Regression
Performance
(optional)
Build & Deploy
Regression
Performance
Build & Deploy
Manual(UI/UX) Manual(UI/UX)
Build & Deploy
Regression
Performance
(optional)
Smoke
Dev
Manager
Director of
Engineering
Release
Manager
Director of
Operations
Release
Manager
Pipelines corresponding to each branch
Organization roles responsible for maintaining pipelines for each branch in “green” state
Feature
implementation
(code & tests)
Ready for release
Final fixes in
Release branch
Update Dev branch Go to production
Development in
Dev continues
Urgent bugfix
Deploy to production
Update Dev branch
with bugfix
22. QA Automation Vision
22
Manual test suite
(typically end-to-end user acceptance
tests)
Automated
Functional Modular
(test each service or application
individually with stubbed external
dependencies and test data)
Auto Integration
(testing integration of each service or
application with real external
dependencies and production data)
User acceptance
(testing system as a whole using UI with
real external dependencies and production
data)
Manual execution
time –
weeks
Full automatic
execution
time –
hours
1. Save on manual QA effort and reduce time to run regression automatically
2. Create fine-grained modular tests for each service or application to increase test coverage
3. Implement more tests to increase quality – running tests automatically is cheap
Staged execution: start
with faster and more
granular tests to find
defects quickly
23. QA Automation Process Vision
23
1. Integrate QA automation team with Development team to increase productivity and efficiency
2. Use Acceptance Test Driven Development approach, implement automatic tests together with code development
Release (Months)
Application development Functional tests
Application development
Automatic functional tests
implementation
Automatic performance tests
implementation
execution Performance tests execution
Automati
c test
execution
and
reporting
Release Candidate
Release Candidate
Sprint (Weeks)
24. Agile Software Factory: Demo (feature branch)
24
Story
As a customer, I
want …, so that
…
dev
fb-x dev
fb-x
dev
fb-x
dev
fb-x
dev
fb-x
1. Create story 2. Create
feature branch
3. Commit code
4. Code review 5. Build, analyze,
unit test
Change
……………
6. Functional test
Change
……………
Change
……………
Change
……………
25. Agile Software Factory: Demo (dev branch)
25
7. Merge to dev
dev
fb-x
Change
……………
8. Code review 9. Build, analyze,
dev
fb-x
Change
……………
unit test
dev
fb-x
Change
……………
10. Functional test 11. Deploy 12. Integration test
dev
fb-x
Change
……………
dev
fb-x
Change
……………
dev
fb-x
Change
……………
26. Agile Software Factory: Demo (branching & pipelines)
26
Feature Dev
Build
Unit test
Get latest changes
Build
Unit test
Ongoing
development
Build
Unit test
Build
Functional test
Build
Unit test Unit test
New feature
Get latest changes
Ongoing
development
Feature
implementation
(code & tests)
Ready for release
Feature
(Code Review)
Dev
(Code Review)
Local Repo
Submit to code review Merge
Merge to Dev, submit to code review
Merge to Dev
Functional test
Deploy
Integration test
2 min 2-3 min
3-5 min
2-3 min
10-15 min
27. Release
27
13. Deploy to Production
Release
Candidate
………………………..
………………………..
………………………..
28. Project X: Day Launch - 1 (Best Case)
QA Environment (static & manual)
Production
28
Development Operations
Production
…………………..
…………………..
……misconfig.
…………………..
…………………..
…network…..
…………………..
…………………..
…………DB........
Code A
………………….
……bug………
Code H
………………….
……bug…….
Code D
………………….
………………….
Code C
……bug…….
………………….
Code G
………………….
………………….
…
Code B
………………….
………………….
Code E
………………….
………………….
Code M
………………….
………………….
Code X
………………….
………………….
CI
29. Project X: Launch
29
Production
Data F
………………….
………………….
Code A
………………….
………………….
Code H
………………….
………………….
Code G
………………….
………………….
…
Code C
………………….
………………….
Code D
………………….
………………….
Code B
………………….
………………….
Code E
………………….
………………….
Code M
………………….
………………….
Code X
………………….
………………….
code
bug
Data Z
………………….
………………….
firewall
issue
DB
issue
First deployment on staging / production doesn’t go well.
However, this is the point when
development and operations
start collaborating first.