Cómo reducir costos en AWS

El mundo está cambiando dramáticamente. Muchas compañías buscan cualquier forma de reducir costos, solo para sobrevivir. Al mismo tiempo, la carga de los servicios en línea se está intensificando, especialmente los relacionados con la organización del trabajo remoto, la realización de videoconferencias y el aprendizaje en línea.

En estas condiciones, es extremadamente importante, por un lado, garantizar la fiabilidad y la escalabilidad de su infraestructura. Por otro lado, no vuele a la tubería con la compra de servidores, discos, pago por tráfico.

En Bitrix24, somos muy activos en el uso de Amazon Web Services, y en este artículo hablaré sobre varias características de AWS que pueden ayudarlo a reducir sus costos.

Bitrix24 es un servicio global, trabajamos para clientes de todo el mundo. Desde 2015, desde la entrada en vigor de la Ley 242- sobre la localización de datos personales, los datos de los usuarios rusos se almacenan en servidores en Rusia. Pero toda la infraestructura del servicio que sirve a los clientes restantes en todo el mundo se implementa en Amazon Web Services.

La crisis económica ya es un hecho consumado. El dólar ha crecido y es poco probable que vuelva a su posición anterior en el futuro cercano, por lo que pagar por hospedarse en moneda extranjera se vuelve bastante oneroso.

En estas condiciones, si continúa colocando sus recursos en AWS, lo más probable es que le interesen las técnicas que lo ayudarán a ahorrar en infraestructura de alquiler.

Hablaré sobre los principales que nosotros mismos hemos estado usando durante muchos años. Si utiliza algún otro método, por favor comparta en los comentarios.

Entonces vamos.

RI - Instancias reservadas


La forma más fácil y obvia de ahorrar dinero en AWS es usar instancias reservadas de EC2. Si sabe que definitivamente usará ciertas instancias al menos durante el año, puede hacer un pago por adelantado y obtener un descuento del 30% al 75%.

Ejemplo de cálculos para instancias de c5.xlarge:

imagen

Todos los precios y cálculos están aquí .

A veces parece complicado y confuso, pero en general, la lógica es esta:

  • Cuanto más largo sea el período de reserva, 1 o 3 años, mayor será el descuento.
  • Cuanto mayor sea el prepago de inmediato, puede hacerlo sin ningún prepago en absoluto, puede utilizar todos los prepagos completos por adelantado, mayor será el descuento.
  • Si reservamos un tipo específico de instancia, pero no utilizamos uno convertible, hay un mayor descuento.

Para nosotros, hacemos reservas por 1 año, porque planificar durante 3 años es bastante difícil. Y esto permite un buen ahorro en EC2.

Instancias puntuales


El uso de instancias puntuales es esencialmente algún tipo de intercambio de recursos. Cuando Amazon tiene muchos recursos inactivos, puede establecer el precio máximo que está dispuesto a pagar por ellos para "Instancias puntuales" especiales.

Si la demanda actual en una determinada región y AZ (zona de disponibilidad) es pequeña, se le proporcionarán estos recursos. Además, a un precio 3-8 veces menor que el precio bajo demanda.

¿Cuál es el truco?

Lo único es que si no hay capacidad libre, no se le darán los recursos solicitados. Y si la demanda aumenta bruscamente y el precio spot supera su precio máximo establecido, su spot se cancelará.

Naturalmente, tales instancias no son adecuadas, por ejemplo, para una base de datos en producción. Pero para algunas tareas que están conectadas, por ejemplo, con ciertos cálculos, renderización, cálculo de modelos, para pruebas es una excelente manera de ahorrar.

Veamos en la práctica por qué cantidades estamos luchando. Y con qué frecuencia las manchas pueden "desaparecer" a un precio.

Aquí hay un ejemplo de Historial de precios de instancias puntuales directamente desde la consola de AWS para la región eu-central-1 (Frankfurt) para instancias de c5.4xlarge:

imagen

¿Qué vemos?

  • El precio es aproximadamente 3 veces más bajo que a pedido.
  • Hay instancias puntuales disponibles en las tres AZ de esta región.
  • Durante tres meses, el precio nunca ha subido. Esto significa que un spot lanzado hace tres meses con un precio máximo dado, por ejemplo, $ 0.3, aún continuaría funcionando.

