Ahorra hasta un 90% en costos de cómputo con Spot instances. Te contamos qué son, por qué usarlas y cuándo conviene aprovecharlas.

Aunque pueden recortar tus costos de cómputo entre un 20% y un 80%, y de paso volver más resilientes tus aplicaciones, las Spot instances (o Spot VMs en Google Cloud) no se aprovechan tanto como deberían.
Las razones van desde su naturaleza poco predecible y el miedo a que se interrumpan los workloads, hasta la complejidad de configurarlas y gestionarlas; pero el motivo más habitual por el que muchos las descartan es, simplemente, que no las conocen lo suficiente.
Saber cómo sortear esos obstáculos te permitirá capturar ahorros de cómputo que hasta ahora se te estaban escapando.
En esta serie de dos partes te contaremos todo lo que necesitas saber para sacarle el máximo provecho a las Spot instances.
En la primera parte hablaremos de qué son las Spot instances, por qué deberías usarlas y cuándo hacerlo. En la segunda parte veremos cómo optimizar su uso con Auto Scaling groups y cómo maximizar tus ahorros con Spot Scaling.
¿Qué son las Spot instances?
Las Spot instances son algo así como esos vuelos baratos del mismo día que aparecen por cancelaciones de último minuto o asientos sin vender. Las aerolíneas suelen rebajar mucho los precios para llenar esos asientos vacíos antes de que despegue el avión.
En el caso de las instancias de cómputo, los proveedores de nube ofrecen recursos on-demand sin usar a precios mucho más bajos que las instancias on-demand —hasta un 90% menos— como una forma de aprovechar su capacidad excedente.
Solo tienes que definir un precio máximo (bid price) para la Spot instance —lo más que estás dispuesto a pagar por hora— y, si el Spot price (el precio actual del mercado spot) está por debajo de tu bid, la instancia se ejecuta.
Eso sí, el proveedor de nube puede recuperar las Spot instances con apenas dos minutos de aviso si sube la demanda de instancias on-demand a precio regular, lo que podría interrumpir tu aplicación.
Tanto las Spot instances como los boletos de avión te dan la oportunidad de conseguir algo (capacidad de cómputo en un caso, asientos en el otro) a un costo menor. Pero hay un grado de incertidumbre y riesgo: las Spot instances pueden recuperarse si el precio del mercado supera tu bid, y los boletos de último momento pueden esfumarse si alguien más los compra antes que tú.
Las dos situaciones más comunes en las que se producen interrupciones son cuando:
- Hay un repunte en la demanda de instancias on-demand o reservadas
- Los precios spot superan el bid (cada vez menos probable)
Por qué deberías usar Spot instances (pista: no es solo por el ahorro)
Aunque el potencial de ahorro en EC2 (¡hasta un 80%!) suele citarse como el gran beneficio de las Spot instances, no es el único.
Usar Spot instances no vuelve más resilientes a tus aplicaciones por sí solo, pero sí exige que las aplicaciones ya tengan cierto nivel de resiliencia para absorber bien las posibles interrupciones que conllevan.
Por ejemplo, como las aplicaciones que corren en Spot instances deberían estar diseñadas para gestionar las interrupciones de forma elegante, lo ideal es que ya las hayas pensado con checkpoints, mecanismos de autoguardado o distribución de workloads en varias instancias.
De esa manera, tu infraestructura:
- Soporta mejor las fluctuaciones,
- Mantiene el rendimiento en horas pico, y
- Mitiga los riesgos asociados a posibles interrupciones o fallos.
En cargas pico, las Spot instances pueden integrarse a tu sistema para absorber la demanda extra, de modo que se acomoden las fluctuaciones de tráfico o de workload sin que el rendimiento se degrade.
Con instancias más baratas, puedes destinar más recursos a redundancia y a mecanismos de failover, y repartir tus workloads entre más instancias.
Y si una instancia se interrumpe, otras pueden seguir procesando partes del workload, con lo que se minimiza el impacto de cualquier fallo individual. Así, tus workloads se trasladan sin fricción a otra instancia y sin un impacto relevante en el costo.
EC2 Instance Pools: cómo funcionan
Para sacarle el máximo partido a las AWS Spot instances, conviene entender el concepto de EC2 instance pools. Un EC2 instance pool es la capacidad total de un tipo de instancia (por ejemplo, m5.xlarge) en una región determinada.
Cuando hay capacidad sin usar en un instance pool, esa capacidad disponible se conoce como Spot Capacity pool.

