Cargando...
#{post.imgAlt}

Mejoras en costos en nuestra cuenta de Amazon Web Services - AWS

Amazon Web Services (también conocido como AWS) es una de las herramientas más poderosas de la actualidad para poder construir nuestros proyectos desde los más básicos hasta los más complejos que puedan imaginarse.
Su ecosistema consiste de una serie de servicios que sirven para atacar cualquier problema de hoy en día relacionado con la puesta en producción o desarrollo de nuestros proyectos de desarrollo.
Algunos ejemplos de servicios dentro de su ecosistema son:

  • Amazon Elastic Compute Cloud (EC2) para manejar máquinas virtuales
  • Amazon Simple Storage Service (S3) para manejar almacenamiento de todo tipo de archivos (imágenes, videos, texto plano, archivos binarios, etc)
  • Lambda, que nos permite correr código serverless
  • Amazon Relational Database Service (RDS) para montar cualquier tipo de base de datos de uso general ya sea MySQL, PostgreSQL, SQLServer, MariaDB o incluso su propia implementación llamada Amazon Aurora
Y así cuenta con muchos más servicios que podríamos analizar en profundidad en futuros posts.

Pero bueno, el punto principal de este artículo en particular es mostrar que con todo este gran poder que nos brinda AWS a nosotros como desarrolladores también conlleva una gran responsabilidad.
Cada servicio de AWS tiene su costo asociado (algunos servicios ofrecen un free tier que si no se superan ciertos parámetros, el servicio es gratuito por x cantidad de tiempo. Creo que son 12 meses para cuentas nuevas).
Entonces, cómo cada servicio de AWS tiene un costo asociado, es importante mantener un control estricto de los gastos asociados a nuestras cuentas para evitar pagar de más de forma innecesaria.

En equipos de desarrollo grandes suelen haber personas específicamente encargadas de monitorear y controlar que las configuraciones de los diferentes servicios de AWS sean correctas para no gastar de más o en caso de detectarlo comunicarlo al equipo correspondiente para que realicen los cambios necesarios para evitar que eso siga propagándose.
En equipos de trabajo más pequeños la responsabilidad suele estar dividida entre varios desarrolladores o en algunos casos sobre alguna persona con el perfil de líder técnico o arquitecto.

Veamos un ejemplo práctico:
Contamos con un ambiente de desarrollo. Llamemoslo ‘CI’. Nuestros desarrolladores usarían este ambiente para probar los últimos cambios en integraciones entre diferentes sistemas y/o servicios.
En este ambiente contamos con una máquina virtual en una instancia EC2 y una base de datos en una instancia RDS. Algo bastante simple para representar la idea en concreto.
Ahora bien, si el encargado de crear este ambiente de desarrollo no tiene mucha idea de lo que está haciendo (sea porque no conoce la plataforma AWS o recien esta empezando, o incluso puede ser una persona que si la conoce pero simplemente espera un resultado final funcional y no le importan los “detalles” adicionales, como en este caso el costo de mantener este ambiente funcionando).

Digamos que por ejemplo al levantar el ambiente, este desarrollador deja la instancia de la base de datos RDS levantada en múltiples zonas. Algo completamente normal y muy útil para evitar bajas de servicio en situaciones críticas. Pero… en nuestro caso puntual que es un ambiente de desarrollo y teniendo en cuenta que tenemos un equipo pequeño tranquilamente no es necesario tener múltiples zonas simplemente para ese ambiente de desarrollo.
Ésta configuración si va a ser recomendado en el caso de ambientes de pre producción, QA o incluso producción.
Entonces en este ejemplo puntual podemos ver como si por ejemplo se activa una zona adicional, el precio de la instancia RDS se duplica instantáneamente para poder mantener las instancias funcionando.

Este es un caso muy básico para entender el punto, pero piensen ahora en un sistema enorme, con múltiples ambientes de desarrollo, ambientes productivos, bases de datos, instancias EC2, instancias elasticache, elastic beanstalk, colas SQS, etc.
En cualquiera de todos esos manejos de instancias pueden y van a aparecer casos similares si no hay un control de lo que se está levantando en cada paso del proceso de desarrollo.

Bueno, como siempre, espero que les haya servido esta información y estén en contacto con cualquier duda o sugerencia que tengan para brindar.

Saludos!

Acerca de Agnalim

Hola! Soy un desarrollador de software con cerca de 10 años creando herramientas usando diferentes tipos de tecnologías. Creando desde websites, servicios de backend hasta aplicaciones mobile. He usado diferentes lenguajes de programación y herramientas desde que comencé a programar cuando tenía unos 12 años y espero que encuentres algo útil leyendo sobre mis experiencias profesionales o bien relacionadas a hobbies.
No todo está relacionado con programación o desarrollo. Me gustan los juegos y la simulación aerea así que puedes encontrar cosas relacionadas también.

Web, backend, mobile, juegos, simulación, Lo que sea :)

Email: ofx8422contact@gmail.com

Invitame un café en cafecito.app

Seguime en Instagram