dockercon - lessons from using docker to improve web developer productivity

26
Lessons From Using Docker to Improve Web Developer Productivity Presented by: Kevin Ready and Aater Suleman, PhD

Upload: flux7

Post on 27-Jan-2015

120 views

Category:

Technology


0 download

DESCRIPTION

Talk Co-presented by Auto.com and Flux7 at DockerCon 2014

TRANSCRIPT

Page 1: DockerCon - Lessons from Using Docker to Improve Web Developer Productivity

Lessons From Using Docker to Improve Web Developer Productivity

Presented by:Kevin Ready and Aater Suleman, PhD

Page 2: DockerCon - Lessons from Using Docker to Improve Web Developer Productivity

We will discuss ...

Auto.com’s experiences with Docker and fully automated infrastructure management in the cloud.

A new question: What does it mean to run a full stack ‘production’ environment on a developer laptop? Can it even be done?

Page 3: DockerCon - Lessons from Using Docker to Improve Web Developer Productivity

Today’s Presenters:

Kevin Ready

A serial entrepreneur and author

General Manager, CoStar Group (NASDAQ: CSGP)

General Manager at Auto.com

Contributor at Forbes on Startups and Entrepreneurship

Startup mentor and advisor at TechRanch Austin.

Page 4: DockerCon - Lessons from Using Docker to Improve Web Developer Productivity

Today’s Presenters:Aater Suleman

Co-founder & CEO Flux7

Faculty, University of Texas at Austin

Flux7: Cloud and DevOps Solutions

Cloud and Devops for Web teams

Enterprise DevOps management

Clients:Partners:

Page 5: DockerCon - Lessons from Using Docker to Improve Web Developer Productivity

Auto.com’s Infrastructure Team

Rick Saenz

Senior Software Engineer, Auto.com

Chuck LemonsDirector of Engineering,

Auto.com

Managing the details of migrating Auto.com’s complex environment and

processes to the chef and docker automation platform.

Page 6: DockerCon - Lessons from Using Docker to Improve Web Developer Productivity

Flux7’s Team

Vikram Nallamala Nikos LakoutsisCloud Engineer,

Flux7

Managing the automation of Auto.com’s new developer environment.

DevOps Engineer, Flux7

Page 7: DockerCon - Lessons from Using Docker to Improve Web Developer Productivity

What is auto.com?

An Innovation Initiative of Cars.com

Page 8: DockerCon - Lessons from Using Docker to Improve Web Developer Productivity
Page 9: DockerCon - Lessons from Using Docker to Improve Web Developer Productivity
Page 10: DockerCon - Lessons from Using Docker to Improve Web Developer Productivity
Page 11: DockerCon - Lessons from Using Docker to Improve Web Developer Productivity

Our Technology Stack At A Glance

Page 12: DockerCon - Lessons from Using Docker to Improve Web Developer Productivity

Auto.com’s “Big Plan” for Cloud

Push-Button deployment of infrastructure:

Inclusive of everything from

Security

App and Database servers

Load Balancing

SOA

Queues

Data Processing

Page 13: DockerCon - Lessons from Using Docker to Improve Web Developer Productivity

Local Dev Environment That Matches Production

The “Holy Grail” of dev environment management

Now possible in all its complexity due to Docker.

Page 14: DockerCon - Lessons from Using Docker to Improve Web Developer Productivity

Production Environment at a glance

Page 15: DockerCon - Lessons from Using Docker to Improve Web Developer Productivity

Environment Management

Dev

QA

SandBox

Production

Amazon AWS

From ad-hoc to automated via

docker

A move to automation...

Page 16: DockerCon - Lessons from Using Docker to Improve Web Developer Productivity

How We Got There: Prod on A Laptop

Developer Local Test QA Production

Page 17: DockerCon - Lessons from Using Docker to Improve Web Developer Productivity

One Docker container for each application tier

Run a VM with folder sync and port forwarding

Isolates dev environment from developer’s laptop

Used to provision Docker containers in both dev and prod

Page 18: DockerCon - Lessons from Using Docker to Improve Web Developer Productivity

Shared folder for code and

logs

AppWeb

DB

LogStashMem

$

HTTP

SSH

Virtualbox VM

App Code and Logs

Laptop

run scripts on the laptop for

interacting with the environment

Docker Containers

Redis

Page 19: DockerCon - Lessons from Using Docker to Improve Web Developer Productivity

These Scripts Make a Working System

bootstrap_container

bootstrap_containers

build_base_image

build_from_scratch

clean_for_docker

copy_etc_hosts

create_etc_hosts

create_etc_hosts_for

deploy_app

help

plumb_container

plumb_containers

prep_vm

provision_container

push_etc_hosts

restart_container

restart_unicorn

retry_thrice

rm_containers

run_container

run_container_raw

run_containers

setup_ssh_keys

stop_container

stop_containers

Page 20: DockerCon - Lessons from Using Docker to Improve Web Developer Productivity

A Full Production Database on a Laptop?

Multi-GB Production database won’t run

on a laptop

Strategically sampled data set

The Solution

Rule: Development uses fresh production data

Page 21: DockerCon - Lessons from Using Docker to Improve Web Developer Productivity

SQS Runs In Cloud … Not A Laptop

Production uses Amazon SQS

Rule #2: No AWS Dependencies in Dev

Modified app to use RabbitMQ

Rule #1: Environment is Identical in Dev to Prod

The Solution

Page 22: DockerCon - Lessons from Using Docker to Improve Web Developer Productivity

Service Addressing In Dev

Production uses static IP addresses

dev uses /etc/hosts,

prod uses Route53

Rule: Service addressing transparent between Dev and

Prod for developers

The Solution

Page 23: DockerCon - Lessons from Using Docker to Improve Web Developer Productivity

Demo

How to provision the environment on

a new laptop

How to edit code and refresh in the

browser

Page 24: DockerCon - Lessons from Using Docker to Improve Web Developer Productivity

Automation Benefits

Innovation: Easier to Innovate when cost of being wrong is low

Continuity: Organizational ownership of operations knowledge - very valuable for business continuity.

Faster Iteration: High fidelity and confidence in Dev and QA means means faster iteration of product

Talent: Willingness to experiment with advanced technology like docker attracts talented contributors to our team

Page 25: DockerCon - Lessons from Using Docker to Improve Web Developer Productivity

Automation Changes Behavior

Automation something that we ‘have’ - it is something that we ‘are’. It is our process.

“Use it or lose it”

Page 26: DockerCon - Lessons from Using Docker to Improve Web Developer Productivity

Thank You!Twitter: @officialautocom @Flux7Labs

Website: www.auto.com www.flux7.com

More Docker Resources: http://flux7.com/docker/