Top Banner
November 15, 2016 Continuous Delivery Pipeline – Patterns and Anti-patterns Juni Mukherjee (@JuniTweets) Consultant, CI/CD, LifeLock (Views are my own.)
29

Continuous Delivery Pipeline - Patterns and Anti-patterns

Apr 16, 2017

Download

Software

sonatype
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Continuous Delivery Pipeline - Patterns and Anti-patterns

November15,2016

Continuous Delivery Pipeline –Patterns and Anti-patterns

JuniMukherjee (@JuniTweets)

Consultant,CI/CD,LifeLock(Viewsaremyown.)

Page 2: Continuous Delivery Pipeline - Patterns and Anti-patterns

November15,2016

Page 3: Continuous Delivery Pipeline - Patterns and Anti-patterns

November15,2016

Page 4: Continuous Delivery Pipeline - Patterns and Anti-patterns

November15,2016

Domain-driven Design (DDD) for Continuous Delivery

ThankyouEricEvansforDDD!

Entity :DefinedbyID,notattributes ValueObject :Definedbyattributes,noID

Aggregate:Collectionofobjects Domain:Sphereofactivityandinfluence

Model:Systemofabstractions DomainEvent:Domainexpertscarefor

Ubiquitous Language :Sharedlanguage DomainServices:Sharedfunctionality

Connecttheimplementationtoanevolving domainmodel

ContinuousDeliveryisajourney,notadestination.

Page 5: Continuous Delivery Pipeline - Patterns and Anti-patterns

November15,2016

Domain Model Integrity – Bounded Context, Context Map

© 2016 CloudBees, Inc. All Rights Reserved

Page 6: Continuous Delivery Pipeline - Patterns and Anti-patterns

November15,2016

Fragmentation, Blurred Edges, Bounded Context, Context Map

© 2016 CloudBees, Inc. All Rights Reserved

Node,Java,iOS,Android,Database,::::::::::

Page 7: Continuous Delivery Pipeline - Patterns and Anti-patterns

November15,2016

Domain Model Integrity – Ubiquitous Language

© 2016 CloudBees, Inc. All Rights Reserved

Page 8: Continuous Delivery Pipeline - Patterns and Anti-patterns

November15,2016

Ubiquitous Language – [Soft | Hard | Firm]ware, Embedded, IoT

Component

Thesmallestdistributableandtestableunit

Unit,SCA– Linter,SCA– SecurityVulnerabilities

Modules,Libraries

Subsystem

Thesmallestdeployableandrunnableunit

Functional(Security,I18N,L10N,…),Performance

JAR|IPA|APK|Emulators|Simulators…

System

Looselycoupledsubsystems

Integration(Interfaces,Network),Performance

JAR&IPA&APK&RealDevices&Accessories…

Rate of Change, Supply Chain

Page 9: Continuous Delivery Pipeline - Patterns and Anti-patterns

November15,2016

Domain Model Integrity – Continuous Integration

© 2016 CloudBees, Inc. All Rights Reserved

Page 10: Continuous Delivery Pipeline - Patterns and Anti-patterns

November15,2016

Continuous Integration, Continuous Delivery, Value Stream Map

Product :SystemUnderTest(SUT) Configuration :Application,Environment

Test :Unit,Static,Functional,Integration,Perf Infrastructure,Platform:Infra-As-Code,*aaS

Pipeline-As-Code :Dockerized Jenkins2.0,Jenkinsfile (Process-As-Code),SharedKernel(Utils.groovy,Libs)

VSM:AutomateONLYthevalue-addingsteps.Discardtherest.

Page 11: Continuous Delivery Pipeline - Patterns and Anti-patterns

November15,2016

MVP - Continuous Delivery Pipeline, Slice over Dice

© 2016 CloudBees, Inc. All Rights Reserved

ProductSlice:SystemUnderTest(SUT) ConfigurationSlice:Application,Environment

TestSlice:Unit,Static,Functional,Int,Perf Infrastructure,Platform:Infra-As-Code,*aaS

Pipeline-As-Code :Dockerized Jenkins2.0,Jenkinsfile (Process-As-Code),SharedKernel(Utils.groovy)

Page 12: Continuous Delivery Pipeline - Patterns and Anti-patterns

November15,2016

Domain Model Integrity – Big Ball of Mud (And Tests Too?)

© 2016 CloudBees, Inc. All Rights Reserved

Page 13: Continuous Delivery Pipeline - Patterns and Anti-patterns

November15,2016

Pipeline – Graph – Tightly Coupled Product Architecture

Page 14: Continuous Delivery Pipeline - Patterns and Anti-patterns