Cómo usamos los puntos en la práctica:

imagen

- Utilizamos puntos para los servidores de aplicaciones.

- Para ellos, utilizamos activamente el paquete CloudWatch + Auto Scaling - para escalar automáticamente durante todo el día: la carga aumenta - se lanzan nuevas instancias, la carga cae - se extinguen.

- Por seguridad, tenemos dos grupos de Auto Scaling que trabajan para equilibradores, en caso de que se agoten los puntos. Un grupo AS, con instancias normales (bajo demanda), el segundo, con puntos. Amazon a través de CloudWatch Events advierte en 2 minutos que la instancia puntual se eliminará (finalizará). Procesamos estos eventos y logramos expandir el grupo principal al número requerido de instancias, si esto sucede.

Detalles aquí: avisos de interrupción de instancias puntuales .

- Para trabajar de manera más eficiente con Auto Scaling y usar las máquinas en el grupo con puntos al máximo, utilizamos este enfoque:

  1. El grupo de puntos tiene un basurero superior inferior: comenzamos a escalar "arriba" antes.
  2. Y un basurero inferior más bajo: comenzamos a escalar más tarde "hacia abajo".
  3. Para un grupo regular, lo contrario es cierto.

Tienda de instancias EC2


Todos los que trabajan con AWS saben que las unidades principales utilizadas para las instancias EC2 son EBS (Elastic Block Store). Pueden montarse en instancias, deshabilitarse, montarse en otras instancias, tomarse instantáneas de ellos.

Todos los EBS, según su tipo, se cobran de una forma u otra. Y cuestan dinero bastante tangible.

Al mismo tiempo, para muchos tipos de instancias al crearlos, la conexión de discos locales está disponible: Almacén de instancias EC2 .

La característica principal de estos discos es que si detiene la instancia con dicho disco, luego del inicio, estos datos se pierden.

Pero, al mismo tiempo, son condicionalmente gratuitas: solo se paga por la instancia en sí.

Dichos discos se pueden usar perfectamente para cualquier dato temporal que no requiera almacenamiento constante: intercambios, caché, cualquier otro dato temporal. El rendimiento de las unidades de Instance Store es bastante alto: además de los tipos muy antiguos de instancias, ahora se utilizan SSD o SSD NVMe para ellos.

Como resultado: conectamos menos discos EBS, pagamos menos.

S3 Cargas multiparte incompletas


La discusión anterior fue principalmente sobre EC2. A continuación, describimos algunos trucos que ahorrarán al usar S3 (Servicio de almacenamiento simple).

Si está trabajando activamente con S3, entonces probablemente sepa que tanto S3 como la mayoría de los clientes para trabajar con este almacenamiento admiten la carga multiparte : un objeto grande se carga con "piezas", que luego se "ensamblan" en un solo objeto.

Esto funciona muy bien, pero hay una emboscada.

Si la descarga no se completa por algún motivo (la conexión se interrumpió, por ejemplo, y la descarga no se reanudó), las partes descargadas no se eliminan por sí mismas. Sin embargo, ocupan espacio, usted paga por ellos.

Y una sorpresa desagradable: estos datos incompletos no son visibles de ninguna manera cuando se trabaja con herramientas estándar para S3: ni a través de "ls" en cli ni en los programas de los clientes. Puede encontrarlos, por ejemplo, en aws cli usando el comando list-multipart-uploads .

Pero trabajar con ellos es demasiado agotador ...

Sería muy lógico tomar alguna opción sobre el almacenamiento de cargas multiparte incompletas en la configuración de un depósito en particular. Pero por alguna razón, Amazon no lo hizo.

Sin embargo, hay una manera de facilitarle la vida y eliminar automáticamente las cargas multiparte incompletas. En la configuración del depósito en la pestaña Administración, hay una sección Ciclo de vida. Esta es una herramienta conveniente que le permite configurar varias reglas automáticas para trabajar con objetos: moverlos a otros repositorios, eliminarlos después de un tiempo (caducar) y, incluido, controlar el comportamiento de las Cargas multiparte incompletas.

imagen

