Cd syd
-
Upload
michael-neale -
Category
Technology
-
view
2.237 -
download
3
description
Transcript of Cd syd
![Page 2: Cd syd](https://reader036.fdocuments.in/reader036/viewer/2022062405/554f1f23b4c905723a8b4eae/html5/thumbnails/2.jpg)
Continuous Delivery?
Tuesday, 26 November 13
![Page 3: Cd syd](https://reader036.fdocuments.in/reader036/viewer/2022062405/554f1f23b4c905723a8b4eae/html5/thumbnails/3.jpg)
Definitions
Continuous Deployment:
FTP php files to production server.
Done.
Tuesday, 26 November 13
![Page 4: Cd syd](https://reader036.fdocuments.in/reader036/viewer/2022062405/554f1f23b4c905723a8b4eae/html5/thumbnails/4.jpg)
Definitions
Continuous Deployment:
Change in SCM -> Build/Test -> Deploy (deploy to prod, or staging?)
Tuesday, 26 November 13
![Page 5: Cd syd](https://reader036.fdocuments.in/reader036/viewer/2022062405/554f1f23b4c905723a8b4eae/html5/thumbnails/5.jpg)
Definitions
Continuous Delivery:
Change in SCM -> Build/Test -> Be able to deploy at will (keep it clean, ready to deploy)
Typically always deployed to a staging environment
Tuesday, 26 November 13
![Page 6: Cd syd](https://reader036.fdocuments.in/reader036/viewer/2022062405/554f1f23b4c905723a8b4eae/html5/thumbnails/6.jpg)
Definitions
Continuous Integration:
Change in SCM -> Build/Test -> Feedback cycle
CD requires “CI”
Tuesday, 26 November 13
![Page 7: Cd syd](https://reader036.fdocuments.in/reader036/viewer/2022062405/554f1f23b4c905723a8b4eae/html5/thumbnails/7.jpg)
CD - commit to deploy
Target server
Tuesday, 26 November 13
![Page 8: Cd syd](https://reader036.fdocuments.in/reader036/viewer/2022062405/554f1f23b4c905723a8b4eae/html5/thumbnails/8.jpg)
Benefits
Quicker turn aroundHappier usersLess risk per deploymentIdeally deploy “as is” at (almost) any timeFits with “agile” approaches nicely
Lots more - bing it!
Tuesday, 26 November 13
![Page 9: Cd syd](https://reader036.fdocuments.in/reader036/viewer/2022062405/554f1f23b4c905723a8b4eae/html5/thumbnails/9.jpg)
Necessity
Risk of deployment proportional to time since last deployment
We are all deploying services now, not so much apps in a box (other than app store!) - world has changed.
Tuesday, 26 November 13
![Page 10: Cd syd](https://reader036.fdocuments.in/reader036/viewer/2022062405/554f1f23b4c905723a8b4eae/html5/thumbnails/10.jpg)
Continuous Integration
Jenkins-ci.org
Also have to mention Atlassian Bamboo!
Tuesday, 26 November 13
![Page 11: Cd syd](https://reader036.fdocuments.in/reader036/viewer/2022062405/554f1f23b4c905723a8b4eae/html5/thumbnails/11.jpg)
Requirements for CD
Deep SCM integration - commit hooksReliable Production-CI service (not under someones desk)Automated DeploymentMultiple deploy target environmentsEasy rollback
Tuesday, 26 November 13
![Page 12: Cd syd](https://reader036.fdocuments.in/reader036/viewer/2022062405/554f1f23b4c905723a8b4eae/html5/thumbnails/12.jpg)
CloudBees is:
Tuesday, 26 November 13
![Page 13: Cd syd](https://reader036.fdocuments.in/reader036/viewer/2022062405/554f1f23b4c905723a8b4eae/html5/thumbnails/13.jpg)
CI serverApp service repos
Tuesday, 26 November 13
![Page 14: Cd syd](https://reader036.fdocuments.in/reader036/viewer/2022062405/554f1f23b4c905723a8b4eae/html5/thumbnails/14.jpg)
Fiddly
Fiddly to setup by hand - all the hooks, triggers, scripts, automation...
so we came up with “ClickStarts”
Set up all the moving parts
Tuesday, 26 November 13
![Page 15: Cd syd](https://reader036.fdocuments.in/reader036/viewer/2022062405/554f1f23b4c905723a8b4eae/html5/thumbnails/15.jpg)
CD quick start - automated
Clone from template to private repoSetup commit hooksSetup buildIssue initial build & run testsSetup runtime container Deploy
All one click, ideally
Tuesday, 26 November 13
![Page 16: Cd syd](https://reader036.fdocuments.in/reader036/viewer/2022062405/554f1f23b4c905723a8b4eae/html5/thumbnails/16.jpg)
Tedium Lots of one off steps to get going with CD
You won’t ever remember how to setup commit hooks each time you need to
Tuesday, 26 November 13
![Page 17: Cd syd](https://reader036.fdocuments.in/reader036/viewer/2022062405/554f1f23b4c905723a8b4eae/html5/thumbnails/17.jpg)
Tuesday, 26 November 13
![Page 18: Cd syd](https://reader036.fdocuments.in/reader036/viewer/2022062405/554f1f23b4c905723a8b4eae/html5/thumbnails/18.jpg)
AppsForge/source repos
Jenkins
Build slave pools
open source/template repos
on commit
Tuesday, 26 November 13
![Page 19: Cd syd](https://reader036.fdocuments.in/reader036/viewer/2022062405/554f1f23b4c905723a8b4eae/html5/thumbnails/19.jpg)
Dog food eating
Tuesday, 26 November 13
![Page 20: Cd syd](https://reader036.fdocuments.in/reader036/viewer/2022062405/554f1f23b4c905723a8b4eae/html5/thumbnails/20.jpg)
Tuesday, 26 November 13
![Page 21: Cd syd](https://reader036.fdocuments.in/reader036/viewer/2022062405/554f1f23b4c905723a8b4eae/html5/thumbnails/21.jpg)
CD - dogfoodSome projects are direct to production on tests pass
Some are direct to “staging” until merged into master branch (git branches to control deployment is common)
Easily, and often, roll back.
Tuesday, 26 November 13
![Page 22: Cd syd](https://reader036.fdocuments.in/reader036/viewer/2022062405/554f1f23b4c905723a8b4eae/html5/thumbnails/22.jpg)
Tuesday, 26 November 13
![Page 23: Cd syd](https://reader036.fdocuments.in/reader036/viewer/2022062405/554f1f23b4c905723a8b4eae/html5/thumbnails/23.jpg)
ExamplePlay Framework:
“Seed project”
Clone into actual project - setup build steps - setup unit/e2e tests - prepare/deploy into a container - setup commit hook
Tuesday, 26 November 13
![Page 24: Cd syd](https://reader036.fdocuments.in/reader036/viewer/2022062405/554f1f23b4c905723a8b4eae/html5/thumbnails/24.jpg)
https://github.com/../play2-clickstart
git.cloudbees.com/your/app
you.ci.cloudbees.com
yourapp.com
shallow clone
Your code
Tuesday, 26 November 13
![Page 25: Cd syd](https://reader036.fdocuments.in/reader036/viewer/2022062405/554f1f23b4c905723a8b4eae/html5/thumbnails/25.jpg)
But wait, it isn’t that easyMore complex workflowsWarming up environmentsSafe fall-backMonolithic appsDatabase updates
Some solutions...
Tuesday, 26 November 13
![Page 26: Cd syd](https://reader036.fdocuments.in/reader036/viewer/2022062405/554f1f23b4c905723a8b4eae/html5/thumbnails/26.jpg)
Complex workflows
Tuesday, 26 November 13
![Page 27: Cd syd](https://reader036.fdocuments.in/reader036/viewer/2022062405/554f1f23b4c905723a8b4eae/html5/thumbnails/27.jpg)
Jenkins pipeline plugin
https://wiki.jenkins-ci.org/display/JENKINS/Build+Pipeline+Plugin
Tuesday, 26 November 13
![Page 28: Cd syd](https://reader036.fdocuments.in/reader036/viewer/2022062405/554f1f23b4c905723a8b4eae/html5/thumbnails/28.jpg)
Warming up environmentsAnd “fail safe” fall back.
BOTH solved by blue-green deployment.
http://martinfowler.com/bliki/BlueGreenDeployment.html
Tuesday, 26 November 13
![Page 29: Cd syd](https://reader036.fdocuments.in/reader036/viewer/2022062405/554f1f23b4c905723a8b4eae/html5/thumbnails/29.jpg)
Tuesday, 26 November 13
![Page 30: Cd syd](https://reader036.fdocuments.in/reader036/viewer/2022062405/554f1f23b4c905723a8b4eae/html5/thumbnails/30.jpg)
Blue Green2 clones of production environment
Always deploy to “blue”When ready - flip switch (router) from green to blue.
If bad - flip back - no redeployments, no other changes
Tuesday, 26 November 13
![Page 31: Cd syd](https://reader036.fdocuments.in/reader036/viewer/2022062405/554f1f23b4c905723a8b4eae/html5/thumbnails/31.jpg)
Blue GreenNeed to be both production grade environments!
Safer deployment
Can warm up “blue” before flipping switch (prime caches, run final smoke testing)
Deploying to prod is NOT deploying - just changing what you call production!
Tuesday, 26 November 13
![Page 32: Cd syd](https://reader036.fdocuments.in/reader036/viewer/2022062405/554f1f23b4c905723a8b4eae/html5/thumbnails/32.jpg)
Blue Greenhttp://developer-blog.cloudbees.com/2013/08/blue-
green-deployments-with-jenkins-and.html
Tuesday, 26 November 13
![Page 33: Cd syd](https://reader036.fdocuments.in/reader036/viewer/2022062405/554f1f23b4c905723a8b4eae/html5/thumbnails/33.jpg)
Blue GreenCan shut down “blue” if needed, to safe resources
Large customers already doing this
Large web companies all do this
Tuesday, 26 November 13
![Page 34: Cd syd](https://reader036.fdocuments.in/reader036/viewer/2022062405/554f1f23b4c905723a8b4eae/html5/thumbnails/34.jpg)
Blue GreenWarming up: as simple as a curl script in a loop**
** Works quite well
Tuesday, 26 November 13
![Page 35: Cd syd](https://reader036.fdocuments.in/reader036/viewer/2022062405/554f1f23b4c905723a8b4eae/html5/thumbnails/35.jpg)
Monolithic appsSolution: avoid if you can!
Microservices (a whole other topic I love to talk about)
CD then applies to each service, individually. Each service has radically different release cadences.
Releases are massively low risk.
Tuesday, 26 November 13
![Page 36: Cd syd](https://reader036.fdocuments.in/reader036/viewer/2022062405/554f1f23b4c905723a8b4eae/html5/thumbnails/36.jpg)
micro-service debugging
Tuesday, 26 November 13
![Page 37: Cd syd](https://reader036.fdocuments.in/reader036/viewer/2022062405/554f1f23b4c905723a8b4eae/html5/thumbnails/37.jpg)
Monolithic appsStill can do CD
Good test suite?
Isolate “risky” changes - more frequent low risk deploys.
Risk of deploy is proportional to the time between deploys
Tuesday, 26 November 13
![Page 38: Cd syd](https://reader036.fdocuments.in/reader036/viewer/2022062405/554f1f23b4c905723a8b4eae/html5/thumbnails/38.jpg)
DatabasesOption 1: Snapshot and then deploy (for rollback)
Option 2: Separate out “destructive” deploys (schema change, data change) from CD deploys - not one size fits all
Daily deploys: DB/data scheme doesn’t change daily (I hope!)
Tuesday, 26 November 13
![Page 39: Cd syd](https://reader036.fdocuments.in/reader036/viewer/2022062405/554f1f23b4c905723a8b4eae/html5/thumbnails/39.jpg)
Thank you
Michael Nealehttps://twitter.com/michaelnealehttps://developer.cloudbees.com
Tuesday, 26 November 13