November15,2016

Domain Model Integrity – Separate Ways

© 2016 CloudBees, Inc. All Rights Reserved

Page 15: Continuous Delivery Pipeline - Patterns and Anti-patterns

November15,2016

Pipeline – Linear – Independently Deployable Artifact

Page 16: Continuous Delivery Pipeline - Patterns and Anti-patterns

November15,2016

Death by a thousand test-types!

… And by a thousand environments!

Page 17: Continuous Delivery Pipeline - Patterns and Anti-patterns

November15,2016

Domain Model Integrity – Customer/Supplier Teams

© 2016 CloudBees, Inc. All Rights Reserved

Page 18: Continuous Delivery Pipeline - Patterns and Anti-patterns

November15,2016

Customer Supplier - Pipeline Design Pattern

Page 19: Continuous Delivery Pipeline - Patterns and Anti-patterns

November15,2016

Domain Model Integrity - Conformist

© 2016 CloudBees, Inc. All Rights Reserved

Page 20: Continuous Delivery Pipeline - Patterns and Anti-patterns

November15,2016

Conformist – Pipeline Design Pattern

Page 21: Continuous Delivery Pipeline - Patterns and Anti-patterns

November15,2016

Domain Model Integrity – Shared Kernel, Anti-corruption Layer

© 2016 CloudBees, Inc. All Rights Reserved

Page 22: Continuous Delivery Pipeline - Patterns and Anti-patterns

November15,2016

Shared Kernel, Anticorruption Layer

Domain Services,

Services Architecture,

Cloudy with a chance of sharp interfaces

Network Latency,

Circuit Breaker

Page 23: Continuous Delivery Pipeline - Patterns and Anti-patterns

November15,2016

Pipeline-as-a-service: Scrum Teams sign a contract!

1. ProcessdrivesArchitecture.Processdrivestools.

2. Pipelineisaproduct,basedofftheServicesArchitecture.

3. ThesuiteofpolyglotDomainServices,withsharpinterfaces,couldbedevelopedbyanyoneintheorganization,basedoffprotocol.

4. Exactinterfacesshoulddeclareexactintent.Shouldmaintainexistinginterfacessothatcustomersdon’texperienceservicedisruption.

5. Segregation/Separationofduties istheconceptofhavingmorethanonepersonrequiredtocompleteatask.Itisaninternalcontrolintendedtopreventfraudanderror.ItdoesNOTmeanHumanBeingAdoesnottrustHumanBeingBandhencestartsanewdepartmentofclickingbuttons.

6. ShouldenablePipelinecustomerstomakechoices,sothatScrumTeamscouldcontroltheirowndestiny.

Scrum Teams control their own destiny

Page 24: Continuous Delivery Pipeline - Patterns and Anti-patterns

November15,2016

Domain Model Integrity – Published Language

© 2016 CloudBees, Inc. All Rights Reserved

Page 25: Continuous Delivery Pipeline - Patterns and Anti-patterns

November15,2016

Published Language – DSL, It’s groovy!, 1-800-Plumber

Unmanageablestringofjobsyou’vebecome,Pipelineyoumustbe,Declarative,versionedandephemeralbecomeyoumust,Orthedarksidewon’tsetyoufree.

Pipelineanalyticsreportyoumust,Inthegrooveyoumustget,Makehappyourengineersyoumust,Don’tmakethemfret.

Jenkinsfile /Jenkins2.0

node ("${AGENT}") { }

stage ‘deploy’timeout (time:2,unit:'DAYS'){input message:’Proceed?”,submitter:

’Operations’}

stage ‘functional,performance,securitytest’parallel (parallel_task_stage_sauce :{},parallel_task_stage_blazemeter :{},parallel_task_stage_appspider :{})

try{}

catch(InterruptedException x){slackSend color:'#008000',message:””}

Page 26: Continuous Delivery Pipeline - Patterns and Anti-patterns

November15,2016

Domain Model Integrity - Flying colors!

© 2016 CloudBees, Inc. All Rights Reserved

Page 27: Continuous Delivery Pipeline - Patterns and Anti-patterns

November15,2016

KPIs – Show Me the Money!

What can be measured, can be fixed!

Page 28: Continuous Delivery Pipeline - Patterns and Anti-patterns

November15,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 theseorganizations.”

Melvin Conway

“I note the obvious differences between each sort and type, We are more alike, my friends, than we are unalike.”

Maya Angelou

Page 29: Continuous Delivery Pipeline - Patterns and Anti-patterns

November15,2016

Thank you AllDayDevOps, Community, Sponsors and Supporters!

JuniMukherjee (@JuniTweets)