Un artículo detallado sobre esto está en el blog de AWS , aunque con ejemplos de la interfaz anterior, pero todo está bastante claro.

Lo importante es que el Ciclo de vida configurado para eliminar datos incompletos funcionará no solo para los objetos nuevos, sino también para los existentes.

La cantidad real de espacio ocupado en S3 se puede monitorear a través de CloudWatch. Cuando configuramos la eliminación de cargas incompletas de varias partes, nos sorprendió descubrir que liberamos más de una docena de terabytes ...

Nivelación inteligente S3


S3 tiene varias clases de almacenamiento diferentes:

  1. Estándar.
  2. Standard-IA (acceso poco frecuente): para objetos a los que rara vez se accede.
  3. One Zone-IA: para datos relativamente no críticos. En esta clase, los objetos se replican en menos puntos.
  4. El glaciar es un almacenamiento muy barato, pero no se puede obtener un objeto al instante. Debe hacer una solicitud especial y esperar un momento.

Todos ellos tienen diferentes condiciones de uso y diferentes precios. Pueden y deben combinarse, dependiendo de sus diferentes tareas.

Pero relativamente recientemente, ha aparecido otro tipo de almacenamiento muy interesante: la nivelación inteligente.

La esencia de su trabajo es la siguiente: por una pequeña tarifa adicional, se realiza el monitoreo y análisis de sus datos en S3, se monitorean las llamadas a ellos, y si no hay llamadas durante 30 días, el objeto se mueve automáticamente al almacenamiento de acceso infrecuente, que cuesta significativamente menos que el estándar. Si después de algún tiempo se vuelve a acceder al objeto (no se produce pérdida de rendimiento al mismo tiempo), nuevamente se mueve al repositorio de acceso estándar.

La conveniencia más importante: usted mismo no tiene que hacer nada.

Amazon hará todo "de manera inteligente" por sí mismo: determinará qué objetos colocar.

Al habilitar la nivelación inteligente, ahorramos hasta un 10-15% en algunos depósitos.

Todo suena demasiado bueno y mágico. ¿Pero no puede haber algunas trampas? Lo son y, por supuesto, deben tenerse en cuenta.

  • Hay una tarifa adicional para las instalaciones de monitoreo. En nuestro caso, está totalmente cubierto por los ahorros.
  • Puede usar la nivelación inteligente para cualquier objeto. Sin embargo, los objetos de menos de 128 Kb nunca se transferirán al nivel de acceso infrecuente y siempre se pagarán al precio normal.
  • No apto para objetos almacenados durante menos de 30 días. Dichos objetos se pagarán con al menos 30 días de anticipación.

¿Cómo habilitar la nivelación inteligente?

Puede especificar explícitamente la clase de almacenamiento INTELLIGENT_TIERING en la API S3 o CLI.

Y puede configurar la regla del ciclo de vida, según la cual, por ejemplo, todos los objetos después de un cierto tiempo de almacenamiento se moverán automáticamente a niveles inteligentes.

imagen

Lea más en el mismo blog de AWS .

glaciar


Si estamos hablando de diferentes clases de almacenamiento en S3, entonces, por supuesto, también vale la pena mencionar Glacier .

Si tiene datos que deben almacenarse durante meses y años, pero su acceso es extremadamente raro, por ejemplo, registros, copias de seguridad, asegúrese de considerar el uso de Glacier. El precio de su uso es muchas veces menor que el S3 estándar.

Para un trabajo conveniente con Glacier, puede usar las mismas reglas de Lifecycle.

Por ejemplo, puede establecer una regla mediante la cual un objeto se almacenará en un almacenamiento normal durante algún tiempo, por ejemplo, 30-60 días (generalmente se necesita acceso a los registros o copias de seguridad más cercanos a tiempo, si hablamos de su almacenamiento), luego se moverá a Glaciar, y después de 1-2-3 ... años - completamente eliminado.

Será mucho más barato que almacenar simplemente en S3.

* * *

Hablé sobre algunos trucos que nosotros mismos estamos usando activamente. AWS es una gran plataforma de infraestructura. Seguramente, no hablamos sobre los servicios que utiliza. Si hay otras formas de guardar en AWS que le sean útiles, comparta los comentarios.

All Articles