Using Docker to Improve Web Developer Productivity DevOpsdays Austin - May 5

18,317 views

Published on

Talk given by Flux7 CEO, Aater Suleman at DevOpsdays Austin on Using Docker to Improve Web Developer Productivity.

Published in: Technology, Business

Using Docker to Improve Web Developer Productivity DevOpsdays Austin - May 5

  1. 1. Using Docker to Improve Web Developer Productivity Presented by Aater Suleman, PhD
  2. 2. 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 teams Enterprise DevOps management Clients:
  3. 3. Why Developer Workflow?
  4. 4. Web Developer Workflow Developer Local Test QA Production Least expensive but most executed Most expensive but least executed
  5. 5. 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
  6. 6. Developer environment must be ... QuickProduction-like Repeatable
  7. 7. 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.
  8. 8. 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
  9. 9. 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
  10. 10. 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
  11. 11. 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.
  12. 12. Our Solution Developer Local Test QA Production
  13. 13. 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
  14. 14. AppWeb DB LogStash Mem $ HTTP SSH Virtualbox VM App Code and Logs Laptop devenv.sh for interacting with the setup Docker Containers Redis
  15. 15. 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”
  16. 16. 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
  17. 17. 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
  18. 18. Variation: Today Developer Local Test QA Production
  19. 19. 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
  20. 20. Demo How to start the environment? How to stop the environment? How to edit code and refresh in the browser?
  21. 21. Thank You. Twitter: @Flux7Labs Website: www.flux7.com Flux7 Docker Resources: http://flux7.com/docker/

×