Top Banner
Implemen’ng Con’nuous Delivery with Enterprise Middleware Sriram Narayan, ThoughtWorks Studios Andrew Phillips, XebiaLabs
31

How to implement continuous delivery with enterprise java middleware?

Nov 28, 2014

Download

Technology

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.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: How to implement continuous delivery with enterprise java middleware?

Implemen'ng  Con'nuous  Delivery  with  Enterprise  Middleware  Sriram  Narayan,  ThoughtWorks  Studios  Andrew  Phillips,  XebiaLabs  

Page 2: How to implement continuous delivery with enterprise java middleware?

•  Product principal at ThoughtWorks Studios

•  Owner of Go’s deployment stream of work

•  Ex-member of ThoughtWorks’ Tech Advisory Board

About Sriram

Page 3: How to implement continuous delivery with enterprise java middleware?

•  VP Products for XebiaLabs

•  Lots of enterprise software development on high-performance 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

About Andrew

Page 4: How to implement continuous delivery with enterprise java middleware?

•  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

Agenda

Page 5: How to implement continuous delivery with enterprise java middleware?

•  Questions?

•  Submit via the control panel at any time during the presentation

Housekeeping

Page 6: How to implement continuous delivery with enterprise java middleware?

Deployit is our market-leading Application Release Automation product.

o  Headquartered in Boston, Massachusetts o  Global development and support offices in

US, EMEA and APAC

Benefits include: o  Reduce development applications costs o  Accelerate application time to market o  Bridge the gap between Development and Operations

About XebiaLabs

Page 7: How to implement continuous delivery with enterprise java middleware?

About ThoughtWorks Studios

Page 8: How to implement continuous delivery with enterprise java middleware?

Continuous delivery is

an approach to delivering software that

reduces the cost, time, and risk

of delivering incremental changes to users.

What is Continuous Delivery?

Page 9: How to implement continuous delivery with enterprise java middleware?

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.

Continuous Delivery means…

Page 10: How to implement continuous delivery with enterprise java middleware?

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

Page 11: How to implement continuous delivery with enterprise java middleware?

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  E.g. how to gate a pipeline via change tickets?

o  Need for end-to-end audit trail

Continuous Delivery in the Enterprise

Page 12: How to implement continuous delivery with enterprise java middleware?

o  Deliverable: 2 EAR files with 2 WAR files each

o  One of the WAR files built by a different team

o  Also database changes, configuration files and server configuration settings

o  Datasources, queues etc.

o  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

A Java EE Example

Page 13: How to implement continuous delivery with enterprise java middleware?

STEPS

1.  Compile all changed WAR projects, take latest artifact for others

2.  Compile EAR projects 3.  Run unit tests

4.  Run code quality build 5.  Create deployment package (including SQL changes,

configuration files etc.)

6.  Deploy to Functional Test env 7.  Run functional tests 8.  Deploy to Integration Test env

9.  Run integration tests 10.  Verify change ticket available for performance tests 11.  Deploy to Performance Test env

12.  Run performance tests, 13.  Update change ticket

14.  Notify business owner that build is “ready for prod”

A Java EE Example

Page 14: How to implement continuous delivery with enterprise java middleware?

Build WAR1 Build WAR2 Build WAR3 Retrieve WAR4 Build EAR1

Build EAR2 Code quality build1

Code quality build2

Package Deploy to FT

env with script

Run functional

tests

Deploy to IT env with

script

Run integration

tests

Manually verify ticket

Deploy to PT env with

script

Run perf tests

Manually update ticket

Send notification

A Vanilla Pipeline

Page 15: How to implement continuous delivery with enterprise java middleware?

o  “Straight” translation of the release plan

o  All steps happen serially

o  Even though not all steps depend on the previous one

o  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

A Vanilla Pipeline

Page 16: How to implement continuous delivery with enterprise java middleware?

Build comp1

Build comp2

Build comp3

Retrieve comp4

Common frmwk1

Common frmwk 2

Pkg svc1

Pkg app1

Deploy to FT with

Deployit

Run functional

tests

Deploy to IT with

Deployit

Run integration

tests

Run perf tests

Send notification

Pkg svc2

Enterprise CD

Deploy to PT with

Deployit

Verifies and updates change

ticket

Page 17: How to implement continuous delivery with enterprise java middleware?

o  Optimized pipeline taking into account component dependencies

o  From 18 to 8 stages: 125% speedup!

o  No more manual tasks

o  Release management integration handled by ARA tool

o  Provides end-to-end audit trail

o  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

Enterprise CD

Page 18: How to implement continuous delivery with enterprise java middleware?

Enterprise Pipeline: Value Stream

Page 19: How to implement continuous delivery with enterprise java middleware?

Enterprise Pipeline: Package as Material

Page 20: How to implement continuous delivery with enterprise java middleware?

Enterprise Pipeline: Environments, Configuration

Page 21: How to implement continuous delivery with enterprise java middleware?

Enterprise Pipeline: Permit, Trace and Audit

o  Manual, API or timer trigger

o  Re-trigger older revision with different configuration

o  Pipeline execution history

o  Visualize

o  Compare

o  Granular Email notifications

o  Role based access

o  View

o  Operate

o  Admin

o  Audit, access control

o  Pausing a Pipeline

o  Cancel a stage/job run

o  Config change

Page 22: How to implement continuous delivery with enterprise java middleware?

Enterprise Pipeline: Build Orchestration

Page 23: How to implement continuous delivery with enterprise java middleware?

Enterprise Pipeline: Deployment Orchestration

Page 24: How to implement continuous delivery with enterprise java middleware?

Enterprise Deployments: No More Scripting

Page 25: How to implement continuous delivery with enterprise java middleware?

Enterprise Deployments: Full Stack

Page 26: How to implement continuous delivery with enterprise java middleware?

Enterprise Deployments: Multi-Topology

Page 27: How to implement continuous delivery with enterprise java middleware?

Enterprise Deployments: On-demand Environments

Page 28: How to implement continuous delivery with enterprise java middleware?

Enterprise Deployments: Config Drift Analysis

Page 29: How to implement continuous delivery with enterprise java middleware?

o  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  Introduction to Deployit o  Enterprise deployment automation o  On-demand environments

Recap

Page 30: How to implement continuous delivery with enterprise java middleware?

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

More Info

Page 31: How to implement continuous delivery with enterprise java middleware?

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

XEBIALABS

www.xebialabs.com/products

blog.xebialabs.com

@xebialabs

youtube.com/xebialabs

THOUGHTWORKS

www.thoughtworks.com/products

@thoughtworks

youtube.com/user/

ThoughtworksStudios