Beyond CI to Production Scale PaaS with Docker
Platform Engineering @ PayPal
āž¢ Several thousand OpenStack servers across multiple data centers
āž¢ More than 3000 PayPal developers supported
āž¢ Thousands of application deployments performed every day
āž¢ 165 Million active PayPal customer accounts
āž¢ Presence in 203 markets and 100 currencies
āž¢ $235 Billion payment volume
āž¢ 12.5 million payment transactions every day
Boost developer productivity
Support ever increasing scale of operations
Last year at DockerCon 2014…
āž¢ 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
How PaaS Orchestrates The Docker PDLC
Building & Storing Docker Images
Docker Registry HA Setup
āž¢ Supervisord as the process manager
āž¢ Logrotate for registry and nginx logs
āž¢ Elasticsearch plugin for indexing
āž¢ Swift plugin for storage
āž¢ Basic authentication
āž¢ Ansible playbook for setting up the registry
āž¢ HA running behind F5 load balancer
āž¢ Docker load used to deploy the registry for
the first time
āž¢ Swift auto-sync between data centers
Features
Docker Image Index
Challenges
āž¢ Production firewalls block multicast
clustering protocol
āž¢ ES sniffing timeout issues when ES
nodes were unavailable
āž¢ ES split-brain problems with
clustering
Solutions
āž¢ ES indexing plugin for the
Docker Registry
āž¢ Zookeeper transport plugin for
ES Python client
āž¢ Persisting ES index data using
OpenStack Cinder
Cross-datacenter View
Deploying Docker Images In Production
āž¢ DNS-based ATS discovery per DC
āž¢ Header rewrite plugin
āž¢ Custom Cache rules
āž¢ Custom SSL certs
āž¢ ATS Ansible deployment
Features
Dockerized Development Environments
āž¢ Building an application stack should be simple, but it’s not!
āž¢ Development environments are snow-flakes
āž¢ Development environments should be self-contained
Container with Dev configuration
Container with Stage configuration
Demo
Thank you
Ashish Hunnargikar
Software Engineer
@hunnarg
Mohit Soni
Software Engineer
@mosoni
#dockercon

DockerCon SF 2015: Beyond CI to Production Scale PaaS with Docker

  • 1.
    Beyond CI toProduction Scale PaaS with Docker
  • 2.
    Platform Engineering @PayPal āž¢ Several thousand OpenStack servers across multiple data centers āž¢ More than 3000 PayPal developers supported āž¢ Thousands of application deployments performed every day āž¢ 165 Million active PayPal customer accounts āž¢ Presence in 203 markets and 100 currencies āž¢ $235 Billion payment volume āž¢ 12.5 million payment transactions every day Boost developer productivity Support ever increasing scale of operations
  • 3.
    Last year atDockerCon 2014… āž¢ 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
  • 4.
    How PaaS OrchestratesThe Docker PDLC
  • 5.
    Building & StoringDocker Images
  • 6.
    Docker Registry HASetup āž¢ Supervisord as the process manager āž¢ Logrotate for registry and nginx logs āž¢ Elasticsearch plugin for indexing āž¢ Swift plugin for storage āž¢ Basic authentication āž¢ Ansible playbook for setting up the registry āž¢ HA running behind F5 load balancer āž¢ Docker load used to deploy the registry for the first time āž¢ Swift auto-sync between data centers Features
  • 7.
    Docker Image Index Challenges āž¢Production firewalls block multicast clustering protocol āž¢ ES sniffing timeout issues when ES nodes were unavailable āž¢ ES split-brain problems with clustering Solutions āž¢ ES indexing plugin for the Docker Registry āž¢ Zookeeper transport plugin for ES Python client āž¢ Persisting ES index data using OpenStack Cinder
  • 8.
  • 9.
    Deploying Docker ImagesIn Production āž¢ DNS-based ATS discovery per DC āž¢ Header rewrite plugin āž¢ Custom Cache rules āž¢ Custom SSL certs āž¢ ATS Ansible deployment Features
  • 10.
    Dockerized Development Environments āž¢Building an application stack should be simple, but it’s not! āž¢ Development environments are snow-flakes āž¢ Development environments should be self-contained
  • 11.
    Container with Devconfiguration
  • 12.
    Container with Stageconfiguration
  • 13.
  • 14.
    Thank you Ashish Hunnargikar SoftwareEngineer @hunnarg Mohit Soni Software Engineer @mosoni #dockercon