Continuous Delivery Agiles 2014 Medellin
-
Upload
diego-garber -
Category
Technology
-
view
203 -
download
3
description
Transcript of Continuous Delivery Agiles 2014 Medellin
![Page 1: Continuous Delivery Agiles 2014 Medellin](https://reader033.fdocuments.in/reader033/viewer/2022052622/559449221a28ab250d8b4751/html5/thumbnails/1.jpg)
Free Classifiedswww.olx.com
Buenos Aires, April 2014
Continuous DeliveryRelease Management
![Page 2: Continuous Delivery Agiles 2014 Medellin](https://reader033.fdocuments.in/reader033/viewer/2022052622/559449221a28ab250d8b4751/html5/thumbnails/2.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022052622/559449221a28ab250d8b4751/html5/thumbnails/3.jpg)
3
![Page 4: Continuous Delivery Agiles 2014 Medellin](https://reader033.fdocuments.in/reader033/viewer/2022052622/559449221a28ab250d8b4751/html5/thumbnails/4.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022052622/559449221a28ab250d8b4751/html5/thumbnails/5.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022052622/559449221a28ab250d8b4751/html5/thumbnails/6.jpg)
6
Initial Picture
![Page 7: Continuous Delivery Agiles 2014 Medellin](https://reader033.fdocuments.in/reader033/viewer/2022052622/559449221a28ab250d8b4751/html5/thumbnails/7.jpg)
7
Decision
![Page 8: Continuous Delivery Agiles 2014 Medellin](https://reader033.fdocuments.in/reader033/viewer/2022052622/559449221a28ab250d8b4751/html5/thumbnails/8.jpg)
8
Initial Assessment
Source: http://www.infoq.com/articles/Continuous-Delivery-Maturity-Model
![Page 9: Continuous Delivery Agiles 2014 Medellin](https://reader033.fdocuments.in/reader033/viewer/2022052622/559449221a28ab250d8b4751/html5/thumbnails/9.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022052622/559449221a28ab250d8b4751/html5/thumbnails/10.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022052622/559449221a28ab250d8b4751/html5/thumbnails/11.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022052622/559449221a28ab250d8b4751/html5/thumbnails/12.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022052622/559449221a28ab250d8b4751/html5/thumbnails/13.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022052622/559449221a28ab250d8b4751/html5/thumbnails/14.jpg)
14
Application configuration deployment
Config files, from the repo to the environment
git-cryptgit-crypt
![Page 15: Continuous Delivery Agiles 2014 Medellin](https://reader033.fdocuments.in/reader033/viewer/2022052622/559449221a28ab250d8b4751/html5/thumbnails/15.jpg)
15
Architecture evolutionFrequency/Complexity/Impact/Risk/Speed deployment
![Page 16: Continuous Delivery Agiles 2014 Medellin](https://reader033.fdocuments.in/reader033/viewer/2022052622/559449221a28ab250d8b4751/html5/thumbnails/16.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022052622/559449221a28ab250d8b4751/html5/thumbnails/17.jpg)
17
Pipeline layers
![Page 18: Continuous Delivery Agiles 2014 Medellin](https://reader033.fdocuments.in/reader033/viewer/2022052622/559449221a28ab250d8b4751/html5/thumbnails/18.jpg)
18
The Revolution will not be centralized
![Page 19: Continuous Delivery Agiles 2014 Medellin](https://reader033.fdocuments.in/reader033/viewer/2022052622/559449221a28ab250d8b4751/html5/thumbnails/19.jpg)
19
Remaining servers
Alert
ROLLBACK
WaitMonitorCheck
Canary ReleaseRelease pool
![Page 20: Continuous Delivery Agiles 2014 Medellin](https://reader033.fdocuments.in/reader033/viewer/2022052622/559449221a28ab250d8b4751/html5/thumbnails/20.jpg)
20
Tooling
REST APIREST API
![Page 21: Continuous Delivery Agiles 2014 Medellin](https://reader033.fdocuments.in/reader033/viewer/2022052622/559449221a28ab250d8b4751/html5/thumbnails/21.jpg)
22
Culture Changing
![Page 22: Continuous Delivery Agiles 2014 Medellin](https://reader033.fdocuments.in/reader033/viewer/2022052622/559449221a28ab250d8b4751/html5/thumbnails/22.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022052622/559449221a28ab250d8b4751/html5/thumbnails/23.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022052622/559449221a28ab250d8b4751/html5/thumbnails/24.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022052622/559449221a28ab250d8b4751/html5/thumbnails/25.jpg)
26
Next steps
. 1.Native packages
1.Deploy integration with Puppet
1.Virtualization / Docker
![Page 26: Continuous Delivery Agiles 2014 Medellin](https://reader033.fdocuments.in/reader033/viewer/2022052622/559449221a28ab250d8b4751/html5/thumbnails/26.jpg)
27
Q&A
.
![Page 27: Continuous Delivery Agiles 2014 Medellin](https://reader033.fdocuments.in/reader033/viewer/2022052622/559449221a28ab250d8b4751/html5/thumbnails/27.jpg)
28
Thank You (We are hiring DEVOPS)
Continuous Delivery TeamDiego Garber @diegarberGoogle+ Communities: OLX Engineering