LA PREVISIÓN. Tu mejor aliada para ahorrar en tu factura de AWS
A medida que vamos explotando nuestra infraestructura hospedada en el cloud de Amazon, nuestra factura también empieza a “explotar”. Es por esto que llegados a cierto punto (o no), conviene empezar a buscar recursos para que tu factura no sea tan abultada.
El primer paso antes de todo, es tener claro qué y cuántos recursos necesitas para que tu aplicación y/o infraestructura tenga el performance adecuado y hacer una previsión sobre cuánto tiempo crees que como poco, necesitarás dichos recursos funcionando.
Para dicha estimación, debes tener un buen conocimiento de tu arquitectura y llevar un tiempo trabajando en ella, ya que si no, no tendrás la capacidad suficiente para prever como se comportará tu infra en situaciones atípicas.
Vamos a ponernos en situación. Vamos a simular varias formas de ahorrar en la factura de EC2.
Reserved Instances
Consiste en hacer una previsión de instancias EC2 que necesitarás como mínimo, a 1 o 3 años vista (depende del tiempo de compromiso que escojas).
Una buena práctica sería jugar con la equivalencia que tienen los tipos de instancia en EC2. Por ejemplo, reservar 2 t3.small por cada t3.medium. De esta manera todo tu hardware se repartirá en función de las necesidades de tu infraestructura, y si en algún momento cambia el número o el tipo de instancias, ese hardware reservado seguirá repartiéndose y aprovechándose de la manera más óptima.
¿Cuál es el premio por hacer esta gran previsión y comprometerse? Pues que AWS te hace descuentos de mínimo un 25-30% y hasta un 50-60% en la factura de EC2!
Cuanto más tiempo de compromiso y más pagues por adelantado, mayor será el descuento.
Spot Requests
Este tipo de instancia te permiten aprovechar la capacidad de EC2 sin usar en la nube de AWS. Las instancias de spot están disponibles con un descuento de hasta el 90 % en comparación con los precios on-demand.
¿Dónde está el truco? Aunque cueste de creer, son unas instancias que si AWS necesita para otro usuario o finalidad, te las puede quitar al instante solo con un aviso de 2 minutos (si te das cuenta, apaga las máquinas y no te las quitarán 😉 )
Es por esto que se recomienda usar estas instancias solo para entornos de contenedores, CI/CD, testing… o bien combinarlas en un ASG con tus instancias on-demand.
Scheduled Instances
Una práctica efectiva si sabes detectar en qué horas o días de la semana tu infra procesa más carga de lo normal.
Se trata de programar un número de máquinas durante un tiempo concreto. Si por ejemplo hay un momento del día donde hay más tráfico de lo normal y el resto del día es mucho más tranquilo, podrías programar que se añada una o dos instancias más a tu ASG.
¿Y por qué es una buena opción para ahorrar? Porqué ajustas el número de máquinas al máximo en función de las necesidades del momento, y nunca pagas por lo que no usas.
Saving Plans
Si tienes un número más o menos grande de instancias y llevas ya bastante tiempo con ese número y crees que por ahora no variará en exceso, personalmente un Saving Plan es tu mejor opción.
El saving plan básicamente lo que hace es hacer un análisis de los recursos y potencia que necesita tu infra (te quita ese trabajo) y proponerte un ahorro a cambio de un compromiso.
La verdad es la medida más cómoda y si quieres dedicar un tiempo a comprobar por ti mismo que los precios que te proponen son realistas, hazlo y verás que aunque reserves instancias por tus propios medios, el descuento que te proponen es igual o mayor.
Hay 3 tipos de Saving Plans:
- Compute: proporciona más flexibilidad y reduce costes hasta en un 66%. Se basan en el uso de EC2, AWS Fargate y AWS Lambda, independientemente de la familia de la instancia, tamaño, zona, región, SO y tenencia
- EC2 Instance: proporciona los precios más bajos y reduce costes hasta en un 72%, a cambio del compromiso de uso de familias de instancias individuales en una región.
- SageMaker: reduce costes de hasta un64% en SageMaker. Se basan en el uso de SageMaker independientemente de la familia de instancias, tamaño, componente y región de AWS.
Para aplicar un Saving Plan, seleccionamos esta opción:
Una vez dentro, podemos escoger el tiempo y los ratios de precio que estamos dispuestos a pagar y ver qué descuento se aplica, o bien, hacer click aquí y ver las recomendaciones que nos propone AWS basándose en los últimos X días.
En las recomendaciones, en función del tiempo de compromiso y el upfront veremos unos precios u otros.
Mi propuesta personal
¿Una vez conoces todos estos métodos, por qué no combinarlos?
Puedes combinar fácilmente las instancias de spot con instancias bajo demanda, reservadas y de Savings Plans para optimizar aún más el costo de la carga de trabajo con rendimiento.
También puedes apagar máquinas mientras no las uses o usar el método de las Scheduled Instances.
Otros servicios donde las reservas son un buen aliado
En este post, hemos querido hacer énfasis en la reserva de instancias y los Saving Plans de EC2, pero AWS ofrece bastantes servicios donde gracias a la previsión de recursos que vas a necesitar como mínimo en un tiempo concreto, puedes ahorrarte un buen pellizco.
Por ejemplo, en el servicio de DynamoDB, puedes reservar la capacidad. Funciona igual que reservar instancias, a cambio de un buen descuento, puedes reservar una capacidad de disco durante un tiempo concreto con diferentes formatos de pago por adelantado.
Otro ejemplo es Opensearch, el SAS de ELK (Elasticsearch, Logstash y Kibana) que incorpora AWS. En este servicio puedes hacer reservas de instancias, pero con una peculiaridad muy importante a tener en cuenta.
A diferencia de otras reservas, en este servicio tienes que reservar exactamente el tipo y el número exacto de instancias que usa tu Opensearch. Básicamente, no sirve reservar 2 instancias t3.small para que una t3.medium use sus recursos, por ejemplo. Si tu Opensearch usa 2 Data Nodes t3.medium y 3 Master Nodes m5.large, deberás hacer exactamente la reserva de estos tipos y números de instancias.
Personalmente lo recomiendo igualmente, el ahorro es muy notable.
Conclusión
Como bien indica el título de este post, la mejor opción que tienes para ahorrarte dinero en todos los servicios de AWS donde hay máquinas involucradas es la previsión. Si tu infraestructura tiene el performance esperado y conoces bien su comportamiento, sabrás prever el número de instancias o recursos que necesitas a 1 o 3 años vista.
Vale la pena hacer un esfuerzo en el análisis de tus recursos y tomarte unas horas o días observando tus ASG y demás servicios, podrás reducir tranquilamente un 50% en tu siguiente factura.
Si quieres ayuda para poder llevar a cabo estas prácticas, no dudes en ponerte en Contacto con nosotros!
El equipo de Geko cuenta con la experiencia en diferentes ámbitos, trabajando con metodología DevOps, acompañando a nuestros clientes en todo el proceso desde la migración hasta la gestión en el cloud, y adaptándonos 100% a sus infraestructuras y tecnologías.
Autor: Pol