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

CodePicnic: Despliegue Contínuo de Código, Infraestructura y Documentación

Hector Paz
October 22, 2016

CodePicnic: Despliegue Contínuo de Código, Infraestructura y Documentación

Charla realizada el 22 de Octubre del 2016 en el GDG Lima Summit

Hector Paz

October 22, 2016
Tweet

More Decks by Hector Paz

Other Decks in Technology

Transcript

  1. ¿Qué es CodePicnic? - CodePicnic es una plataforma que permite

    ejecutar y compartir código desde el navegador a través de una terminal web. - Nuestras aplicaciones están desarrolladas en Rails, NodeJS, Go y otros. - Las consolas corren en containers de Docker en instancias de AWS. - Realizamos despliegues diarios a staging y producción. - Nuestra infraestructura escala automáticamente.
  2. Despliegue Contínuo en Codepicnic - Despliegue Contínuo de aplicaciones en

    desarrollo, staging, producción, etc. - Entrega Contínua de infrastructura, documentación, stacks, etc. - Nuestro código (aplicaciones e infraestructura) está en GitHub - Jenkins obtiene el código de los repositorios - Tenemos webhooks cuando queremos que el despliegue sea automático - Las excepciones se trasladan al control de versiones
  3. De Capistrano a Jenkins - Usábamos Capistrano para desplegar la

    aplicación principal - Con Jenkins añadimos visibilidad: quién, qué, cuándo, cómo y cuánto. - Al final Jenkins notifica al canal respectivo en Slack - Los jobs de jenkins se pueden usar para distintos ambientes: staging, producción, etc.
  4. Actualizar Containers - Tenemos una mini-aplicación en node que corre

    en cada container - Cuando se actualiza esa aplicación se debe desplegar en 50000 containers - Con Jenkins podemos realizar despliegues por bloques: hosts, tipos de container, antigüedad, etc. - El proceso demoraba días, pero en cada interacción hemos ido mejorando el tiempo porque tenemos más visibilidad. - Ahora usando volúmenes de docker y el proceso demora minutos, Jenkins despliega una sola vez a cada host.
  5. Y mas ... - Desplegamos aplicaciones en containers - Agregamos

    más funcionalidades: reiniciar servicios en supervisor, notificar a slack, etc. - Podemos desplegar aplicaciones desde Slack aunque a @raymi no le gusta - Copias de seguridad diarias - Los jobs de Jenkins también están versionados - Corremos scripts de monitoreo: uso de disco, ancho de banda, etc.
  6. Tomar en cuenta - Hemos convertido tareas manuales y rutinarias

    en Jobs de Jenkins - Nuestro enfoque es siempre mejorar el proceso, Jenkins no es sinónimo de burocracia. - Añadimos automatización, orden y visibilidad pero lo mantenemos simple.Siguientes pasos: añadir tests y más pipelines.