dockercon - lessons from using docker to improve web developer productivity
DESCRIPTION
Talk Co-presented by Auto.com and Flux7 at DockerCon 2014TRANSCRIPT
Lessons From Using Docker to Improve Web Developer Productivity
Presented by:Kevin Ready and Aater Suleman, PhD
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?
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.
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:
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.
Flux7’s Team
Vikram Nallamala Nikos LakoutsisCloud Engineer,
Flux7
Managing the automation of Auto.com’s new developer environment.
DevOps Engineer, Flux7
What is auto.com?
An Innovation Initiative of Cars.com
Our Technology Stack At A Glance
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
Local Dev Environment That Matches Production
The “Holy Grail” of dev environment management
Now possible in all its complexity due to Docker.
Production Environment at a glance
Environment Management
Dev
QA
SandBox
Production
Amazon AWS
From ad-hoc to automated via
docker
A move to automation...
How We Got There: Prod on A Laptop
Developer Local Test QA Production
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
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
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
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
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
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
Demo
How to provision the environment on
a new laptop
How to edit code and refresh in the
browser
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
Automation Changes Behavior
Automation something that we ‘have’ - it is something that we ‘are’. It is our process.
“Use it or lose it”
Thank You!Twitter: @officialautocom @Flux7Labs
Website: www.auto.com www.flux7.com
More Docker Resources: http://flux7.com/docker/