migrating to continuous delivery with tfs 2017 - liviu mandras-iura
Post on 18-Mar-2018
353 Views
Preview:
TRANSCRIPT
-
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/
-
liviu.mandras@evozon.com
-
Thank You!
@ITCAMPRO #ITCAMP17Community Conference for IT Professionals
-
@ITCAMPRO #ITCAMP17Community Conference for IT Professionals
Q & A
top related