En 2011 el pequeño equipo de GitHub gestionaba la infraestructura desde el chat de Campfire, y su bot se había vuelto «más grande y más desordenado». Lo reescribieron desde cero y lo publicaron como código abierto con el nombre de Hubot: un bot que despliega código, se sitúa al frente del servidor de CI y hace visibles los comandos de operaciones para toda la empresa.
La idea
Poner las herramientas en la sala de chat: un bot que despliega código, ejecuta CI y avisa al último responsable del despliegue cuando los errores se disparan; cada acción visible, auditable y abierta a todos.
Hubot escucha comandos como «/deploy my-feature»; los ingenieros despliegan desde el chat y, cuando la tasa de excepciones se dispara, el bot avisa al último responsable del despliegue con un enlace al panel interno Haystack, asignando implícitamente la responsabilidad. Se publicó como código abierto en 2011 y, en 2020, GitHub seguía realizando entre 120 y 150 despliegues de producción a la semana mediante ChatOps, con despliegues canario y cientos de pull requests agrupados por despliegue.
El despliegue en GitHub se convirtió en un comando de chat que cualquiera podía ejecutar y todos podían ver: el mismo número de despliegues semanales ahora envía muchas más cambios, las reversiones se mantuvieron lo bastante bajas como para construir una «cultura de confianza», y el término ChatOps se extendió por la industria a medida que los equipos copiaban el patrón.
En 2011 GitHub era una empresa pequeña que operaba un servicio muy grande, y su equipo vivía en el chat de Campfire. Su bot se había vuelto «más grande y más desordenado», así que lo reescribieron desde cero y lo publicaron como código abierto: Hubot, «un increíble bot de Campfire» que les hacía reír, desplegaba su código y servía de interfaz con su servidor de CI.
La práctica creció hasta convertirse en lo que GitHub llamó ChatOps: los ingenieros ejecutan «/deploy my-feature» en el chat, y Hubot gestiona la autenticación, las etapas y los despliegues canario. Cuando las excepciones se disparan tras un despliegue, Hubot avisa al último responsable del despliegue con un enlace a Haystack, el panel interno de excepciones de GitHub: «el beneficio inmediato de este aviso es que establece implícitamente un responsable».
En 2020 el patrón estaba maduro: el equipo de despliegues de GitHub describió despliegues iniciados con «una serie de comandos de Hubot», realizando entre 120 y 150 despliegues de producción a la semana para github.com, con más de 400 pull requests enviados en una sola semana, y con suficiente confianza en el proceso como para que las reversiones se mantuvieran bajas y los desarrolladores pudieran fusionar y seguir adelante.
Eliminó el cuello de botella de «quién tiene permiso para tocar producción»: cualquier ingeniero podía desplegar desde el chat, y la acción era visible para toda la empresa.
El bot hizo implícita la responsabilidad: se avisa al último responsable del despliegue cuando los errores se disparan, de modo que los problemas encuentran un dueño en lugar de esperar a un triaje.
Como cada comando se ejecutaba en un canal compartido, el despliegue se volvió auditable y enseñable: los nuevos ingenieros aprendían operaciones observando el chat.
Publicar Hubot como código abierto convirtió una comodidad interna en un patrón de la industria, popularizando el término ChatOps.
Una herramienta interna gana cuando reduce el coste social de la acción: llevar las operaciones al chat hizo los despliegues visibles, auditables y seguros de delegar; el cambio de interfaz es lo que cambió la cultura.
ChatOps se convirtió en una práctica ampliamente copiada, y Hubot creció hasta ser un proyecto comunitario con adaptadores para Slack, Discord y Teams. En GitHub, el pipeline de despliegue siguió evolucionando —IssueOps y GitHub Actions se construyeron después sobre la misma idea—, mientras que el principio subyacente, permitir que las personas ejecuten infraestructura desde las herramientas que ya comparten, siguió siendo central en la forma en que GitHub despliega.
CONSULTA LAS PRUEBAS
Las fuentes
- Say Hello to Hubot GitHub Blog · github.blog ·
- Exception Monitoring and Response GitHub Blog · github.blog ·
- DevOps best practices Q&A: Automated deployments at GitHub GitHub Blog · github.blog ·