Cada familia de instancias, tamaño de instancia, zona de disponibilidad y región tiene sus propios EC2 instance pools y, por ende, sus propios Spot capacity pools.
Por eso, no conviene "poner todos los huevos en la misma canasta". Mientras más pools aproveches, más diversificada será tu selección potencial de instancias, lo que reduce las probabilidades de que no haya Spot instances disponibles para tu aplicación.
Cuándo deberías usar Spot instances
En general, las Spot instances son ideales para workloads que:
- Son flexibles,
- No tienen requisitos de tiempo específicos,
- Se pueden distribuir o dividir en tareas que corren en paralelo, y
- Toleran interrupciones
Más adelante veremos los casos de uso concretos en los que tiene sentido usar Spot instances, pero aquí van tres preguntas que te ayudarán a saber si tus workloads son aptos para ello:
- ¿Mis workloads son tolerantes a fallos?
Como las Spot instances pueden interrumpirse, los workloads deben diseñarse para gestionar interrupciones sin provocar fallos críticos ni pérdida de datos. Los workloads tolerantes a fallos pueden seguir ejecutándose o recuperarse rápido cuando las instancias se interrumpen o terminan. 2. ¿Se puede detener el workload en menos de 2 minutos? Los workloads deben poder detenerse en un periodo de aviso corto para evitar pérdida de datos o interrupciones. Si tu workload puede detenerse en menos de dos minutos, te resultará más fácil responder a las interrupciones de las Spot instances. Por eso, las aplicaciones stateless calzan perfecto con Spot instances, ya que no almacenan datos de sesión. Esto les permite migrar entre instancias sin perder funcionalidad ni datos, lo que las hace resilientes ante interrupciones. 3. ¿Puedo ser flexible con los tipos de instancia y las zonas de disponibilidad? Repartir tus workloads entre varias instancias y zonas de disponibilidad reduce la vulnerabilidad ante interrupciones, ya que dispersa el riesgo. Recuerda que la capacidad es una propiedad de un Spot instance pool. Cada tipo de instancia en cada zona de disponibilidad es un pool aparte. Cuando puedes acceder a más de un pool, el riesgo de que se interrumpan todas las capacidades al mismo tiempo es menor que el riesgo de una interrupción en un solo pool. Distribuirte en varias zonas de disponibilidad reduce la dependencia de un único pool y asegura la continuidad incluso si una zona enfrenta restricciones de capacidad o picos de precio.
De forma más concreta, deberías considerar usar Spot instances en las siguientes situaciones.
Entornos de testing y CI/CD
Los entornos de testing/dev y las tareas de CI/CD normalmente no necesitan estar disponibles 24/7, porque se usan de forma intermitente para trabajar en funcionalidades específicas o probar cambios. Además, las tareas de desarrollo y testing pueden reiniciarse, o pausarse y reanudarse (si se planifica con anticipación), sin pérdida crítica de datos, lo que las hace más tolerantes a interrupciones.
Estos workloads suelen ser flexibles en cuanto a requisitos de recursos y se adaptan a distintos tipos de instancia o zonas de disponibilidad sin comprometer el trabajo que se está realizando.
Tareas de procesamiento por lotes
Los procesos por lotes y los jobs de ETL muchas veces no son críticos en el tiempo, lo que da una flexibilidad que hace que las Spot instances calcen perfecto.
Estas tareas también pueden dividirse en unidades más pequeñas e independientes que se distribuyen entre varias instancias, sin un impacto relevante si una instancia se interrumpe.
Así, la interrupción de una instancia no impide completar todo el job, porque el workload puede repartirse entre otras instancias disponibles. Y si no hay instancias disponibles, los jobs pueden estructurarse para guardar estados intermedios y reanudarse desde el último checkpoint en caso de interrupciones.
High-performance computing (HPC) y procesamiento de big data
Las tareas de high-performance computing implican manejar y analizar volúmenes enormes de datos. Las Spot instances tienen sentido para este tipo de workloads porque estas tareas se pueden distribuir entre varias instancias y permiten escalar hacia arriba y hacia abajo con facilidad.
Suelen ser tareas costosas, ya que procesar grandes datasets requiere muchos recursos de cómputo; pero con Spot instances el costo de cada instancia es mucho menor, y con miles de instancias el ahorro se acumula.
Servidores web
Los servidores web son grandes candidatos para Spot instances porque normalmente son stateless. No suelen almacenar datos de forma local ni dependen de información de sesiones anteriores, por lo que pueden interrumpirse sin un impacto relevante.
En muchos casos, cada solicitud al servidor web se procesa de manera independiente, sin depender de información de sesión almacenada.
Workloads en contenedores / Kubernetes
Las aplicaciones en contenedores suelen diseñarse como stateless, lo que las convierte en buenas candidatas para Spot instances.
Como los contenedores normalmente no almacenan datos específicos de la sesión, se pueden levantar o apagar nuevos contenedores sin afectar al sistema en su conjunto.
Además, como los contenedores dividen las aplicaciones en unidades más pequeñas e independientes, los workloads en contenedores se adaptan fácilmente a distintos tipos de instancia o zonas de disponibilidad. Esa flexibilidad calza a la perfección con la naturaleza variable de las Spot instances.
Ya cubrimos todo lo que necesitas saber sobre las Spot instances: desde el concepto hasta cómo aprovechar sus ventajas y los casos de uso que te permiten exprimirlas al máximo.
En la segunda parte de esta serie veremos los Auto Scaling groups (ASGs), que te ayudan a gestionar las interrupciones de Spot y a optimizar su uso, y Spot Scaling, que simplifica la configuración y administración de los ASGs para que maximices el ahorro con Spot y la disponibilidad de tu aplicación.
