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

Continuous Delivery Agiles 2014 Medellin

Embed Size (px)

DESCRIPTION

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

Citation preview

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