import continuous.delivery.*; - jevgeni kabanov
DESCRIPTION
When you send a package through FedEx it goes through a tracked, automated process that makes sure that the package arrives promptly at the destination. The same should apply to every commit that you check into the trunk. Continuous delivery describes how this process can be made fully automated and transparent and we will show you how your commits can be “fedexed” to production on application servers like JBoss, Tomcat, Weblogic and others with the help from Jenkins and LiveRebel. The main idea of continuous delivery is the deployment pipeline. Every commit that enters the pipeline should go through automated integration and testing and if successful, produce a release candidate. We will show how Jenkins can be used to orchestrate the process all the way to the staging environment. Once we're there, the most complicated phase begins. The release candidate needs to be deployed to production, without disrupting the users or introducing risks. LiveRebel makes production updates quick, automated, non-disruptive and reversible. It finishes the job and delivers the updated version right into the users hands. In this talk we will build a full clustered environment and a deployment pipeline so that commits into the trunk would update a live chat server while you keep on chatting.TRANSCRIPT
Jevgeni Kabanov@ekabanov
CEO, ZeroTurnaround
import continuous.delivery.*
Subtitle
Fedex process
•PackageFedex process
•Package
•Dropoff
Fedex process
•Package
•Dropoff
•Transfer
Fedex process
•Package
•Dropoff
•Transfer
•Delivery
Fedex process
•Package
•Dropoff
•Transfer
•Delivery
•Profit!
Fedex process
Java EE
•Package
Java EE
•Package•Test
Java EE
•Package•Test •Approve
Java EE
•Package•Test •Approve•Deploy
Java EE
•Package•Test •Approve•Deploy •Profit!
Java EE
•How do you package the application? •Where did it come from?•Where does it go?•How does it get deployed?•What exactly is in prod now?
Questions?
Fedex FAIL
Software FAIL
How do we fix this?
•Failure•Downtime
Key Problems
Solution:Continuous Delivery
•Automate•Record•Test•Recover
Philosophy
•Orchestration Platform•Delivery Manager•Artifact Repository
The Pipeline
Jenkins(OSS Continuous Integration Server)
Orchestration platform
•Logging•Notifications•Clustered•GUI•Authentication•Authorization
Jenkins
LiveRebel(Commercial Delivery Manager)
•No Downtime•Failsafe Delivery & Recovery•Wide Ecosystem Support•Exact Knowledge•Zero Configuration
What’s so different?
•Deploy/Undeploy•Update•No downtime•No lost sessions•Plain old restarts•Edit in place
What can you do with LiveRebel?
•No good OSS alternative•Supports many containers•No downtime updates•Integrates with OSS projects
Why LiveRebel?
Nexus(OSS/Commercial Artifact Repository)
•Repositories•Authentication•Authorization•Logging
Key Features
Now let’s build a pipeline!
Build Test QA Prod
The Pipeline / The Repos
Tomcat #1
Tomcat #2Tomcat #3
Apache LB
Redis #1Redis #1Redis #3
LiveRebelNexus
Jenkins
•Build the artifact•Upload to “build” repository
Build
•Download “build” artifact•Create a new test deployment•Run acceptance tests•Upload “test” artifact
Test
•Download “test” artifact•Send email to QA to begin testing•Upload “qa” artifact•When QA finished!•Clean up test deployment
QA
•Download “qa” artifact•Upload “rc” artifact•Send email to Biz for decision•Deploy to production
PROD
•Database•Configuration & Environment•Tests & Monitoring
Things Not Covered
•How do you package the application? •Where did it come from?•Where does it go?•How does it get deployed?•What exactly is in prod now?
Questions?
•Jenkins jobs represent the workflow•Nexus is a sync-point for long-running workflows•LiveRebel manages apps and users •Manual flows with email/REST•Tracking with scripts & text files
Conclusions