Runway
Solución de CICD creada por y para eMantto basada en el modelo propio Arquitectura de 5 capas para atender a las diferentes necesidades de despliegue y a su vez realizar la migración desde Bitbucket hacía Gitlab.
Estado Actual
Runway se encuentra funcional mente congelado, solo recibiendo soporte a aquellas funcionalidades existentes.
Runway como tal, nunca fue completado, fue un MVP funcional que en este momento se encuentra en Freeze. Posterior a la toma de control por parte de ANDES, y luego de exhaustivos análisis, se llegó a la conclusión de que expandir como capacidad Runway para otros dominios sería muy caro en términos de tiempo, y se optó por ANDES Pipelines, usando como base varios de los aprendizajes tanto de Runway, como FW1 y FW2
Impacto
Los impactos en eMantto fueron:
- Migración desde Bitbucket hacía Gitlab
- Reducción del Lead Time For Change
- Cambio desde Gitflow hacia Trunk Based Development
- Los equipos pudieron definir sus propias estrategias de despliegue en conjunto con el equipo de mantenimiento de Runway
- Autonomía de los usuarios para ejecutar pipelines
- Interfaz a través de Slack
Arquitectura 5 Capas
Definición Modelo
Como dice su nombre, son 5 grandes capas que separan las responsabilidades de los componentes según su nivel de interacción
- Channels: Es la capa de interacción directa con el usuario. Aquí se pueden encontrar las aplicaciones de FrontEnd
- Business Capabilities: Se encarga de darle un sentido de negocio a la data que se obtiene desde las Technical Capabilities realiza las transformaciones necesarias para que esta data tenga sentido con el usuario y con el objetivo final del aplicativo
- Technical Capabilities: Capa encargada de la transformación de la data en bruto de los Core Systems para que esta pueda ser usada las Business Capabilities, esta data se ajusta a lo que los diferentes aplicativos puedan necesitar, pues varios de los que están en la capas superiores puede alimentarse de esta
- Integration APIs: Es la capa encargada de extraer la información desde los Core Systems para las capas superiores. A su vez se encarga de obtener la información y solucionar los problemas de sincronización. No realiza ninguna transformación de data.
- Core Systems: Donde vive la información base, son todos los sistemas legados donde existe la información de mantenimiento como serían Corenix, Maintenix, etc.
Por simple inspección se puede determinar que es una Arquitectura orientada a eventos (Event Driven Architecture) que utiliza direntes capacidades para resolver la comunicación entre capas, tales como:
- Pub/Sub
- Kafka
- BFF
Estas fueron diseñadas para sustentar la operación de eMantto dentro de su proceso de transformación digital, y a su vez fue aplicada a la herramienta y solución de CICD para poder responder a las diferentes necesidades de Delivery que tenía el dominio.
Estructura
Para mejorar el entendimiento base de Runway como herramienta de CICD
Core
Donde se encuentran las capacidades de generación de pipelines y la lógica principal
Frontend
Decomisada. No fue terminado. La idea inicial era poder generar una UI para trabajar tanto con el usuario final como con el equipo de mantenimiento de la herramienta para poder resolver problemas, configuraciones
Integraciones
Contiene las integraciones con las diferentes herramientas. Actualmente estas responsabilidades estan repartidas, no respetando la arquitectura inicial
Repositorios
Core:
Scheduler:
Frontend:
- https://gitlab.com/latamairlines/oper/emx/emx-techcap-runway/runway-bff
- https://gitlab.com/latamairlines/oper/emx/emx-techcap-runway/runway-fe
Integraciones:
- https://gitlab.com/latamairlines/oper/emx/emx-techcap-runway/unleash
- https://gitlab.com/latamairlines/oper/emx/emx-intapi-runway/pipeline-notification
- https://gitlab.com/latamairlines/oper/emx/emx-intapi-runway/webhook-command
- https://gitlab.com/latamairlines/oper/emx/emx-intapi-runway/cicd-integrator
- https://gitlab.com/latamairlines/oper/emx/emx-intapi-runway/coderepo-integrator
Ecosistema
Runway interactúa con:
- Base de datos Firestore: Para almacenar la información de componentes, pipelines, estrategias, etc
- Gitlab: Para la ejecución de Pipelines
- Pub/Sub: para los archivos de pipelines generados por componente
- Slack: Para interacción con los usuarios
FAQ
¿Puedo manejar secretos con Runway?
Sí. A través de los pipelines import-secrets-{env} (para importarlos)
y secrets-{env} (para inyectarlos). Donde {env} es el ambiente
¿Cuál es el canal de ayuda de Runway?
Antiguamente existía un canal de Slack, esto NO SE ENCUENTRA DISPONIBLE. Actualmente las consultas son a través de Google Chat y tickets Jira https://chat.google.com/room/AAQA4BKMNYo?cls=7
¿Que stack maneja la migración de Runway?
A la fecha los stack que maneja son:
- Java 8
- Java 17
- Java 21
- Angular
- Cypress
- NestJS
- Node
¿Puedo desplegar Cloud Run con Runway?
Sí. Existen pipelines disponible sobretodo para Java
¿Dónde puedo ver los comandos disponibles?
Con /runway help se puede ver el listado de todos los comandos disponibles.
Asi mismo usando /runway help {comando} se puede obtener más información.
Ejemplo /runway help execute
¿En un chat (Slack) con un compañero use un comando de Runway
pero no pasó nada? A menos que se haya agregado a la conversación o al canal la App de Runway, no se ejecutará nada, puesto que el bot no recibirá el comando
El comando no funciona...
Slack, como herramienta es bastante sensible a los textos, así que por favor, en los comandos revisar si hay algo en negrita, cursiva, etc. Cualquier cambio de formato en el texto puede hacer que no se ejecute el proceso correctamente. Si ya se chequeo lo anterior, favor revisar si los repositorios y los comandos son correctos. Si aún así el error persiste, por favor, levante un ticket en Jira, indicando el problema (y adjunte un screenshot si es posible)
¿Cómo funcionan los cambios de OpenApi? ¿Tengo que hacer?
Los cambios de OpenApi siguen siendo en el archivo correspondiente. deploy/endpoints/openapi.yaml.erb
Los etiqueté en una ejecución en nuestro canal donde tenemos Runway,
pero no he recibido respuesta
El equipo de soporte no tiene acceso a Slack de eMANTTO, los usuarios que puedan estar probablemente no tengan acceso
¿Runway mejorará? ¿Puedo pedir mejoras?
No, se encuentra en freeze. Cualquier consulta, mejora o cambio se debe hablar con el equipo de ANDES
¿Dónde puedo ver el reporte de checkmarx?
Actualmente ya no se usa checkmarx para el análisis de código, esto fue reemplazado por Gitlab Advance SAST en diciembre del 2025
¿Dónde puedo ver el reporte de calidad?
Se puede revisar en https://codeprobing1.appslatam.com/