import continuous.delivery.*; - Jevgeni Kabanov

Preview:

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.

Citation preview

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

Q & Ahttp://0t.ee/importcd

Recommended