Architecting for Continuous Delivery and Zero Downtime

Learn what it takes to architect enterprise applications so that they can be delivered continuously

About the Trainer

Axel Fontaine is an entrepreneur, public speaker, continuous delivery expert and independent consultant based in Munich.

He specializes in Continuous Delivery and hates complexity with a passion. He is the founder and the project lead of Flyway, the agile database migration framework for Java. He regularly speaks at technical conferences.

He is currently working on Boxfuse to radically simplify the deployment of Java apps, by turning them into ultra-compact perfectly isolated secure VMs within seconds and deploying them on any hypervisor with a single command.

Overview

Continuous Delivery is all the hype these days. This training makes it a reality. We start with an overview of what Continuous Delivery is and how it can help you. We then quickly dive into the details. You will learn what it takes to architect a Java application so that it can be delivered continuously into production, with code, configuration and database delta, multiple times a day, with Zero Downtime.

Buckle up! This class is intensive and hands-on. You build an entire Java web app to the point where it deploys continuously, with zero downtime. We tackle the hard problems with a battle-tested approach you will be able to apply immediately.

If you are an architect or a developer and want to gain a solid understanding of the techniques you need to make Continuous Delivery and Zero Downtime a success, this training is for you.

Outline

Introduction to Continuous Delivery

  • What is Continuous Delivery
  • Where does it fit in
  • Pre-requisite techniques

Automated Testing

  • Tests as risk reduction
  • Fast feedback by test categorization
  • Acceptance tests and the page object pattern

Continuous Integration and Releases

  • CI Server and Artifact Repository
  • Rethinking versions and releases
  • Automated deployment
  • Configuration and Environments
  • Dealing with multiple environments
  • Environment Detection
  • Rethinking configuration

Database Migrations

  • The challenges with database changes
  • Database Migrations
  • Pitfalls and alternatives to rollback

Keeping Software Releasable

  • Keeping software releasable at all times
  • Feature toggles
  • Expand and contract

Zero Downtime

  • The challenges with state
  • Rethinking Sessions
  • Integration with Load Balancers

Immutable Infrastructure

  • The future of application delivery
  • Self-identifying software
  • Immutable Infrastructure

Requirements

This training assumes a good understanding of software architecture, the Java language, Linux and relational databases in general.

Attendees should bring a laptop adhering to the following specs:

Hardware
- Modern 64-bit Intel/AMD CPU with virtualization features (VT-x for Intel CPUs) enabled (Core i5/i7 or similar) - 8 GB RAM or more (4 or 6 GB could work, but not recommended) - 30-50 GB free disk space on a modern disk (preferably an SSD)

Software
- A 64-bit OS (Windows, Mac, Linux) - Enough rights to perform administrator or sudo commands - VirtualBox 4.3 or later (https://www.virtualbox.org/wiki/Downloads) - Vagrant 1.7 or later (http://www.vagrantup.com/downloads.html) - Your favorite IDE (IntelliJ, Eclipse) - Git (Windows users, make sure to use https://msysgit.github.io/ with the option to add the unix tools to the Windows CMD path) - JDK 7 or 8 (with a correctly configured JAVA_HOME environment variable) - Maven 3.2 or newer

Sign up and stay in the loop

Be the first to know about upcoming workshops, courses, talks and events

Learn more

Great course. Almost everything was new to me but was easily understandable and Axel made himself very easily understood. Beginning tomorrow I will be able to take a lot of the features that were demonstrated and start implementing them, or working towards them (given the budget is there). Would recommend the course to everyone!