continuous delivery agiles 2014 medellin

27
Free Classifieds www.olx.com Buenos Aires, April 2014 Continuous Delivery Release Management

Upload: diego-garber

Post on 02-Jul-2015

203 views

Category:

Technology


3 download

DESCRIPTION

Conference about the Continuous Delivery Project on OLX. Tools we used, tools we created and opensourced like Octopush and lessons learned.

TRANSCRIPT

Page 1: Continuous Delivery Agiles 2014 Medellin

Free Classifiedswww.olx.com

Buenos Aires, April 2014

Continuous DeliveryRelease Management

Page 2: Continuous Delivery Agiles 2014 Medellin

2

Agenda

1. Initial Situation2. Initial Setup3. Continuous Delivery Adoption - How we started4. Deployment stages5. Application configuration deployment6. Introducing Octopush7. Architecture evolution8. Tooling9. Culture changing10. Lessons learned11. What we have achieved12. Next steps13. Q&A

Page 3: Continuous Delivery Agiles 2014 Medellin

3

Page 4: Continuous Delivery Agiles 2014 Medellin

4

Initial Situation

Situation

Complication

BigBang/Stressful releases, once every two weeksMultiple Development Teams -> # deployments increasing Few automation - Most of the tasks were manualMonolithic platform / Dependency hellManual ConfigurationSVNSome teams doing CI Distrust & escepticism

• Business Risk Product Delivery Product Quality Need to shorten the time to market when adding new

features Competitive advantage: Need more efficient processes and

reduce operational costs.

• Growing teams• Going Global / distributed team / different time zones

Page 5: Continuous Delivery Agiles 2014 Medellin

5

SVN

CI Server

RM Server

ssh/console

Trigger job

Dev Team I

Release Management

Initial CI and RM Setup

Dev Team II

Page 6: Continuous Delivery Agiles 2014 Medellin

6

Initial Picture

Page 7: Continuous Delivery Agiles 2014 Medellin

7

Decision

Page 8: Continuous Delivery Agiles 2014 Medellin

8

Initial Assessment

Source: http://www.infoq.com/articles/Continuous-Delivery-Maturity-Model

Page 9: Continuous Delivery Agiles 2014 Medellin

9

• Sharing the situation and necessity• Management commitment• Resources allocated

• Reduce Errors / Lower Stress / Lower Delta Changes Release

• On Demand Deployment/ Built Quality In

• Everybody Is Responsible for the Delivery Process/ Continuous

Improvement

• Establish Phases and goals

• Scope by component

• Assumptions / expectations

• Project Risk Identification

• Continuous Integration• Continuous Delivery• Continuous deployment

Commitment

Concepts alignment

Setting Goals

Project Management

Continuous Delivery Adoption

Page 10: Continuous Delivery Agiles 2014 Medellin

10

Integration/Acceptance EnvDev Env

High Level View

CommitStage

DeploymentStage

AcceptanceStage Live

Manual gate :: RM Button

Production Env

Automatic :: Web-hook

Page 11: Continuous Delivery Agiles 2014 Medellin

11

Integration Jenkins

Commit Stage

Git Master/Branch Artifactory Release Jenkins

Checkout

Publish binaries

Trigger Release

Checkpoint:- build or pre-compile- run unit test & coverage

from Git master branch to Artifactory

Deployment Stage

[ENV available?]::Go::Wait

Commit hookCommit

Build

Page 12: Continuous Delivery Agiles 2014 Medellin

12

Release Jenkins

Deployment Stage

from Integration Jenkins

Git repoArtifactoryAcceptance Env.

[If code] Get Binaries

[If config] Get Config

from Artifactory to Acceptance Env

To Integration Jenkins

Run Deploy Script

Run smoke test

Automatic Rollback upon

failure

Code OR Config,

NEVER both

Page 13: Continuous Delivery Agiles 2014 Medellin

13

Integration/Dev Jenkins

Acceptance Stage

from Release Jenkins

Acceptance Env.

from Acceptance Env to Production Gate

To Release Jenkins

Run Acceptance Tests

Run Performance Tests*

* Using YSlow for frontend testing

Automatic Rollback upon

failure

Page 14: Continuous Delivery Agiles 2014 Medellin

14

Application configuration deployment

Config files, from the repo to the environment

git-cryptgit-crypt

Page 15: Continuous Delivery Agiles 2014 Medellin

15

Architecture evolutionFrequency/Complexity/Impact/Risk/Speed deployment

Page 16: Continuous Delivery Agiles 2014 Medellin

16

Introducing Octopush

Jenkins Mobile

Jenkins Frontend

Jenkins Backend

Jenkins blah

Make deployment request

Deploy

Enqueues jobPick next available jobCall Jenkins to deployPolls/notify on completion

Orchestrate Jenkins Hell!

Open SourceOpen Source

Call deployment

job

Page 17: Continuous Delivery Agiles 2014 Medellin

17

Pipeline layers

Page 18: Continuous Delivery Agiles 2014 Medellin

18

The Revolution will not be centralized

Page 19: Continuous Delivery Agiles 2014 Medellin

19

Remaining servers

Alert

ROLLBACK

WaitMonitorCheck

Canary ReleaseRelease pool

Page 20: Continuous Delivery Agiles 2014 Medellin

20

Tooling

REST APIREST API

Page 21: Continuous Delivery Agiles 2014 Medellin

22

Culture Changing

Page 22: Continuous Delivery Agiles 2014 Medellin

23

Architecture

Smoke Test

Infrastructure-as-code

Conventions

• Application architecture.• Tooling architecture should also be layered and Service oriented.• Integrate your own tools with Jenkins JIRA, IRC, Graphite, most of them

have a REST API service. No silver bullet• Divide configuration

• Health checks!

• Track & version your scripts, follow Software design principles• Same scripts/infra everywhere!, use config files to resolve hostname

issues• Scripts should be idempotent

• Apps/repos/users/package naming.

Canary Releases• Use a Testing pool, automate!.

Lessons learned 1/2

Page 23: Continuous Delivery Agiles 2014 Medellin

24

Communication• Clear channel• IRC• Automate.

Strategy

• MVP• Advertise progress/delays, achievements, use charts/hard data. • Early adopters.

Lessons learned 2/2

Page 24: Continuous Delivery Agiles 2014 Medellin

25

• Tripled our Production deployment throughput .

• More confident and error-free releases.

• Less stress, near-zero manual work, easier, faster deploys

ConclusionsReleases

Achievements

Octopush decentraliza

tion

Page 25: Continuous Delivery Agiles 2014 Medellin

26

Next steps

. 1.Native packages

1.Deploy integration with Puppet

1.Virtualization / Docker

Page 26: Continuous Delivery Agiles 2014 Medellin

27

Q&A

.

Page 27: Continuous Delivery Agiles 2014 Medellin

28

Thank You (We are hiring DEVOPS)

Continuous Delivery TeamDiego Garber @diegarberGoogle+ Communities: OLX Engineering