Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CI/CD en Invision

CI/CD en Invision

Charla explicando la ingeniería de CI/CD en mi trabajo (invisionapp.com) Fue en un drinkup de Eventbrite, Mendoza, Argentina

Avatar for Pablo Fredrikson

Pablo Fredrikson

January 12, 2017
Tweet

More Decks by Pablo Fredrikson

Other Decks in Technology

Transcript

  1. Pablo Fredrikson @pablokbs • Senior SRE @ Invision • 11

    años con Linux / Software libre • 2 años con Invision
  2. Historia • 1 Jenkins configurado a mano por SRE •

    15 desarrolladores / 5 microservicios / 5 entornos / 10 cookbooks • Entornos empezaron a crecer • Servicios en diferentes lenguajes y versiones • Más gente empezaba a usar Jenkins • Más gente cometía errores • Jenkins se hacía lento • Jefes se quejaban
  3. Historia • Job DSL plugin • Docker! • Capistrano •

    Chef job('MiTrabajo') { scm { github("[email protected]:pablokbs/myapp.git") } triggers { scm('*/15 * * * *') } steps { shell('deploy.sh') } }
  4. Historia • Plugins con chef q = "roles:#{fetch(:application)} \ AND

    roles:#{fetch(:chef_role)} \ AND chef_environment:#{fetch(:environment)}" servers = query.search( :node, q, :filter_result => { :hostname => ["hostname"], :ip_address => ["ipaddress"], :roles => ["roles"] } ).first Capistrano
  5. Lo bueno y malo • Deploys muy rápidos (en algunos

    casos tomaban 10 segundos) • 25 microservicios x 20 entornos x 2/3 branches (promedio) + PR Test + Cookbooks = 1700 trabajos • 1 Master con Esclavos en ASG con Docker (Promedio 3 nodos c3.8xlarge [60gb RAM - 32 CPU] durante el dia) • Gente podía cambiar de entorno fácilmente usando Job DSL • Job DSL no era muy feliz • Lo hacíamos todo nosotros (no escala)
  6. Distribuir el trabajo • Nuevo management, nueva filosofía • Todos

    los equipos son startups (responsables de principio a final) • Los SRE no deberían ser los “Gatekeepers” sino que deberían ocupar su tiempo en brindar herramientas para los desarrolladores
  7. Codeship • SaaS (cada equipo es una startup) • Docker!

    • Tests y deploys distribuidos y mantenidos por sus equipos en el mismo repo • Sintaxis muy simple y fácil de probar localmente - name: Tests type: serial service: terraform_test encrypted_dockercfg_path: dockercfg.encrypted steps: - name: "Running test" command: make test
  8. Rosie • Chatbot en Slack para deploys sin interacción de

    SREs • rosie deploy uploader to production • Rollbacks sencillos y rápidos
  9. El futuro: R.U.D.I. • Deploys de infraestructura completa con terraform

    (DNS, EC2, RDS, Certificados, Deploys) • Chaos monkey