using docker to improve web developer productivity devopsdays austin - may 5

Post on 08-Sep-2014

4.367 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

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/

top related