El proceso de deploy de Slack
(slack.engineering)-
Todos los PR requieren code review y pasar las pruebas
-
El código mergeado solo se deploya en horario laboral de Norteamérica (para poder resolver problemas si ocurren)
-
Hay alrededor de 12 despliegues programados al día
-
Se asigna una persona responsable para cada despliegue
-
Crear una rama de release
-
Desplegar a staging y hacer pruebas manuales
-
Desplegar al Slack interno (tier de dogfooding) y luego hacer un despliegue Canary (solo se enruta el 2% del tráfico total)
-
Avanzar el despliegue por etapas hasta 10, 25, 50, 75 y 100 por ciento
Para gestionar el riesgo, entrenan a la persona responsable del despliegue para que supervise todas las etapas y se encargue de la comunicación.
Detectar los problemas lo más rápido posible, identificar el PR causante, retirarlo y luego desplegar un nuevo build.
Si aparece un problema que no se detectó antes de llegar a producción, antes de investigar primero se hace rollback.
En los primeros días de la empresa, cuando solo operaban 10 instancias de EC2, el despliegue consistía simplemente en usar rsync.
Antes del despliegue a producción solo existía una etapa de staging, y después de probar se desplegaba de inmediato.
A medida que aumentaron los clientes, rsync por sí solo se volvió insuficiente.
→ Cambio a un sistema full parallel pull-based
En lugar de insertar el nuevo build en los servidores con un script, cada servidor descarga el build al mismo tiempo cuando recibe una señal por un cambio de clave en Consul.
→ Atomic Deploy con separación en carpetas Hot/Cold
Durante el despliegue, se copia el nuevo código al directorio Cold, que no usa el código nuevo, mientras el servicio actual sigue sirviendo desde el directorio Hot.
Cuando no hay procesos activos en el servidor, se intercambian los directorios Hot/Cold y el nuevo código empieza a servir de inmediato.
1 comentarios
Consul by Hashicorp https://www.consul.io/
Como el backend de Slack usa PHP/Hacklang corriendo sobre HHVM, parece que por eso es posible ese intercambio Hot/Cold.
https://www.quora.com/What-is-the-tech-stack-behind-Slack