using docker to improve web developer productivity devopsdays austin - may 5
DESCRIPTION
Talk given by Flux7 CEO, Aater Suleman at DevOpsdays Austin on Using Docker to Improve Web Developer Productivity.TRANSCRIPT
Using Docker to Improve Web Developer Productivity
Presented by Aater Suleman, PhD
Who am I?Aater Suleman
Geek, Architect, Developer, Ops ⇒ DevOps Co-founder & CEO Flux7 Labs Part-time UT Austin Professor
Flux7: Cloud and DevOps Solutions
Cloud and Devops for Web teamsEnterprise DevOps management
Clients:
Why Developer Workflow?
Web Developer Workflow
Developer Local Test QA Production
Least expensive but most executed
Most expensive but least executed
Development Environment
Developer Local Test QA Production
Least expensive but most executed
Most expensive but least executed
95-99% of developer time is spent in
the development environment
Developer environment must be ...
Quick Production-like Repeatable
Production-like
Each tier runs same OS & software versions
Tiers are isolated from each other as in production
Tiers are isolated from the developers device
[A client] never realized they needed to run gem install bundle on a tier until we put the two services on different servers.
Production-like
Our URL: http://xxxx.xxxxxx.xxx is not loading in IE and Safari but is in
Chrome/Firefox. This is only in AWS QA and not in AWS DEV or PROD. We are
wondering if there is something in the infra that is causing this behavior.
-Thx
Quick
Waiting Frustration Distraction
“When I fire a local QA run in a mature project, it takes 8 mins. I check cricinfo.com and facebook while it runs”
Developer at a Fortune 100 company
Repeatable
Here is a Bash script to run on
your device
Follow these docs and ask away if any questions
Here is a Vagrant file
Install software PHP and MySQL on your device
Prone to human errors Prone to 3rd party changes
Repeatable
Here is a Bash script to run on
your device
Follow these docs and ask away if any questions
Here is a Vagrant file
Install software PHP and MySQL on your device
Prone to human errors Prone to 3rd party changes
[A client] supported MySQL Percona v5.53x. Vendors updated the version to 5.54 and broke our software.
Our Solution
Developer Local Test QA Production
One Docker container for each application tier
Run a VM with folder sync and port forwarding
Installs Docker Downloads containers (if not available)
Used to bootstrap Docker containers in dev and AWS instances in prod
AppWeb
DB
LogStashMem
$
HTTP
SSH
Virtualbox VM
App Code and Logs
Laptop
devenv.sh for interacting with
the setup
Docker Containers
Redis
Result: We no longer hear ...
“works on my machine but not on yours”
“I have been helping the [new hire]
setup her environment all day”
“IT guys must do something differently in staging”
“I can’t try it because IT has not
updated the dev environment”
Who sees the benefit?
Bankend Developers
● Homogenous environment● Quick feedback● Agile: break it fearlessly
Front-end HTML Devs
● Quick visual feedback with populated data
● Avoid installations
Ops
Only one standardized dev environment to support
Management
● Less conflict● Faster time to market● Happier engineers● Easier hiring
Why we used Docker?
Minimal Performance
Overhead
Fast Boot and Shutdown
Smaller files sizes and ability to diff
containers
Container will run in the
Cloud
Variation: Today
Developer Local Test QA Production
Variation
Developer Local Test QA Production
Use Docker alone with boot2docker and Dockerfiles
Requires docker in entire workflow including prod
Docker will release version 1.0 soon
Demo
How to start the environment?
How to stop the environment?
How to edit code and refresh in the
browser?
Thank You.Twitter: @Flux7Labs
Website: www.flux7.com
Flux7 Docker Resources: http://flux7.com/docker/