26
Continuous Integration (CI) & Continuous Delivery (CD) Rethink your software Delivery EMEA PUG Challenge, 06-10-2016 Joost van der Griendt

Flusso Continuous Integration & Continuous Delivery

Embed Size (px)

Citation preview

Page 1: Flusso Continuous Integration & Continuous Delivery

Continuous Integration (CI) & Continuous

Delivery (CD)Rethink your software Delivery

EMEA PUG Challenge, 06-10-2016Joost van der Griendt

Page 2: Flusso Continuous Integration & Continuous Delivery

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

Page 3: Flusso Continuous Integration & Continuous Delivery

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

Page 4: Flusso Continuous Integration & Continuous Delivery

Overview• What is CI/CD• Why CI/CD• Advanced concepts• How can you implement it

4

Page 5: Flusso Continuous Integration & Continuous Delivery

Not discussed• Automated tests & Test Pyramid• Self testing code• Trunk Based Development• Branching strategies• Engineering Effectiveness

5

Page 6: Flusso Continuous Integration & Continuous Delivery

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

Page 7: Flusso Continuous Integration & Continuous Delivery

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

Page 8: Flusso Continuous Integration & Continuous Delivery

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

Page 9: Flusso Continuous Integration & Continuous Delivery

How do CI and CD relate

9

Build IntegrateCode Release DeployTest Operate

Agile Development

Continuous Integration

Continuous Delivery

Continuous Deployment

DevOps

Page 10: Flusso Continuous Integration & Continuous Delivery

Why Continuously Deliver

10

Page 11: Flusso Continuous Integration & Continuous Delivery

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

Page 12: Flusso Continuous Integration & Continuous Delivery

Advanced Concepts• Infrastructure As Code

• Configuration As Code• Pipelines (as code)• Maturity Model

12

Page 13: Flusso Continuous Integration & Continuous Delivery

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

Page 14: Flusso Continuous Integration & Continuous Delivery

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

Page 15: Flusso Continuous Integration & Continuous Delivery

“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

Page 17: Flusso Continuous Integration & Continuous Delivery

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

Page 18: Flusso Continuous Integration & Continuous Delivery

18

Page 19: Flusso Continuous Integration & Continuous Delivery

Deploy 10x a day• Can you?• Are you confident about it?• Tell your team that tomorrow you will deploy 10

changes into production!

19

Page 21: Flusso Continuous Integration & Continuous Delivery

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

Page 22: Flusso Continuous Integration & Continuous Delivery

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

Page 24: Flusso Continuous Integration & Continuous Delivery

Flusso & CI/CD

24

Download this presentation at:www.flusso.nl/pug16-cicd/

Page 26: Flusso Continuous Integration & Continuous Delivery

References• http://www.stellarin.com/services/outsourced-development • https://www.infoq.com/articles/Continuous-Delivery-Maturity-M

odel

26