agile software factory - cloud expo / devops summit 2014 demo
DESCRIPTION
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.TRANSCRIPT
NOVEMBER 14
Agile Software Factory Demo
1
Max Martynov, VP of Technology Grid Dynamics
Project X: Day 1
2
Feature H As a customer, I want …, so that …
Feature G As a customer, I want …, so that …
Feature C As a customer, I want …, so that …
Feature D As a customer, I want …, so that …
Feature B As a customer, I want …, so that …
Feature A 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 …
Product Backlog Development Operations
Future production
env
(doesn’t exist yet)
Future Production
Dev workstation
Project X: Day 10
3
Feature H As a customer, I
Feature G As a customer, I
Feature C As a customer, I
Feature D As a customer, I
Code B ………………… ………………… …………………
Feature E As a customer, I
Feature M As a customer, I
Feature X As a customer, I
Product Backlog Development Operations
Future production
env
(doesn’t exist yet)
Future Production
Code A ………………… …..……bug… …………………
Project X: Implementing Continuous Delivery
4
?
Continuous Delivery infrastructure requires diverse toolset. There is no single tool that implements CICD infrastructure end-to-end.
Deployment Automation
Infrastructure Code Versioning, Analysis & Review
Test Automation
Continuous Integration Environments & Deployments Management
Database Management
Project Management
Agile Software Factory
5
Agile Software Factory Pre-Integrated Continuous Delivery Infrastructure and Tooling
6
Project X: Day 1 (Agile Software Factory)
7
Feature H As a customer, I want …, so that …
Feature G As a customer, I want …, so that …
Feature C As a customer, I want …, so that …
Feature D As a customer, I want …, so that …
Feature B As a customer, I want …, so that …
Feature A 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 …
Product Backlog Development Operations
Future production
env
(doesn’t exist yet)
Future Production
Continuous Integration, Continuous Delivery
Agile Software Factory
Agile Software Factory: Dashboard
8
Agile Software Factory: Jenkins – Selenium
9
Agile Software Factory: IDE – Gerrit - Jenkins
10
1. Notification about a new code review request
2. Approving code after review
Agile Software Factory: Jira – Jenkins
11
Agile Software Factory: Jira – Gerrit
12
Agile Software Factory: Email – Jira – Jenkins
13
Agile Software Factory: Gerrit - Jenkins
14
Agile Software Factory: Jenkins – Code Analysis
15
Agile Software Factory: Static Code Analysis
16
Agile Software Factory: Checkstyle
17
Agile Software Factory: PMD
18
Dynamic Environments & DevTest Cloud
20
Public cloud (Virtual Private Cloud)
Quota-limited open experimentation area
• Problem ─ Shortage or rigidness of corporate datacenter resources slows down development process and hampers innovation
• Solution
─ Use public cloud to host developer’s sandboxes and QA environments
Dev Sandbox
Internal datacenter
Performance testing
environment
Staging environment
Production environment
Dev Sandbox On demand 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)
Branching Strategy (GitFlow)
21
Feature Dev Release Master Hotfix
Build & Deploy
Smoke
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
New feature
Latest changes from Dev
Merge to Dev
Development in Dev continues
Feature implementation (code & tests)
Ready for release Final fixes in
Release branch
Go to production Update Dev branch
Development in Dev continues
Urgent bugfix
Deploy to production Update Dev branch
with bugfix
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
QA Automation Process Vision
23
Application development
Automatic functional tests implementation
Automatic performance tests implementation
Automatic test
execution and
reporting
Application development Functional tests execution Performance tests execution
Release (Months)
Release Candidate
Release Candidate
Sprint (Weeks)
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
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
6. Functional test
Change ……………
Change ……………
Change ……………
Change ……………
Agile Software Factory: Demo (dev branch)
25
dev fb-x
7. Merge to dev
Change ……………
dev fb-x
Change ……………
dev fb-x
Change ……………
dev fb-x
Change ……………
dev fb-x
Change ……………
dev fb-x
Change ……………
8. Code review 9. Build, analyze, unit test
10. Functional test 11. Deploy 12. Integration test
Agile Software Factory: Demo (branching & pipelines)
26
Feature Dev
Build
Unit test
Build
Unit test
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
Get latest changes
Ongoing development
Merge to Dev
Functional test
Deploy
Integration test
2 min 2-3 min
3-5 min
2-3 min
10-15 min
Release
27
Release Candidate
……………………….. ……………………….. ………………………..
13. Deploy to Production
QA Environment (static & manual)
Project X: Day Launch - 1 (Best Case)
28
Development Operations
Production ………………….. ………………….. ……misconfig. ………………….. ………………….. …network….. ………………….. ………………….. …………DB........
Production
Code H ………………….……bug…….
Code G ………………….…………………. …
Code C ……bug…….………………….
Code D ………………….………………….
Code B ………………….………………….
Code A ………………
….
……bug………
Code E ………………….
………………….
Code M ………………….………………….
Code X ………………….………………….
CI
Project X: Launch
29
Production
Code H ………………….………………….
Code G ………………….…………………. …
Code C ………………….………………….
Code D ………………….………………….
Code B ………………….………………….
Code A ………………
….
………………….
Code E ………………….
………………….
Code M ………………….………………….
Code X ………………….………………….
code bug
Data Z ………………….………………….
Data F ………………….
………………….
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.
Enabling Technologies
Agile Software Factory Software Engineering Assembly Line
griddynamics.com
Qubell Enterprise DevOps Platform
qubell.com
30