Estudio de software · Ingeniería de producto

Tombasoft

Entornos por rama que aparecen al hacer push y desaparecen al fusionar, sobre una flota dimensionada para los diez peores minutos del día.

Visitar Tombasoft

Arquitectura publicada con permiso de la organización.

El problema

  • Restricciones duras
  • Un entorno de revisión debe estar accesible a los minutos de un push, no a las horas.
  • Las compilaciones no deben poder ahogar nada que un humano esté mirando en ese momento.
  • Un despliegue fallido tiene que revertirse sin que una persona edite configuración bajo presión.
  • El número de entornos se mueve con el número de ramas, así que el coste de un entorno inactivo tiene que ser casi cero.

Tombasoft publica varios productos con ritmos de lanzamiento distintos, y las revisiones se hacen sobre software en ejecución y no sobre capturas. Eso significa un entorno por rama, creado bajo demanda, y despliegues que no esperan a una ventana semanal.

Su montaje anterior era una única máquina grande haciéndolo todo: compilaciones, entornos de revisión y staging en la misma caja. Una compilación pesada dejaba inservibles los entornos de revisión, y un entorno de revisión roto podía llevarse staging por delante.

Los tiempos de compilación también tenían la forma equivocada. La mayor parte del pipeline paraleliza entre núcleos; dos etapas no, y esas dos etapas marcaban el ritmo para todos.

Arquitectura

  1. Entrada

    Entornos de revisión

    4 ×Volt 1

  2. Compilación

    Flota de compilación paralela

    1 ×Apex 4

  3. Compilación

    Ejecutor monohilo

    1 ×Forge 2

  4. Aplicación

    Staging y producción

    2 ×Forge 4

Un cambio yendo de la rama a producción. La flota de compilación alimenta artefactos hacia adelante; nunca está en la ruta de servicio.

Sobre qué corre

  • Entrada

    Entornos de revisión

    4 ×Volt 1

    1 vCore · 2 GB · 20 GB SSD

    Un grupo de servidores virtuales pequeños, uno por rama abierta. Son lo bastante baratos como para ser desechables, que es justo la propiedad que hace que los entornos por rama funcionen.

    Desde $15.00 al mes

  • Compilación

    Flota de compilación paralela

    1 ×Apex 4

    AMD EPYC 4584PX · 128 GB · 2× 960 GB NVMe + 2× 1.92 TB NVMe

    Treinta y dos hilos a 4,2 GHz con 128 GB, porque la matriz de compilación y pruebas es vergonzosamente paralela y el objetivo es terminar rápido la parte ancha del pipeline, sin renunciar a la frecuencia que necesita la parte estrecha.

    Desde $375.00 al mes, $374.00 de alta, pago único

  • Compilación

    Ejecutor monohilo

    1 ×Forge 2

    Intel Core i7-7700K · 64 GB · 2× 450 GB NVMe

    Las dos etapas que se niegan a paralelizar están fijadas a un procesador de cuatro núcleos a 4,2 GHz, con 64 GB detrás. Añadir núcleos no les habría servido de nada; añadir megahercios sí.

    Desde $75.00 al mes, $75.00 de alta, pago único

  • Aplicación

    Staging y producción

    2 ×Forge 4

    Modelo variable; frecuencia y núcleos fijos · 32 GB DDR4 · 2× 2 TB NVMe

    Dos máquinas iguales para poder conmutar una versión entre ellas y revertir apuntando a la otra. Hardware idéntico significa que staging predice de verdad lo que hará producción.

    Desde $93.00 al mes

Técnicas que merece la pena nombrar

  1. Entornos efímeros por rama

    Abrir una rama aprovisiona un entorno a partir de una imagen base; fusionar o borrar la rama lo destruye. Nada se mantiene a mano, así que nada se desvía, y un entorno obsoleto no puede convertirse en silencio en aquel contra el que todos prueban.

  2. Artefactos de compilación inmutables

    El artefacto que se promociona a producción es byte a byte el que pasó la revisión. No se recompila nada en el despliegue, lo que elimina toda la categoría de "en staging funcionaba".

  3. Conmutación azul/verde

    Una versión se despliega en la máquina inactiva, se comprueba su salud aún a oscuras y solo entonces recibe tráfico. La reversión es el mismo interruptor al revés y tarda lo que una recarga sin DNS.

  4. Hardware con la forma de la carga

    El pipeline se midió antes de comprar nada. Las etapas anchas fueron a la máquina de muchos núcleos y las estrechas a la de frecuencia alta. Esto solo es posible cuando el modelo de CPU se publica antes de que pidas.

  5. Caché de compilación en NVMe

    Las cachés de dependencias y del compilador viven en NVMe local y no en un montaje de red. Una compilación en frío es rara; una en caliente no se pasa el tiempo esperando a un sistema de ficheros.

  6. Acceso root como requisito

    Las cadenas de herramientas, los parámetros del kernel y los runtimes de contenedores los fija el equipo. Una plataforma gestionada que decida eso por ti no es un problema más pequeño, es otro distinto.

Qué cambió

  • La revisión se hace contra un entorno en ejecución en cada rama, y el entorno desaparece solo cuando lo hace la rama.
  • Las compilaciones y los entornos que usan personas ya no comparten máquina, así que una ejecución pesada del pipeline es invisible para quien esté revisando.
  • Los despliegues son ad hoc por diseño y no por excepción: la ruta de reversión es el mismo mecanismo que la de despliegue, así que publicar un viernes no es una cuestión de política.
  • La capacidad es una decisión que revisan deliberadamente, no una que el proveedor tome por ellos en una semana ajetreada.

En esta página no aparece ningún porcentaje de rendimiento. Publicamos cifras que hemos medido con un método declarado, y estos despliegues se describen por su arquitectura.

Cuando quieras

Tráenos una carga de trabajo, no una lista de la compra

Cuéntanos qué hace la cosa de verdad y te diremos qué máquinas encajan — incluso cuando la respuesta sea una más barata de la que pedías.

Virtual desde $15.00/mesBare metal desde $24.00/mes