flusso continuous integration & continuous delivery
Post on 21-Jan-2017
196 Views
Preview:
TRANSCRIPT
Continuous Integration (CI) & Continuous
Delivery (CD)Rethink your software Delivery
EMEA PUG Challenge, 06-10-2016Joost van der Griendt
Who are we?Flusso• One of biggest OpenEdge consultancy firms
in NL• Progress technologies, • Open Source (Java & ServiceMix, etc), • Web Apps (Angular2, various app platforms)• OutSystems• CI/CD Consultancy
Who are we?Joost van der Griendt
Java Developer since 2005, Automation Engineer since 2009
Flusso since 2011, currently CI/CD Consultant at ABN AMRO
Overview• What is CI/CD• Why CI/CD• Advanced concepts• How can you implement it
4
Not discussed• Automated tests & Test Pyramid• Self testing code• Trunk Based Development• Branching strategies• Engineering Effectiveness
5
Software Lifecycle & CI/CD• How quickly can you get a single line of code
into production?• Can you do this on a repeatable and reliable
basis?• Different for new product or an existing
product?
6
Continuous Integration“CI is a practice where members of a team integrate their work frequently, preferably daily - leading to multiple integrations per day. Each integration is verified by an automated build (including tests) to detect errors as quickly as possible.” – Martin Fowler
7
Continuous Delivery"[CD] is an approach in which teams ensure that every change to the system is releasable, and that we can release any version at the push of a button. CD aims to make releases boring, so we can deliver frequently and get fast feedback on what users care about.“ – Thought Works
8
How do CI and CD relate
9
Build IntegrateCode Release DeployTest Operate
Agile Development
Continuous Integration
Continuous Delivery
Continuous Deployment
DevOps
Why Continuously Deliver
10
Key Principles
11
•The smaller the changes, the easier it is to integrate them•Everyone is always up-to-date and you test the end result
Integrate Early & Often
•Automate repetitive and mundane tasks; let humans focus on what they do best•If it hurts, do it more often, make tough tasks boring by doing them over and over
Automate
•Every change should be shippable to live, not live is no value•Verify automatically it meets all requirements
Build Quality In
•We work on a Product/Value together, anything good or bad impacts all•Enables "Boy Scout Rule“ & continuously improve the product
Shared Responsibility
•Work with metrics and facts, gather them at every step and use as input for the next iteration
•Make improvement of the Product and Build Pipeline core task of everyone
Continuous Feedback
Advanced Concepts• Infrastructure As Code
• Configuration As Code• Pipelines (as code)• Maturity Model
12
Infrastructure As Code“The enabling idea of infrastructure as code is that the systems and devices which are used to run software can be treated as if they, themselves are code.” - Kief Morris
13
Configuration As Code
Manual commands Hoard knowledge Manage items individually
Write documentation
Change Production directly
Make it a definition
Version everything Use Templates Live documentation Changes through stages
14
“A deployment pipeline is a way to deal with this by breaking up your build into stages.
Each stage provides increasing confidence, usually at the cost of extra time.
Early stages can find most problems yielding faster feedback, while later stages provide slower and more through probing.
Deployment pipelines are a central part of ContinuousDelivery.” - Martin Fowler
15
Pipeline as Code
Rome wasn’t built in a day• It’s about People, Process & Technology• It’s hard, really hard to do• Conway’s Law• Use a maturity model• Identify low hanging fruit
17
18
Deploy 10x a day• Can you?• Are you confident about it?• Tell your team that tomorrow you will deploy 10
changes into production!
19
Do’s & Don’tsDon’t• form a CD team• task one department to create a CD flow• automate inside a CD tool• add tools first, change the people/process later
from Victor Farcic
21
Do’s & Don’tsDo• form a multifunctional and autonomous team capable of
delivering a service• include someone with CD experience inside the team• choose an easy target• trust the team• short iterations
from Victor Farcic
22
Flusso & CI/CD
24
Download this presentation at:www.flusso.nl/pug16-cicd/
Resources• http://vfarcic.github.io/continuous-deployment-best-practices/inde
x.html#/cover• http://www.gigamonkeys.com/flowers/ • https://medium.com/@aboodman/in-march-2011-i-drafted-an-artic
le-explaining-how-the-team-responsible-for-google-chrome-ships-c479ba623a1b#.vmhahnczd
• https://www.thoughtworks.com/insights/blog/enabling-trunk-based-development-deployment-pipelines
• https://www.thoughtworks.com/insights/blog/demystifying-conways-law
25
References• http://www.stellarin.com/services/outsourced-development • https://www.infoq.com/articles/Continuous-Delivery-Maturity-M
odel
26
top related