Continuous

with Docker and AWS

Delivery

Who is this guy?

Oliver Lade

Software Engineer, Enterprise Digital - Server/API
(started last week)

In a previous life:

  • Study and research at Melbourne Uni
  • Internships at IBM and Google
  • Co-founder and CTO at Urbanetic

Urbanetic Fabric

Technologies

MUtopia Catalyst Fabric
Server Spring Dropwizard / Guice Meteor / Node.js
Database PostGIS Neo4j MongoDB
GUI ExtJS Dojo / Bootstrap Semantic UI
3D Rendering Google Earth Atlas / Cesium Unity → Three.js
Platform PC NeCTAR AWS / Docker
Testing JUnit JUnit / Mockito Velocity

What is
Continuous Delivery?

Continuous Integration (CI)

Deploying with Git

Continuous Delivery (CD)

Continuous Delivery

General Workflow

Continuous Delivery

Objectives

  • Full automation from VCS push to deployment
  • Full transparency of production infrastructure
  • Use best-in-class tools:
    • Git for version control
    • Docker to package and run
    • Docker orchestration to deploy
    • AWS EC2 for IaaS
  • Prefer avoiding vendor lock-in

?

Continuous Delivery

Service Providers

Continuous Delivery

Manual Build

Continuous Delivery

External Build

Great! The end?

Not so fast

  • EC2: Auto-scaling, but 'manual' deployment
  • ECS: Automated deployment, but manual update/scale
  • Elastic Beanstalk: Both, but black box:

Automatic Update & Scaling

With Elastic Beanstalk, you can quickly deploy and 

manage applications in the AWS cloud without worrying about the infrastructure

But what if we are worried about the infrastructure?

logic to automate ECS update and scaling

to the rescue?

Atlassian

Auto-scaling

ECS

Auto-Update

  1. Get notified by completion of build
  2. Find task definitions using that image
  3. Create a new revision of the task definition using the new image tag
  4. Find services using the latest version of that task definition
  5. Update those services to the new revision
  6. Allow ECS to re-deploy tasks from new definition
    (if no capacity, optionally terminate old tasks)

ECS

Summary

  • Continuous Integration (CI) & Continuous Delivery (CD)
  • Variety of interchangeable services
  • Alternative configurations with different systems
  • Custom automatic updating and scaling of ECS

I'm on the bench, ask me anything!

Resources

Continuous Delivery with ECS

By Oliver Lade

Continuous Delivery with ECS

Continuous Delivery (CD) is a great idea, but how can I continuously deliver my Docker app to my AWS infrastructure?

  • 1,315