El costo de tener un servicio en la nube

Computer Money
Pexels Pixabay

Al considerar una plataforma web para uso interno, algo que hay que tener es en cuenta es cuanto cuesta operarla. De la misma manera que tener una oficina tiene un costo asociado sólo por tenerla disponible (arriendo, internet) y además utilizarla (electricidad, agua) una plataforma web también tiene un costo por tenerla disponible 24/7 y además por su uso.

Vamos a explorar los costos de algunas opciones disponibles para poner nuestro servicio propio en Amazon Web Services (AWS), una de las plataformas de servicios más utilizadas del mundo.

Para entender los costos asociados es necesario definir un servicio, en este caso un servicio es un programa o parte de un programa que corre en un servidor o un computador y que resuelve un problema particular a través de internet, al cual normalmente se accede desde algún dispositivo electrónico.

Tomemos un ejemplo bien concreto, en este caso tengo un portal donde puedo consultar las imágenes y documentos que subió un usuario para su evaluación. Este servicio realiza las siguientes acciones (una vez accionado por el dashboard o portal)

  • Recibir el nombre del usuario
  • Buscar en la base de datos los datos del usuario
  • Buscar en el almacenamiento de datos los documentos asociados
  • Convertir y filtrar los archivos para mostrarlos
  • Entregar al portal la lista de archivos y datos listos para ser mostrados

Dado que ya tenemos el programa que ejecuta este servicio ¿Donde lo ponemos? Analicemos dos de las opciones más utilizadas, EC2 y Lambda

EC2 y Lambda

EC2 (Elastic Compute Cloud)

Amazon EC2

Esta modalidad consiste en básicamente arrendar un computador en la nube (llamado instancia) del cual se encarga Amazon de mantener y permite ejecutar lo que uno quiera. Considerando las características que tiene estas modalidad podemos considerar lo siguiente:

  • A pesar de que se cobra por hora, para tener un servicio disponible 24/7 necesito correr la instancia 24/7
  • Puedo correr varios servicios, tantos como aguanta el computador en su capacidad, sin embargo esto significa balancear, analizar la interoperabilidad y estimar el funcionamiento de los servicios dado que no estarán encapsulados
  • Comparativamente con Lambda, los servicios pueden tener más funcionalidades definidas dentro de la misma instancia, mientras que en Lambda hay que utilizar otros servicios disponibles de AWS.
  • Requiere una estrategia de asignación de recursos y balance para su escalabilidad

Lambda

Amazon Lambda

Esta modalidad consiste en poner el servicio como una función on demand, donde no nos preocupamos del computador o instancia, sólo del código y recursos que necesita el servicio. Básicamente es un nivel más abstracto que EC2, donde tenemos menos responsabilidades que mantener pero más facilidad de implementación.

  • Se cobra por segundo de ejecución, puedo tener un servicio disponible 24/7 y sólo nos cobran por la cantidad de tiempo que se está ejecutando
  • Puedo tener varios servicios pero pago por el tiempo combinado de utilización, aunque sean concurrentes porque funcionan separados y encapsulados
  • Comparativamente con EC2 normalmente tengo que acceder a servicios externos para lograr funcionalidades adicionales, mientras que en EC2 puedo además de utilizar servicios externos muchas veces puedo integrarlos dentro de la instancia
  • Escala automáticamente, no tengo que preocuparme del volumen de uso

Cálculo de costos

Condiciones

Los costos dependen del tiempo y varían según la capacidad de la instancia arrendada en EC2 y de la memoria de la función en Lambda. Simplificaremos a utilizar una capacidad bastante básica para comparar rápidamente. Detalles sobre los costos se pueden ver en la tabla de precios de Lambda y la tabla de precios de EC2

Asumiremos lo siguiente

  • Ignoraremos la capa gratuita de AWS
  • Una instancia t2.micro en EC2
  • Una función de 128 MB
  • El tiempo de ejecución de mi servicio de 3 segundos
  • Sin costos por transferencias, almacenamientos, invocaciones, componentes ni servicios asociados
  • Hay 730 horas en un mes
  • Este servicio lo voy a consultar 100 veces por hora, en horario laboral (horario laboral lo tomamos como un 27% del tiempo por semana)

El costo de la instancia es de 0.0116 USD por hora

El costo de la función es de 0.000002083 USD por segundo

Costos

Mantener esta instancia 24/7 nos cuesta 8.468 USD al mes

Una tiempo equivalente de ejecución en Lambda es de 4065290 segundos, o 1.55 meses

Sin embargo Lambda sólo lo pagamos durante su ejecución, que en un mes con lo asumido anteriormente es (horas del mes)(porcentaje)(veces por hora)(segundos por vez)(costo por segundo) lo que tiene un costo de 0.123 USD al mes

Para equiparar este costo con el de la instancia de EC2 necesitamos correr 69 funciones similares en Lambda, por lo que en este caso es mucho mas conveniente utilizar Lambda

Las condiciones son representativas de un servicio de consulta simple, sin embargo los servicios pueden ser mucho mas complejos dependiendo de lo requerido, de sus casos de uso, entre otros. Además de que no estamos considerando los servicios asociados necesarios (tanto para Lambda como para EC2).

Con este tipo de análisis podemos considerar el factor económico al evaluar donde colocar nuestros servicios, cambiando las condiciones y consideraciones que estamos tomando en cuenta.

En Symmetrics Lab tenemos experiencia desarrollando plataformas y servicios tanto en Lambda como en EC2, si necesitas evaluar que opciones son mejores para tu caso, dejanos un mensaje y contáctanos para que conversemos si lo necesitas

LinkedIn
Ver más publicaciones

Contacto

Si prefieres escríbenos directamente a info@symlab.io

Tambien nos puedes encontrar en Linkedin

Symlab Footer