import continuous.delivery.*; - jevgeni kabanov

43
Jevgeni Kabanov @ekabanov CEO, ZeroTurnaround import continuous.delivery.*

Upload: jaxconf

Post on 21-Jun-2015

383 views

Category:

Technology


5 download

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

Page 1: import continuous.delivery.*;  - Jevgeni Kabanov

Jevgeni Kabanov@ekabanov

CEO, ZeroTurnaround

import continuous.delivery.*

Page 2: import continuous.delivery.*;  - Jevgeni Kabanov

Subtitle

Page 3: import continuous.delivery.*;  - Jevgeni Kabanov

Fedex process

Page 4: import continuous.delivery.*;  - Jevgeni Kabanov

•PackageFedex process

Page 5: import continuous.delivery.*;  - Jevgeni Kabanov

•Package

•Dropoff

Fedex process

Page 6: import continuous.delivery.*;  - Jevgeni Kabanov

•Package

•Dropoff

•Transfer

Fedex process

Page 7: import continuous.delivery.*;  - Jevgeni Kabanov

•Package

•Dropoff

•Transfer

•Delivery

Fedex process

Page 8: import continuous.delivery.*;  - Jevgeni Kabanov

•Package

•Dropoff

•Transfer

•Delivery

•Profit!

Fedex process

Page 9: import continuous.delivery.*;  - Jevgeni Kabanov

Java EE

Page 10: import continuous.delivery.*;  - Jevgeni Kabanov

•Package

Java EE

Page 11: import continuous.delivery.*;  - Jevgeni Kabanov

•Package•Test

Java EE

Page 12: import continuous.delivery.*;  - Jevgeni Kabanov

•Package•Test •Approve

Java EE

Page 13: import continuous.delivery.*;  - Jevgeni Kabanov

•Package•Test •Approve•Deploy

Java EE

Page 14: import continuous.delivery.*;  - Jevgeni Kabanov

•Package•Test •Approve•Deploy •Profit!

Java EE

Page 15: import continuous.delivery.*;  - Jevgeni Kabanov

•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?

Page 16: import continuous.delivery.*;  - Jevgeni Kabanov

Fedex FAIL

Page 17: import continuous.delivery.*;  - Jevgeni Kabanov

Software FAIL

Page 18: import continuous.delivery.*;  - Jevgeni Kabanov
Page 19: import continuous.delivery.*;  - Jevgeni Kabanov

How do we fix this?

Page 20: import continuous.delivery.*;  - Jevgeni Kabanov

•Failure•Downtime

Key Problems

Page 21: import continuous.delivery.*;  - Jevgeni Kabanov

Solution:Continuous Delivery

Page 22: import continuous.delivery.*;  - Jevgeni Kabanov

•Automate•Record•Test•Recover

Philosophy

Page 23: import continuous.delivery.*;  - Jevgeni Kabanov

•Orchestration Platform•Delivery Manager•Artifact Repository

The Pipeline

Page 24: import continuous.delivery.*;  - Jevgeni Kabanov

Jenkins(OSS Continuous Integration Server)

Page 25: import continuous.delivery.*;  - Jevgeni Kabanov

Orchestration platform

Page 26: import continuous.delivery.*;  - Jevgeni Kabanov

•Logging•Notifications•Clustered•GUI•Authentication•Authorization

Jenkins

Page 27: import continuous.delivery.*;  - Jevgeni Kabanov

LiveRebel(Commercial Delivery Manager)

Page 28: import continuous.delivery.*;  - Jevgeni Kabanov

•No Downtime•Failsafe Delivery & Recovery•Wide Ecosystem Support•Exact Knowledge•Zero Configuration

What’s so different?

Page 29: import continuous.delivery.*;  - Jevgeni Kabanov

•Deploy/Undeploy•Update•No downtime•No lost sessions•Plain old restarts•Edit in place

What can you do with LiveRebel?

Page 30: import continuous.delivery.*;  - Jevgeni Kabanov

•No good OSS alternative•Supports many containers•No downtime updates•Integrates with OSS projects

Why LiveRebel?

Page 31: import continuous.delivery.*;  - Jevgeni Kabanov

Nexus(OSS/Commercial Artifact Repository)

Page 32: import continuous.delivery.*;  - Jevgeni Kabanov

•Repositories•Authentication•Authorization•Logging

Key Features

Page 33: import continuous.delivery.*;  - Jevgeni Kabanov

Now let’s build a pipeline!

Page 34: import continuous.delivery.*;  - Jevgeni Kabanov

Build Test QA Prod

The Pipeline / The Repos

Page 35: import continuous.delivery.*;  - Jevgeni Kabanov

Tomcat #1

Tomcat #2Tomcat #3

Apache LB

Redis #1Redis #1Redis #3

LiveRebelNexus

Jenkins

Page 36: import continuous.delivery.*;  - Jevgeni Kabanov

•Build the artifact•Upload to “build” repository

Build

Page 37: import continuous.delivery.*;  - Jevgeni Kabanov

•Download “build” artifact•Create a new test deployment•Run acceptance tests•Upload “test” artifact

Test

Page 38: import continuous.delivery.*;  - Jevgeni Kabanov

•Download “test” artifact•Send email to QA to begin testing•Upload “qa” artifact•When QA finished!•Clean up test deployment

QA

Page 39: import continuous.delivery.*;  - Jevgeni Kabanov

•Download “qa” artifact•Upload “rc” artifact•Send email to Biz for decision•Deploy to production

PROD

Page 40: import continuous.delivery.*;  - Jevgeni Kabanov

•Database•Configuration & Environment•Tests & Monitoring

Things Not Covered

Page 41: import continuous.delivery.*;  - Jevgeni Kabanov

•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?

Page 42: import continuous.delivery.*;  - Jevgeni Kabanov

•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

Page 43: import continuous.delivery.*;  - Jevgeni Kabanov

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