Computo en la Nube con AWS
Hola antes de entrar en materia me gustaria comentar que lo redactado en este articulo esta basado en las unidades 1 y 2 del curso :
AWS Cloud Practicioner de AWS .
Te comparto el link por o si consideras es mejor leerlo desde ahi te lo dejo a tu criterio (Te recuerdo que para acceder al curso debes contar con una cuenta y loguearte primero)
El concepto de cómputo en la nube es el consumo de recursos en la nube bajo de manda con la filosofia de "pagar solo por lo que se usa" con la ventaja que si es necesario más almacenamiento o cpu con solo un par de ajustes en las configuraciones se puede obtener de inmediato, y de igual forma dejar de usarlo, siendo esta flexibilidad una de las mayores ventajas que brinda AWS .
- Cloud-based Deployment : Es la migración, diseño y ejecución de todas las partes de una aplicación en la nube.
- On-Premises Deployment : También conocida como la nube privada. En este modelo, los recursos son desplegados en servidores on-premises usando virtualización y herramientas de administración.
- Hybrid Deployment : Es el uso de ambos esquemas (Cloud y on-premise), esto debido a que por regulaciones gubernamentales se requiere mantener los datos en centros de datos on-premises.
Una vez elegida el tipo de modelo viende la siguiente pregunta ¿Donde desplegaremos nuestros servicios Rest ? ¿Donde voy a configurar mi bd? ¿En que lugar de la nube puede van a existir en mi solucion?
Pues para los que estamos acostumbrados a servidores virtuales la respuesta es : EC2 .
El servicio EC2 (Elastic Compute Cloud) como primera ventaja es que evita el tener que preocuparse por la cotizacion, mantenimiento , instalacion y administración del hardware fisico, ya que esta responsabilidad es ahora tomada por AWS. Una instancia la cual es aprovisionada se ejecuta en los servidores fisicos de AWS usando tecnologia virtualizada y compartiendo el recurso entre diferentes maquinas virtuales . Esta filosofia de compartir el hardware es llamada como multitenancy .
La siguiente ventaja es que al aprovisionar la instancia EC2 es posible configurar los recursos , sistema operativo asi como los paquetes de software que se ejecutaran en ella .
Como bien mencionaba en el servicio EC2 es posible configurar los recursos de acuerdo al proposito por ello al momento de aprovicionarla es importante definir bien el tipo de familia que utilizaremos ya que de acuerdo a la tarea se nos ofrece una variedad de combinaciones en CPU , memoria y almacenamiento.
Los tipos de instancias son :
- General purpose instance : Provee un balance de computo en memoria , recurso de red y cpu , Usados conmunmente para bd pequeñas y medianas , aplicaciones , servicios web .
- Compute optimized instance : son ideales para aplicativos que necesitan procesadores de alto rendimento . Usados conmunmente para gaming server y procesos batch.
- Memory Optimized instance : diseñada para aplicativos que necesiten procesar volumenes grandes de datos en memoria .Es ideal para bases de datos de alto rendimiento.
- Accelerated computing instance : Esta equipada con coprocessors o hardware accelarator's para mejorar el rendimiento en software que se ejecuta en el CPU. Por ejemplo calculos con numeros flotante , stream de juegos y aplicaciones .
- Storage optimized instance : Diseñada para flujos en los cuales se require de manera recurrente lecturas y escrituras a fuentes de datos . Por ejemplo File system , datawarehousing.
Ya que hemos hablado del servicio EC2 y sus tipos , probablemente nos preguntamos ¿Cuales son los costos? A continuacion resumire las opciones de contratación :
- On Demand : Ideales para proyectos cortos y sin costos por contratacion , la instancia corre hasta que es detenida y se paga por el tiempo que es utilizada . No es recomendada para cargas de trabajo mayores a un año por que pueden experimentar grandes costos (Utilizar Reserved Instances).
- Reserved Instance : Son instancias en las cuales es predecible el uso . Se califica a un descuento cuando se compromete el uso de 1 a 3 años. Existen 2 tipos :
- Standar Reserved Instance : Se conoce el tamaño , region y s.o para el plan, estos valores se definen desde la contratacion.
- Convertible Reserved Instance : Se necesitan mayor flexibilidad en la region y tipo de instancia durante el tiempo de contratacion.
- EC2 Instance Savings Plans : Plan en el cual se hace un compromiso de gastar por horas en una familia de instancias en una region de 1 a 3 años . Cualquier consumo de mas es cargado bajo uso On Demand .
- Spot Instance : Plan para flujos de trabajo con un inicio y final programado ,y ofrecen un ahorro del 90 % estos son ejecutados siempre y cuando amazon tenga la capacidad disponible en caso de no existir no es ejecutado .
- Dedicated host : Es la contratacion dedicada de un servidor amazon , bajo los planes , per-socket , per-core , o per-VM . Este es el mas costoso .
Un problema muy comun en las instancias on premises es la escabilidad (es decir contar con los recursos que se necesitan de acuerdo a la demanda) , sin embargo para las instancias EC2 se cuenta con el servicio Amazon EC2 Auto Scaling .
Amazon EC2 Auto Scaling agrega o remueve instancias automaticamente de acuerdo a la demanda y esto es posible utilizando 2 enfoques : Dynamic Scaling y Predictive scaling.
Al preparar un aplication para ejecutarse y configurarle el autoescalado se hace mediante un Grupo de Auto Escalado
Donde es posible configurar :
- Minimo : La cantidad de instancias que se ejecutan despues de crear el grupo .
- Deseado : La cantidad de instancias que necesita la aplicacion para correr.
- Maximo : Cantidad de instancias que puede crecer el grupo de acuerdo a la demanda.
Ahora el realizar el escalado de instancias no hace pensar ¿Como hacemos para distribuir la carga ? o en caso de levantar un nuevo aplicativo ¿Como lo registro ? .
La respuesta es con un balanceador de carga , y en el caso de AWS se cuenta con Elastic Load Balancing.
Elastic Load Balancing es el servicio de AWS que distribuye automáticamente el tráfico entrante de aplicaciones entre múltiples recursos, como instancias de Amazon EC2.
Otros Servicios
Entre los otros servicios que ya alcance a profundice mas encontramos :
- Amazon SNS y Amazon SQS : El cual nos permite aplicar colas de mensajes.
- AWS Lambda : Servicio en el cual podemos implementar soluciones serverless , es decir sin necesidad de aprovisionar de un servidor .
- Amazon ECS : Permite ejecutar y escalar contenedor en AWS , esta disponible Docker .
- Amazon EKS : Solución en la nube para implementar Kubernetes .
Espero que esta pequeña contribución haya sido de su agrado . Keep learning :) !!!!
Comentarios
Publicar un comentario