Amazon Elastic Compute Cloud: Una Introducción
“Amazon Elastic Compute Cloud” (EC2) es un servicio brindado por Amazon Web Service (AWS), basado en el suministro de computación elástica en la nube. Pero primero que todo, ¿Qué es la computación en la nube y qué se quiere decir con elástica?
“Es la distribución de recursos de TI bajo demanda a través de internet, mediante un sistema de pago por uso. En lugar de comprar, poseer y mantener servidores y centros de datos físicos, se puede acceder a servicios tecnológicos, como capacidad informática, almacenamientos y bases de datos.”
AWS
El servicio EC2 elimina la necesidad de realizar una inversión inicial en hardware para comenzar a desarrollar e implementar aplicaciones, gracias a los entornos informáticos virtuales o instancias, suministrados. Las instancias poseen la particularidad de ser elásticas, pues estas nos permiten ajustar nuestra infraestructura de acuerdo a la demanda. Usando la funcionalidad Auto Scaling podremos aumentar o disminuir el consumo de recursos de cómputo de acuerdo a los picos de usuarios que tengamos a lo largo de las horas y los días, todo de manera completamente automática.
Desglosando EC2: Características
Regiones y zonas de disponibilidad
Debemos tener presente que los servicios de AWS varían de acuerdo a la región, ubicación física en el mundo que agrupa centros de datos, a la cual accedemos, por lo tanto, la disponibilidad de instancias puede variar de una región a otra. Las regiones de las cuales dispone AWS están distribuidas por todo el mundo y a su vez estas se componen de zonas de disponibilidad, zonas aisladas de errores y conectadas con otras zonas por una red de baja latencia.
Regiones de disponibilidad
Sistema operativo y software
Debemos introducir aquí un nuevo concepto, Amazon Machine Images (AMI). Una AMI es una imagen compatible y mantenida en el tiempo por AWS. Esta brinda la información necesaria para lanzar una instancia. Siempre se debe especificar una AMI si deseamos lanzar una o múltiples instancias. Las AMI se encuentran pre-configuradas con una lista variada de sistemas operativos compatibles, tales como Microsoft Windows, Ubuntu, Red Hat Enterprise Linux, Debian, etc.
Tipos de instancias
Existen cinco grupos de instancias básicas, conformadas por decenas de especificaciones diferentes de hardware, cada una de ellas orientada a diferentes casos de uso. Veamos un poco al respecto:
Instancias de uso general
Estas instancias proporcionan un conjunto equilibrado de recursos informáticos, de memoria y de red. Siendo extremadamente versátiles en su desempeño. Por ejemplo, las instancias M5 y M5a son útiles para albergar bases de datos pequeñas y medianas, M5zn es útil para computación de alto rendimiento, simulaciones y videojuegos, M6g para servidores de microservicio. Por otro lado, la serie T es práctica para albergar sitios web y repositorios de código, etc.Instancias optimizadas para computación
Este tipo de instancias son ideales para las aplicaciones sometidas a altas cargas de cómputo. Instancias de la clase C5 y C5n son bastante eficientes a la hora de soportar cargas de trabajo por lotes, como servidores web de alto rendimiento o para realizar modelados científicos, instancias C6 y C6id cumplen con los mismos propósitos que las C5, pero además pueden funcionar como servidores para juegos multijugador altamente escalables. Las Instancias Hpc6a tienen usos científicos avanzados como química computacional, dinámicas moleculares y astrofísica, etc.Instancias optimizadas para memoria
Este tipo de instancias son particularmente buenas a la hora de procesar grandes volúmenes de datos en memoria. La serie R, tales como las instancias R5, R5a, R5b son muy útiles a la hora de trabajar con bases de datos relacionales, así como bases de datos no relacionales. Adicionalmente, son eficientes a la hora de manipular grandes volúmenes de datos de almacenamiento en caché, etc. Otro tipo de instancias son las instancias de memoria elevada (u-*) de la serie X, estas instancias permiten trabajar con volúmenes de información muy elevados, tales como bases de datos SAP HANA, Redis o Memcached.Instancias optimizadas para almacenamiento
Como su nombre lo indica, este tipo de instancias fueron diseñadas para cargas de trabajo que requieren un alto acceso de lectura y escritura secuencial a enormes volúmenes de datos almacenados de manera local; siempre conservando una baja latencia. La clase de instancias D2 y H1 son útiles para el procesamiento masivo y paralelo, computación distribuida de MapReduce y Hadoop. Las clases I3 e I3en son ideales para trabajar con bases de datos NoSQL, sistemas de procesamiento de transacciones online de alta frecuencia, sistemas de archivos distribuidos, etc.Instancias de computación acelerada de Windows
Este tipo de instancias es útil para realizar tareas, tales como, cálculos numéricos de coma flotante, procesamiento de gráficos o coincidencia de patrones de datos. Debido al intenso uso del GPU estas instancias están demarcadas frecuentemente con la letra G, por ejemplo la clase G2 y G3, que ofrecen plataformas aptas para aplicaciones gráficas exigentes, que se ejecuten mediante DirectX, NVIDIA GRID, etc. También podemos encontrar las instancias de clase P2 y P3 las cuales ofrecen un gran ancho de banda, potente capacidad de cálculo de punto flotante, grandes capacidades de aprendizaje profundo, dinámicas de fluido computacional, etc.
Para saber más acerca de los diferentes tipos de instancias existentes, puedes referirte a la documentación en el siguiente enlace: https://aws.amazon.com/es/ec2/instance-types/]( https://aws.amazon.com/es/ec2/instance-types/
Volúmenes de almacenamiento persistente
Los volúmenes de almacenamiento o “Elastic Block Store” (EBS) son dispositivos de almacenamiento de nivel de bloque duradero que pueden integrarse a las instancias. Las EBS funcionan igual que un disco físico. Existen múltiples tipos de almacenamiento EBS como, unidades de disco duro (HDD), unidades de estado sólido (SSD) de uso general, etc.
En el siguiente enlace puedes encontrar más información al respecto https://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/ebs-volume-types.html.
Seleccionar un adecuado EBS es crucial para garantizar la persistencia de nuestros datos y la seguridad e integridad de los mismos. Siempre teniendo en cuenta la flexibilidad, en términos de capacidades, a la cual podremos tener acceso de ser necesario.
Firewall y protocolo IP
AWS Network Firewall es un servicio que nos permite definir reglas que proporcionen un control detallado del tráfico de red, esto es especialmente útil, pues, nos permite monitorear y filtrar constantemente el flujo de usuarios, evitando intromisiones maliciosas. Este servicio se vale de otros relacionados, como AWS Firewall Manager para gestionar y aplicar nuestras políticas de seguridad a nuestras cuentas y nubes virtuales privadas (VPC). A través de la consola de AWS https://us-east-1.console.aws.amazon.com/vpc puedes comenzar a crear tu primer VPC, una parte aislada de la nube donde podrá albergar objetos AWS, entre ellos instancias.
El uso de las VPC requiere la implementación del protocolo de direcciones IPv4, el cual está configurado por defecto y no puede ser desactivado. Es necesario mencionar que toda instancia y su respectiva VPC requieren de una IPv4 pública para la comunicación de ella con la internet, pues esta será la dirección a la cual los usuarios se conectaran, suele asignarse por defecto a menos de que nosotros especifiquemos lo contrario. Adicionalmente, podremos especificar una IPv4 privada para la comunicación interna entre nuestras instancias y por ende esta dirección será inaccesible para el público.
Primeros pasos: Desplegando una instancia Linux
Antes de comenzar con este breve tutorial de cómo realizar el despliegue de una instancia Linux, debemos recalcar la importancia de poseer una “Alarmas de facturación”, pues la correcta gestión de estas puede ahorrarnos muchas sorpresas desagradables a fin de mes. Valiéndonos del servicio “Amazon Cloud Watch” podremos crear alertas de facturación que monitorean nuestros gastos y nos notifican cuando superemos nuestros límites establecidos.
Aquí encontrarás más información al respecto https://console.aws.amazon.com/billing/, siguiendo la ruta: “Preferencias de facturación”/ “Recibir alertas de facturación”.
Lo primero para comenzar con el lanzamiento de una instancia es ingresar a la consola de Amazon EC2, en el siguiente enlace https://console.aws.amazon.com/ec2/. Seguidamente, se debe ubicar el panel de la consola EC2 marcado como "Lanzar instancia" (Launch instance), ubicado en la parte inferior. Seleccione la opción de “Lanzar instancia”
Lanzando una instancia
Continuemos el proceso seleccionando un “Nombre y etiquetas” (Name and tags), asigne dicho nombre a la instancia. Continúe con el siguiente ítem del formulario “Imágenes de aplicación y sistemas operativos” (Amazon Machine Image), aquí podrá escoger entre AMIs recientemente usadas por usted y su equipo, por sus AMIs propias o decantarnos por un “Inicio rápido”, siendo esta la opción que marcaremos.
Seguidamente en la opción de "Tipos de instancia" (instance type) seleccionaremos el tipo de instancia que deseamos. Aquí seleccionaremos el hardware que más se ajuste a nuestras necesidades de negocio, siendo el “t.2.micro” la instancia configurada por defecto y cubierta por la capa gratuita de AWS. Continuamos con el formulario y asignamos un “Par de claves” para el inicio de sesión. Recuerde que el par de claves es necesario para acceder a sus instancias, por eso selecciónelas con cuidado.
En el ítem de “Configuración de red” (Network settings”) seleccione la opción de “Editar”, allí especificaremos un “Grupo de seguridad” (Security group name). El Grupo de seguridad corresponde, en palabras simples, a un firewall que regulará, de acuerdo a sus propias reglas, el tráfico de información de las instancias con respecto a lo que puede ingresar y lo que puede salir.
Puede encontrar más información de cómo crear y configurar su grupo de seguridad aquí: https://docs.aws.amazon.com/es_es/cli/latest/userguide/cli-services-ec2-sg.html.
Editando la configuración de red
Por ahora mantendremos las demás configuraciones por defecto. Recuerde que puede ver un resumen general del lanzamiento de su instancia en la casilla “Resumen”, al final del formulario. Finalmente, damos clic en el botón “Lanzar instancia” para terminar el proceso. Se le abrirá una ventana de confirmación, seleccione “Ver todas las instancias” para poder cerrarla. ¡Listo, Felicitaciones, su primera instancia se encuentra ya creada!, así de simple.
Importante: Una vez nuestra instancia EC2 haya cumplido su propósito, podemos eliminarla o “terminar la instancia” para que esta no incurra en más gastos. Se debe tener claro que una vez se termine dicha instancia no será posible conectarse a ella, ni iniciarla. Aunque siempre será posible lanzar nuevas instancias utilizando las AMI previamente creadas. Otra alternativa puede ser “hibernar” nuestras instancias, en dicho estado la memoria RAM y el “Amazon Elastic Block Store” (EBS) se guardarán. En estado de hibernación no se cobrará por el uso de la instancia pero si por almacenamiento de EBS.
Para terminar una instancia acceda la consola de AWS https://console.aws.amazon.com/ec2/ y acceda a la sección de “Recursos” e “instancias en ejecución”. Allí podrá gestionar sus instancias activas en el momento.
Accediendo a los recursos e instancias
Eso sería todo acerca de cómo lanzar una instancia básica en AWS, te invitamos a seguir explorando y aprendiendo nuevas funcionalidades. En posteriores entregas hablaremos sobre otros servicios que la programación en la nube con AWS nos proporciona.