The goal of Continuous Delivery is to move your production release frequency from months to weeks or even days. This all sounds great, but is Continuous Delivery achievable in a complex enterprise IT environment running Java EE middleware such as WebLogic, WebSphere or JBoss?
In this deck, Andrew Phillips, VP Products, XebiaLabs and Sriram Narayan, Product Principal, ThoughtWorks Studios examine the challenges of Continuous Delivery in a complex environment, the key drivers and benefits for moving to Continuous Delivery and simple ways to get started. We also demonstrate a Java EE delivery pipeline using ThoughtWorks Go and XebiaLabs Deployit that helps you get started and addresses the challenges commonly encountered in enterprise environments.
How to implement continuous delivery with enterprise java middleware?
1. Implemen'ng
Con'nuous
Delivery
with
Enterprise
Middleware
Sriram
Narayan,
ThoughtWorks
Studios
Andrew
Phillips,
XebiaLabs
2. About Sriram
•
Product principal at ThoughtWorks Studios
•
Owner of Go’s deployment stream of work
•
Ex-member of ThoughtWorks’ Tech Advisory Board
3. About Andrew
•
VP Products for XebiaLabs
•
Lots of enterprise software development on highperformance systems
•
Been on both sides of the “Dev…Ops” fence
•
Active open source contributor and committer:
jclouds, Akka, Gradle and others
•
Cloud, PaaS & JVM language fan (mainly Scala, Clojure)
•
Regular meetup, conference etc. presenter
4. Agenda
•
Introduction to ThoughtWorks and XebiaLabs
•
Continuous Delivery in 60s
•
Continuous Delivery in the Enterprise
•
From a “vanilla” pipeline to an
enterprise CD approach
•
Getting started
•
Q&A
6. About XebiaLabs
o
o
Headquartered in Boston, Massachusetts
Global development and support offices in
US, EMEA and APAC
Deployit is our market-leading Application Release
Automation product.
Benefits include:
o Reduce development applications costs
o Accelerate application time to market
o Bridge the gap between Development and Operations
8. What is Continuous Delivery?
Continuous delivery is
an approach to delivering software that
reduces the cost, time, and risk
of delivering incremental changes to users.
9. Continuous Delivery means…
o
Your software is releasable throughout its lifecycle
o
Your team prioritizes keeping the software releasable
over working on new features
o
Anybody can get fast, automated feedback on the
production readiness of your systems any time
somebody makes a change to them
o
You can perform push-button releases of any version
of the software on demand.
10. Continuous Delivery isn’t just Automation
o
Org design
o
Devops – CAMS
o
Culture, automation, measurement, sharing
o
Pipeline Modelling (value stream)
o
Visualization
o
Orchestration
o
Traceability and auditability
o
Access control
11. Continuous Delivery in the Enterprise
o
Complex projects and applications consisting of many
components delivered by multiple teams
o
Complex dependency trees, fan-in
o
Polyglot applications, persistence
o
Diverse, heterogeneous deployment landscape
o
Environments : Physical, virtual, cloud
o
Multi-site deployment e.g. CDNs
o
Caches, laod balancers, search indexes, analytics
data store
o
Scheduled deployments
o
Integration with Release Management
o
o
E.g. how to gate a pipeline via change tickets?
Need for end-to-end audit trail
12. A Java EE Example
o
Deliverable: 2 EAR files with 2 WAR files each
o
o
Also database changes, configuration files and server
configuration settings
o
o
One of the WAR files built by a different team
Datasources, queues etc.
Target environments
o
Functional Test: Single server with in-memory DB
o
Integration Test: 2-server clustered with external DB
o
Performance Test: load-balanced 4-server cluster with
external DB
o
Release Management requirement: deployment to
Performance Test environment requires change ticket
o
Trigger: any code commit or update of the “external” WAR
project
13. A Java EE Example
STEPS
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Compile all changed WAR projects, take latest artifact for
others
Compile EAR projects
Run unit tests
Run code quality build
Create deployment package (including SQL changes,
configuration files etc.)
Deploy to Functional Test env
Run functional tests
Deploy to Integration Test env
Run integration tests
Verify change ticket available for performance tests
Deploy to Performance Test env
Run performance tests,
Update change ticket
14. Notify business owner that build is “ready for prod”
14. A Vanilla Pipeline
Retrieve
WAR4
Build EAR1
Code
quality
build2
Package
Deploy to FT
env with
script
Deploy to IT
env with
script
Run
integration
tests
Manually
verify ticket
Deploy to PT
env with
script
Manually
update
ticket
Send
notification
Build WAR1
Build WAR2
Build WAR3
Build EAR2
Code
quality
build1
Run
functional
tests
Run perf
tests
15. A Vanilla Pipeline
o
“Straight” translation of the release plan
o
All steps happen serially
o
o
Even though not all steps depend on the previous one
Manual activities remain
o
Will become a bottleneck over time
o
Scripting, scripting, scripting
o E.g. packaging of the deliverable, deployment scripts
to the different environments, some testing
o
No clear visualization of component relationships and
dependencies
o
No clear insight into which code and features make up
which components
16. Enterprise CD
Build
comp1
Common
frmwk1
Pkg svc1
Build
comp2
Deploy to FT
with
Deployit
Run
functional
tests
Deploy to IT
with
Deployit
Run
integration
tests
Pkg app1
Common
frmwk 2
Build
comp3
Pkg svc2
Retrieve
comp4
Deploy to PT
with
Deployit
Verifies and
updates change
ticket
Run perf
tests
Send
notification
17. Enterprise CD
o
Optimized pipeline taking into account component
dependencies
o
o
From 18 to 8 stages: 125% speedup!
No more manual tasks
o
o
o
Release management integration handled by ARA tool
Provides end-to-end audit trail
Minimized scripting
o
Packaging and deployment handled by ARA tool
o
Clear visualization of component relationships and
dependencies
o
Clear insight into which code and features make up
which components
21. Enterprise Pipeline: Permit, Trace and Audit
o
Manual, API or timer trigger
o
Re-trigger older revision with
different configuration
o
Visualize
o
Compare
Granular Email notifications
Role based access
o View
o
o
Pipeline execution history
o
o
o
o
Operate
Admin
Audit, access control
o
o
Pausing a Pipeline
Cancel a stage/job run
o
Config change
29. Recap
Intro to Continuous Delivery
o Releasable software throughout its lifecycle!
o Fast, automated feedback on production readiness
o On-demand releases
o Enterprise Challenges
o Complex project and technical landscape
o Complex dependency and component graphs
o Control (Release Management) and auditing
requirements
o Introduction to Go
o Agnostic, auditable orchestration
o Value stream mapping
o
o
Introduction to Deployit
o Enterprise deployment automation
o On-demand environments
30. More Info
o Dzone Refcard: “Continuous Delivery Patterns”
refcardz.dzone.com/refcardz/continuous-delivery-patterns
o Dzone Refcard: "Preparing for Continuous Delivery”
refcardz.dzone.com/refcardz/preparing-continuous-delivery
o Application Release Trends 2013 Survey
go.xebialabs.com/Survey2013.htm
o Get Ideas with Go
www.thoughtworks.com/go
o Continuous Delivery Resources from ThoughtWorks
www.thoughtworks.com/insights/continuous-delivery
31. Thank You!
CONTACT DETAILS
o Sriram Narayan sriram.narayan at thoughtworks dot com
o Andrew Phillips: aphillips at xebialabs dot com
GET STARTED
o Try Go:
www.thoughtworks.com/go
o Try Deployit:
www.xebialabs.com/trial
THOUGHTWORKS
XEBIALABS
www.thoughtworks.com/products
www.xebialabs.com/products
@thoughtworks
blog.xebialabs.com
youtube.com/user/
@xebialabs
ThoughtworksStudios
youtube.com/xebialabs