Continuous Delivery - Jfokus...Continuous Delivery and Zero Downtime AXEL FONTAINE @axelfontaine...
Transcript of Continuous Delivery - Jfokus...Continuous Delivery and Zero Downtime AXEL FONTAINE @axelfontaine...
Continuous Delivery
and Zero Downtime
AXEL FONTAINE@axelfontaine
axelfontaine.com
Entrepreneur - Public Speaker - Continuous Delivery Expert
AXEL FONTAINE@axelfontaine
axelfontaine.com
Entrepreneur - Public Speaker - Continuous Delivery Expert
flywaydb.org getphoton.com
photon
about
questions
GOAL
Fully automated deploymentof a complete application
into productionmultiple times a daywith zero downtime
Puttingthingsinto
PERSPECTIVE
http://digitalcitizen.ca/2009/06/22/simpsons-profile-pics-for-facebook-and-other-applications/
CONTINUOUS
DELIVERY
http://www.flickr.com/photos/kamshots/3096111340/
stackoverflow.com
stackoverflow.com
stackoverflow.com
stackoverflow.com
Prerequisites
Processhttp://www.flickr.com/photos/feffef/460299390/in/photostream/
Processhttp://www.flickr.com/photos/feffef/460299390/in/photostream/
Build
Build
Version Control
Version Control
Testhttp://www.flickr.com/photos/vitorcastillo/2994723741/
Testhttp://www.flickr.com/photos/vitorcastillo/2994723741/
Build
DEV
SmallTests
Build
DEV
SmallTests
MediumTests
Build
DEV
SmallTests
MediumTests
LargeTests
VersionControl
Build Build
DEV ContinuousIntegration
SmallTests
MediumTests
LargeTests
SmallTests
MediumTests
LargeTests
DEPLOYMENTautomation
http://www.flickr.com/photos/soldiersmediacenter/3650607959/
do
NOT
deploy
SNAPSHOTS !
VersionControl
Build Build Release
DEV Continuous Integration
SmallTests
MediumTests
LargeTests
SmallTests
MediumTests
LargeTests
Artifact Repository
DB DeltaCode Configuration
What gets deployed?
Code
DeploymentPackage
Code
DeploymentPackage
DeploymentScript
backupstopinstallstart…
Code
DeploymentPackage
DeploymentScript
backupstopinstallstart…
Release
Continuous Integration
Artifact Repository
Target
DeploymentScript
backupstopinstallstart…
Configuration
DeploymentPackage
Code
Maybe it could change one day ≠ Environments
Code
DeploymentPackage
?Environment Detection
Code
Auto-Configuration
TestEnvironment
Detection
Release
Continuous Integration
Artifact Repository
Target
DeploymentScript
backupstopinstallstart…
DB Delta
The Fearof
DDL
VS
DML DDL
Name Balance
Homer 163
Marge 214
Bart 9
Lisa 25
VS
DML DDL
Name Balance
Homer 0
Marge 0
Bart 0
Lisa 0
Name
Homer
Marge
Bart
Lisa
DB Delta
Code
DeploymentPackage
Code
DeploymentPackage
DB?
?
flywaydb.org
Release
Continuous Integration
Artifact Repository
Target
DeploymentScript
backupstopinstallstart…
Registration
MailService
Registration
MailService
Registrationv2
MailService
ParcelService
Registration
MailService
Feature TogglesBranch by Abstraction
ParcelService
Registration
MailService
ParcelService
Feature TogglesBranch by Abstraction
DB
DB
DB
DB
State ManagementBlue/Green Deployments
Surname Last_Name
ALTER TABLE … RENAME COLUMN
Surname
Last_Name Last_Name
Last_NameSurname
ALTER TABLE …ADD COLUMN Last_Name
CREATE TRIGGER …UPDATE … SET Last_Name = Surname
DROP TRIGGER …ALTER TABLE …
DROP COLUMN Surname
Last_Name
Last_Name
DROP TRIGGER …ALTER TABLE …
DROP COLUMN Surname
Summary
VersionControl
Build Build Release
DEV Continuous Integration
SmallTests
MediumTests
LargeTests
SmallTests
MediumTests
LargeTests
Artifact Repository
Target
DeploymentScript
backupstopinstallstart…
http://de.wikipedia.org/wiki/Datei:Yemen_Chameleon.jpg
One more thing
Further reading:
http://axelfontaine.com/blog/final-nail.html
http://axelfontaine.com/blog/environment-detection.html
http://martinfowler.com/bliki/FeatureToggle.html
http://googletesting.blogspot.com/2010/12/test-sizes.html
http://blog.shinetech.com/2012/12/18/simple-session-sharing-in-tomcat-cluster-using-the-session-in-cookie-pattern/