Date post: | 18-Mar-2018 |
Category: |
Technology |
Upload: | itcamp |
View: | 353 times |
Download: | 0 times |
Sailing towards Continuous Delivery
Liviu Mandras-Iura
@ITCAMPRO #ITCAMP17Community Conference for IT Professionals
Why Continuous Delivery?
Reduced cycle time
Lower Risk, higher ROI
https://www.infoq.com/minibooks/continuous-delivery-overview
https://www.infoq.com/minibooks/continuous-delivery-overview
Improved quality
=
happy users
The challenge!
There is no free lunch
Initial cost in tooling/hardware
Cultural shift
Knowledge cost
Hard doing it by the book
Great news:
you dont have to
The bottom line
CD will give you:
+ Lower risk
+ Frequent value delivery
+ Higher quality
- Short term costs
GOLD
SILVER
PARTNERS
PLATINUM
POWERED BY
@ITCAMPRO #ITCAMP17Community Conference for IT Professionals
Many thanks to our sponsors & partners!
Liviu Mandras-Iura
30 years old
Software Architect @
Into programing for 1/3
@ITCAMPRO #ITCAMP17Community Conference for IT Professionals
Asses initial position
The deployment pipeline basics
Pipeline stages
Agenda
Everything
Manual
Continuous
Delivery
Continuous
Deployment
Continuous
Integration
You might be here
Manual
CD
Culture
&
Organization
Design
&
Architecture
Build
&
Deploy
Test
&
Verification
Information
&
Reporting
Manual
CD
Culture
&
Organization
Design
&
Architecture
Build
&
Deploy
Test
&
Verification
Information
&
Reporting
Continuous delivery can scale down
Deployment Pipeline
Artifact
repository
Source code
ProductionPerformance Stage User Acceptance
StageCommit Stage Acceptance Stage
BIN
BIN
Deployment pipeline
Where do you start?
Start automating your current build process
My Process
Typical SCRUM-BAN process
Releases every 2 weeks
Gitflow branching model
Branching Model
https://www.atlassian.com/git/tutorials/comparing-workflows
https://www.atlassian.com/git/tutorials/comparing-workflows
My Environment
Machine1 Machine 2
DEV ACC TEST
QA TRN
PRODUCTION
Windows Server 2008 R2
IIS 7.5
.NET 4.5.2
Windows Server 2012 R2
IIS 8.5
.NET 4.5.2
The Commit Stage
ProductionPerformance UATCommit Acceptance
Commit Stage
Rule: Commit often on trunk
No branching
Commit Stage
But Gitflow = branches
(What the hack?!)
Commit Stage
Rule: Fast build process
Commit Stage
Commit Stage
Rule: Run test suite
before committing
Commit Stage
People forget to run the test suite
Commit Stage
Solution: preflight build
Commit Stage
Create a good test suite
Dont use broken builds
Keep the build green
Fast fix or revert
Shared code ownership
Do TDD
Commit Stage
Commit Stage
Commit Stage
Dev CI
Preflight
Code
analysis
DEV
Commit Stage
Commit Stage
Dev CI
Preflight
Code
analysis
DEV
Release Artifact
Repository
BIN
Commit Stage
The Acceptance Stage
ProductionPerformance UATCommit Acceptance
Acceptance Stage
More important than you think
yes, you, the developer
Acceptance Stage
Derived from acceptance criteria
Acceptance Stage
Executable specifications
Given some contextWhen some action is performedThen observable effects happen
Acceptance Stage
Good acceptance tests
=
Carefully designed tests
Acceptance Stage
Tests are first class citizens
Production
codeTest code
Acceptance Stage
Test state management
Funny story
Acceptance Stage
Why?
Acceptance Stage
Acceptance Stage
What we did
Acceptance Stage
Devs & QA shared ownership
Acceptance Stage
Acceptance Specification
Given-When-Then
Test Implementation
DSLNo UI references
Test Framework
Window Driver PatternPage Object Pattern
Web Driver
Selenium
My Pipeline
The pipeline so far
My Pipeline
Source code Commit Stage
Acceptance Stage
DEV
Artifact
RepositoryBIN
The Performance Stage
ProductionPerformance UATCommit Acceptance
Performance Stage
Derived from acceptance tests
Performance Stage
Get correct metrics!
Performance Stage
No automated performance testing
The User Acceptance Stage
ProductionPerformance UATCommit Acceptance
User Acceptance Stage
DEV
Commit Stage
Dev CI
Preflight
Code
analysisRelease
Artifact Repository
BIN
QA
BIN
UAT Stage
Production Stage
ProductionPerformance UATCommit Acceptance
Production Stage
One click deploy and rollback
Production Stage
Zero down time deployments
Production Stage
Users
Router
X X+1
Canary release
Production Stage
Users Load Balancer
Web Server DB Server
X
X+1
X
X+1
Blue-Green
deployment
Production Stage
We take advantage of
timezone difference
My Pipeline
MergeSource code UAT Stage LiveCommit Stage
Acceptance Stage
My Pipeline
But there is more
Acceptance Stage
My Pipeline
Merge
Source code
Commit Stage
Dev CI
Release
Deploy & Run
tSQLt Tests
Deploy DEV
DEV
Run Acc Tests
ACC
TEST
Deploy Live
PROD
UAT Stage
QA
BIN BIN
BIN BIN BIN
Acceptance Stage
My Pipeline
Merge
Source code
Commit Stage
Dev CI Deploy & Run
tSQLt Tests
Deploy DEV
DEV
Run Acc Tests
ACC
TEST
Deploy Live
PROD
UAT Stage
QA
BIN BIN
BIN BIN BIN
Summary and
conclusions
Summary
Reliable build process
Push button release and rollback
Separate DEV cycle from UAT cycle
Some level of quality built in
Time
Summary
When to stop?
It depends!
Summary
Value
Investment0
Summary
Business testing lags behind
Tools and processes can help you
If you use them
Skills are required but dont overthink it
Just start and evolve!
Barely on Facebook
liviu.mandras
https://www.linkedin.com/in/liviu-mandras-iura-030b4021/
Thank You!
@ITCAMPRO #ITCAMP17Community Conference for IT Professionals
@ITCAMPRO #ITCAMP17Community Conference for IT Professionals
Q & A