1 / 12

Delivering eBay's CI Solution with Apache Mesos & Docker

Delivering eBay's CI Solution with Apache Mesos & Docker. Ashish Hunnargikar. Mohit Soni. Software Engineer. Software Engineer. Why we did it. Thousands of VMs dedicated to run Jenkins! Utilization is less than 5 %  VMs idle most of time (no one runs CI builds frequently)

urania
Download Presentation

Delivering eBay's CI Solution with Apache Mesos & Docker

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Delivering eBay's CI Solution with Apache Mesos & Docker Ashish Hunnargikar MohitSoni Software Engineer Software Engineer

  2. Why we did it.... • Thousands of VMs dedicated to run Jenkins! • Utilization is less than 5%  • VMs idle most of time (no one runs CI builds frequently) VM sprawl and poor resource utilization • Polyglot application stacks (Java, C++, Node.js, Python, Scala) • Different OS flavors (Ubuntu & RHEL) • Software version conflicts • Special hardware requirements Build slave management and maintenance is a nightmare

  3. And here’s what we did.... • Mesos for cluster management • Marathon to launch Jenkins masters • Jenkins Mesos-plugin to launch build slaves • Build slaves Dockerized as well as regular

  4. Why use Docker containers? • Managing varied slave flavors in a large cluster is hard! • Docker effectively isolates dependencies inside the container • Docker allows host OS to remain independent of workload dependencies Why build Docker-in-Docker? • Run Docker build/push/pull inside a Docker container • Eliminates redundant CI build dependency downloads • Helps to enforce a heterogeneous Mesos slave cluster

  5. Basic Use CaseBuild C++ & Java applications on both RHEL & Ubuntu Mesos slave host server is running Ubuntu Jenkins job is running builds in a RHEL or Ubuntu container Application dependencies can be preinstalled in base images OR can be downloaded during build time

  6. Advanced Use CaseBuild RHEL & Ubuntu Dockerimages Mesos slave host server is running Ubuntu Jenkins job is running inside a Docker container Jenkins job is building a RHEL/Ubuntu Docker image from an application Dockerfile

  7. Enabling the Docker CI workflow using Jenkins & Mesos

  8. Initial Build StrategyIndividual Docker-in-Docker Setup Complete isolation Docker daemon running inside the Docker container requires privileged mode I/O overhead of downloading and duplicating all the AUFS layers

  9. Optimized Build StrategyShared Docker-in-Docker Setup Docker daemon not required inside the container so no privileged mode Single reusable AUFS image layer cache Redundant network and disk I/O eliminated for layer downloads Lack of isolation for layers

  10. Q&A For more information visit: • Apache Mesos: http://mesos.apache.org • Jenkins Mesos Plugin: https://github.com/jenkinsci/mesos-plugin • Docker: https://www.docker.io • Marathon Framework: https://github.com/mesosphere/marathon www.ebaytechblog.com http://www.ebaytechblog.com/2014/04/04/delivering-ebays-ci-solution-with-apache-mesos-part-i/ http://www.ebaytechblog.com/2014/05/12/delivering-ebays-ci-solution-with-apache-mesos-part-ii/

More Related