Juni Mukherjee, Consultant CI/CD, Lifelock
Continuous Delivery (CD) is important for a business to be sustainable. However, CD is not a discipline on it’s own (not yet), and the science behind it is rarely covered in schools.
The intended audience for this talk are engineers, architects and technical managers who are starting out to build Continuous Delivery Pipelines, or are seeking to improve ROI on their existing investments.
Every company aspires to sustainably flow their ideas into the hands of their customers, and reduce Time2Market. This talk goes into the heart of this burning topic and provides technical recipes that the audience can take away.
This talk would cover:
a) Domain Driven Design (DDD) for CD, based on concepts authored by Eric Evans
The Continuous Delivery Pipeline can be modeled as a domain.
b) How the CD Pipeline, along with its assets, can be orchestrated with Jenkins
The Continuous Delivery Pipeline domain can be orchestrated with Jenkins 2.0, aka Pipeline-as-code. Each box in the model could be authored as a stage in Jenkinsfile.
c) Pipeline patterns and anti-patterns
There are some trends that are consistently observed in the industry.
d) KPIs to measure ROI from the Pipeline
“Show me the money!”. This is the “Jerry Maguire moment”, whereby the ROI is demonstrated.
4. November 15, 2016
Domain-driven Design (DDD) for Continuous Delivery
Thank you Eric Evans for DDD!
Entity : Defined by ID, not attributes Value Object : Defined by attributes, no ID
Aggregate : Collection of objects Domain : Sphere of activity and influence
Model : System of abstractions Domain Event : Domain experts care for
Ubiquitous Language : Shared language Domain Services : Shared functionality
Connect the implementation to an evolving domain model
Continuous Delivery is a journey, not a destination.
23. November 15, 2016
Pipeline-as-a-service: Scrum Teams sign a contract!
1. Process drives Architecture. Process drives tools.
2. Pipeline is a product, based off the Services Architecture.
3. The suite of polyglot Domain Services, with sharp interfaces, could be developed
by anyone in the organization, based off protocol.
4. Exact interfaces should declare exact intent. Should maintain existing interfaces so
that customers don’t experience service disruption.
5. Segregation/Separation of duties is the concept of having more than one person
required to complete a task. It is an internal control intended to prevent fraud and
error. It does NOT mean Human Being A does not trust Human Being B and hence
starts a new department of clicking buttons.
6. Should enable Pipeline customers to make choices, so that Scrum Teams could
control their own destiny.
Scrum Teams control their own destiny
25. November 15, 2016
Published Language – DSL, It’s groovy!, 1-800-Plumber
Unmanageable string of jobs you’ve become,
Pipeline you must be,
Declarative, versioned and ephemeral become you must,
Or the dark side won’t set you free.
Pipeline analytics report you must,
In the groove you must get,
Make happy our engineers you must,
Don’t make them fret.
Jenkinsfile / Jenkins 2.0
node ("${AGENT}") { }
stage ‘deploy’
timeout (time:2, unit:'DAYS')
{input message: ’Proceed?”, submitter:
’Operations’}
stage ‘functional, performance, security test’
parallel ( parallel_task_stage_sauce : {
}, parallel_task_stage_blazemeter : {
}, parallel_task_stage_appspider : { })
try {}
catch (InterruptedException x) { slackSend color: '#008000',
message: ”” }
28. November 15, 2016
On Closing : Conway’s Law, Maya Angelou’s Human Family
“Organizations which design systems ... are constrained to produce
designs which are copies of the communication
structures of these
organizations.”
Melvin Conway
“I note the obvious
differences between
each sort and type,
We are more alike,
my friends, than we
are unalike.”
Maya Angelou