Blog de Amazon Web Services (AWS)
Conociendo un poco más sobre Graviton2
Por Gustavo Barbosa, Arquitecto de Soluciones de AWS
Pedro Gadelha, Arquitecto de Soluciones de AWS
Carolina Junqueira Ferreira, Arquitecta de Soluciones de AWS
Liz Menichetti, Arquitectura de clientes en AWS
Amazon Elastic Compute Cloud (Amazon EC2) es un servicio web que proporciona capacidad de cómputo segura y escalable en la nube. Este servicio está diseñado para facilitar la utilizacion de servicios de cómputo en la nube a escala para desarrolladores. Con Amazon EC2, puede implementar diferentes tipos de cargas de trabajo, tales como: servidores web, base de datos, análisis de datos, contenedores, procesamiento de imágenes, servicios de cómputo de alto rendimiento (HPC), Machine Learning, servidores de aplicaciones, entre muchos otros.
Con Amazon EC2 puede aprovisionar instancias virtuales en la nube. Este servicio ofrece diferentes tipos de plataformas con la posibilidad de elegir tipo de procesador, almacenamiento, red, sistema operativo y modelo de compra. Entre las familias de procesadores disponibles se encuentran: Intel, AMD y Graviton.
Los procesadores AWS Graviton 2 son creados utilizando núcleos ARM Neoverse de 64 bits para proporcionar el mejor rendimiento para sus cargas de trabajo en la nube ejecutadas en Amazon EC2. Esta familia de procesadores se ha utilizado para optimizar el rendimiento y los costes de la carga de trabajo.
Los procesadores AWS Graviton2 son un gran salto de rendimiento y capacidades en comparación con la primera generación. Son utilizados por las familias de instancias T4g, M6g, C6g, R6g y X2GD y sus variantes de Amazon EC2 con almacenamiento local SSD basado en NVME, lo cual proporciona un costo / rendimiento hasta un 40% mejor que las instancias comparables basadas en la generación actual de x86 para una amplia variedad de cargas de trabajo.
El propósito de este blog es presentar qué tipos de cargas de trabajo son soportadas por Graviton2, cómo migrar a este tipo de instancia y qué tipos de instancias están disponibles para esta familia.
AWS Graviton x AWS Graviton2
Los procesadores AWS Graviton se basan en la arquitectura de los procesadores ARM Neoverse de 64 bits. La primera generación disponible para EC2 en tipos de máquina A1 con hasta 16 vCPUs. Graviton2 ofrece una gama más amplia de tipos de máquinas, tamaños y tipos de cargas de trabajo.
Los procesadores AWS Graviton2 proporcionan un rendimiento mejorado para cargas de trabajo de codificación de vídeo, aceleración de hardware para trabajos de compresión y soporte para inferencia basada en CPU para Machine Learning. Ofrecen 7 veces más rendimiento, 4 veces más núcleos, memoria 5 veces más rápida y 2 veces más caché que la primera generación. Por lo tanto, sus principales ventajas sobre la primera generación son la variedad y el rendimiento.
Tipos de instancias
Los tipos de instancias que tienen procesadores AWS Graviton2 son: T4g, M6g, M6gD, R6g, R6gD, C6g, C6gD, C6gD, C6Gn, X2gD.
Instancias de uso general
Las instancias de uso general se recomiendan para aplicaciones que utilizan recursos de memoria, cómputo y red en proporciones equilibradas. Algunos ejemplos son: servidores de aplicaciones, microservicios, clústers, etc.
T4g
Las instancias de la familia T4g son ideales para microservicios (contenedores) a gran escala, bases de datos pequeñas y medianas, escritorios virtuales y aplicaciones críticas para la empresa. Ofrecen un rendimiento hasta un 40% mejor con respecto a las instancias T3 (instancia EC2 de la generación anterior) y son ideales para ejecutar aplicaciones de uso moderado de CPU que tienen alzas temporales de uso.
M6g
Las instancias de la familia M6g son ideales para sistemas de almacenamiento de tamaño mediano, microservicios (contenedores), clústers y servidores de aplicaciones. Con una relación precio/rendimiento hasta un 40% mejor que las instancias de la generación anterior (M5), los desarrolladores aplicaciones para ARM nativas de la nube también utilizan instancias M6g, lo que garantiza la eliminación de la compilación cruzada y la emulación.
Instancias optimizadas para memoria
Las instancias optimizadas para memoria proporcionan un buen rendimiento para las aplicaciones que procesan una gran cantidad de datos en memoria.
R6g
Con una relación precio/rendimiento de hasta un 40% mejor con respecto a las instancias de la generación anterior (R5g), se recomiendan las instancias R6g para ejecutar cargas de trabajo con uso intensivo de memoria, como bases de datos de código abiertas, caché en memoria y grandes cantidades datos para análisis en tiempo real. Los desarrolladores también pueden utilizar estas instancias para crear aplicaciones basadas en ARM de forma nativa en la nube, eliminando la necesidad de compilación y emulación cruzadas y mejorando el tiempo de comercialización.
x2gd
Los procesadores X2GD se lanzaron en marzo de 2021 y ofrecen una relacion costo beneficio hasta un 55% que las instancias X1 (generación anterior). Se recomienda utilizar instancias X2GD para cargas de trabajo de uso intensivo de memoria, como caché para bases de datos (Redis, Memcached), bases de datos relacionales (MySQL, PostgreSQL), cargas de trabajo de automatización de diseño electrónico (EDA), análisis en tiempo real y servidores de caché en tiempo real.
Instancias optimizadas para cómputo
Las instancias optimizadas para cómputo se desarrollan con procesadores de alto rendimiento. Las instancias de esta familia son apropiadas para cargas de trabajo de procesamiento por lotes, transcodificación de medios, servidores web de alto rendimiento, computación de alto rendimiento (HPC), modelado científico, servidores de juegos dedicados y motores de servidores de anuncios, aceleración de la inferencia de Machine Learning y otros sistemas informáticos cómo aplicaciones intensivas.
C6g
Las instancias C6g ofrecen hasta una relacion costo benefocio hasta un 40% más que las instancias C5. Son ideales para ejecutar cargas de trabajo de uso intensivo de cómputo. Algunos ejemplos de cargas de trabajo son: informática de alto rendimiento (HPC), codificación de vídeo, juegos, aceleración de inferencia de Machine Learning basada en CPU, análisis de datos distribuidos.
Familia «d»
Las instancias con d al final (M6gd, C6gd, R6gd) son instancias disponibles con la opción de almacenamiento local a nivel de bloque de SSD basada en NVME (C6gd) para aplicaciones que requieren almacenamiento local de alta velocidad y baja latencia.
Ejemplos de Costos
Uno de los propósitos de la familia AWS Graviton2 es ofrecer resultados efectivos en costo. El siguiente ejemplo muestra algunas instancias muy utilizadas y cómo se compara el precio con las instancias de AWS Graviton2. Recordando que esta comparación es uno a uno, Ud puede hacer el cálculo de su carga de trabajo (p. ej.: 24×7 durante 30 días)
Las instancias EC2 tienen opciones uso y reserva a largo plazo. Debido a que las instancias reservadas y los planes de ahorro, con compromisos de uso de 1 año o 3 años en ambas opciones, el cliente puede aprovechar la ventaja de descuentos superiores a los precios disponibles en el modelo bajo demanda. Otra opción es utilizar instancias SPOT para cargas de trabajo que se pueden ser interrumpidas y ademas pueden ofrecer hasta un 90% de descuento en comparación al modelo de instancias bajo demanda.
Cargas de trabajo compatibles
Los procesadores AWS Graviton2 soportan distintos sistemas operativos empresariales y comunitarios: Amazon Linux 2, Red Hat Enterprise Linux, Ubuntu, SUSE Linux Enterprise Server, CentOS, Debian, Fedora, FreeBSD, NetBSD.
Graviton2 permite utilizar de forma nativa diversas aplicaciones del mercado, así como servicios de AWS, tales como:
- Contenedores: Docker, Amazon EKS, Amazon ECS, petardo, Amazon ECR, Rancher, Kubernetes;
- Herramientas y servicios de AWS: Amazon CloudWatch, Amazon Inspector, AWS System Manager, AWS CodeCommit, AWS CodeBuild, AWS CodePipeline, AWS Cloud9, Amazon Coretto, AWS Batch;
- Configuración y Monitoreo: Datadog, Chef, Splunk, New Relic, Terraform, DynaTrace, Honeycomb;
- Seguridad: CrowdStrike, Qualys, Rapid7, Snyk, Tenable;
- Desarrollo de Software: CircleCI, GitHub, GitLab, Github Actions, Jenkins, Travis CI;
- Base de datos: Cassandra, KeyDB, MariaDB, MongoDB, Memcached, MySQL, PostgreSQL, Redis, ScylladB.
Un punto interesante es que Graviton2 esta soportado por servicios manejados de AWS como Amazon RDS y Amazon Aurora. Además de habilitar la implementación en una instancia de EC2 con una Base de Datos de código abierto, puede utilizar Bases de datos administradas por AWS con instancias Graviton2 en Amazon RDS (MariaDB, MySQL, PostgreSQL), así como Amazon Aurora (MySQL y PostgreSQL).
En el área de datos, Graviton2 se puede utilizar en clúster de Amazon Elasticsearch Service, Amazon ElasticCache (Memcached y Redis), así como en Amazon Elastic Map Reduce (EMR), que proporciona diversas opciones para herramientas (Spark, Hive, Presto, Flink, Apache Hudi, Pig, etc.).
Para averiguar si su aplicación es compatible con la arquitectura Graviton2, es necesario realizar pruebas. Generalmente, el código de lenguajes interpretados o compilados para un bytecode intermedio no requiere modificaciones, como es el caso de: Python, Java, Ruby, PHP, Node.js, .Net Core (que ya tiene soporte para ARM64 y linux). Sin embargo, además del código de programación, la portabilidad de las aplicaciones, los sistemas y las plataformas puede variar principalmente en función de las dependencias de su aplicación.
Existen lenguajes de programación que son soportados en la arquitectura ARM64 pero que deben volver a compilarse son: C, C++, Go, Rust, entre otros. En la actualidad, es común que los compiladores soporten la arquitectura ARM64 que es la base de Graviton2.
En cuanto al desarrollo de aplicaciones y al uso de herramientas de AWS, algunas herramientas ya admiten Graviton2 de forma transparente, como: AWS CLI v1 y v2, agente de CloudWatch y SDK (C/C++, Python, Java, Go, Node.js, .Net).
Necesidad de recompilación: CISC x RISC
Los procesadores Graviton2 utilizan la arquitectura ARM64 (64 bits), que es el acrónimo de Advanced RISC Machine. Al utilizar la arquitectura RISC, Graviton2 difiere de los procesadores x86 bits basados en la arquitectura CISC.
La arquitectura CISC (Complex Instruction Set Computer) proporciona un gran número de instrucciones a nivel de lenguaje Assembly. Assembly es un lenguaje de programación de «bajo nivel» en el que cada sentencia corresponde a una única instrucción de máquina. Por lo tanto, la arquitectura CISC se ha utilizado ampliamente para la manipulación extensiva de elementos computacionales de bajo nivel, como la memoria y la aritmética binaria.
La arquitectura de Reduced Instruction Set Computer (RISC), comúnmente utilizada en dispositivos móviles, tiene una arquitectura que divide las instrucciones en tamaños estándar para ejecutarse en un solo ciclo de reloj del procesador. Dada su evolución, hoy en día con arquitecturas de 64 bits, este tipo de procesamiento beneficia varios tipos de cargas de trabajo, optimizando los procesos de software.
Sin embargo, dado que la arquitectura CISC fue la más utilizada para el desarrollo de software durante muchos años, con procesadores Intel y AMD, una gran parte de los lenguajes de programación están más adaptados a este tipo de arquitectura. Algunos lenguajes como Python y NodeJS tienen soporte nativo para ambas arquitecturas, pero otros lenguajes como C, C++ requieren una recompilación, ya que se desarrollaron centrándose en la arquitectura CISC, en un momento en que la arquitectura RISC no tenía la solidez que tiene hoy en día para soportar servidores de aplicaciones.
Cómo migrar a Graviton2
Como se mencionó en la sección anterior, para la migración de cargas de trabajo a instancias de tipo Graviton2 se requieren algunos pasos y comprobaciones. Algunos pasos generales para esta migración son:
1) Identificar dependencias: identifique todas las dependencias de su carga de trabajo (bibliotecas, agentes, herramientas e lenguajes, paquetes o bibliotecas patentados o de pago, agentes o daemons para monitoreo, registros y programas o paquetes de seguridad).
2) Compruebe el soporte de ARM64: Después de identificar las dependencias, identifique el soporte ARM64 para ellas: compruebe si hay binarios de ARM64, arquitecturas agnósticas, pregunte al proveedor o fabricante sobre el soporte.
3) Prueba: Ejecute diferentes tipos de pruebas (integración, unidad, preproducción, rendimiento, etc.) según las necesidades de la empresa y de las aplicaciones, especialmente si tiene que volver a compilar su aplicación: prueba de rendimiento.
4) Actualización: Actualizar recursos, Infraestructura como código (p. ej.: AWS CloudFormation, Terraform, CDK), que aprovisionan los recursos computacionales que se basarán en Graviton2, ejemplos: actualización de familias de instancias, recreación de imágenes, actualización de git y pipelines de desarrollo, etc.
5) Implementación: Determine las estrategias de implementación para nuevas instancias (azul/verde, canario, despliegue, etc.). Independientemente de la estrategia de implementación, asegúrese de supervisar continuamente su entorno (tasas de error, carga, tiempo de respuesta, comportamiento del usuario, latencia, etc.) para identificar si la aplicación está en buen estado o si necesita modificaciones.
Conclusión
Los procesadores Graviton2 ofrecen oportunidades de optimización rentables para cargas de trabajo de diferentes escenarios, tales como: servidores web, bases de datos, caché, microservicios, contenedores, análisis y procesamiento de datos, procesamiento de imágenes y vídeo, inferencia automática de Machine Learning, sistemas distribuidos y computación de alto rendimiento (HPC), entre otros. Para soportar las diferentes cargas de trabajo, esta familia de procesadores tiene diferentes tipos de instancias, desde casos de uso general hasta casos específicos (Cómputo, GPU, uso intensivo de memoria).
AWS Graviton2 está basado en ARM64 y, al igual que con cualquier cambio de arquitectura o sistema operativo, es necesario realizar pruebas para evaluar si la aplicación, el sistema o la plataforma tienen portabilidad para ejecutarse en esta familia de procesadores.
A continuación se muestran algunos materiales que pueden ayudarle a obtener más información sobre Graviton2.
Material de respaldo
– AWS Graviton2 para ISV
– Resultados de referencia de Graviton 2
– Ejecución de contenedores multiarquitectura con Amazon EKS
– Amazon RDS con procesadores Graviton2
– Predicción meteorológica con AWS Graviton2
– AWS Graviton 2
Este artículo fue traducido del Blog de AWS en Portugues
Sobre los autores
Gustavo Barbosa es arquitecto de soluciones de AWS para pymes. Ayuda a sus clientes a crear aplicaciones resilientes y de alta disponibilidad con los servicios que ofrece la plataforma de AWS.
Pedro Gadelha es un arquitecto de soluciones que atiende a las regiones del noreste y Río de Janeiro. Comenzó su carrera en el mundo de la infraestructura y las redes, y tiene gran interés en las áreas de migración de aplicaciones a la nube y la seguridad.
Carolina Junqueira Ferreira es arquitecta de soluciones de AWS que presta servicios a empresas de varios segmentos y ubicaciones. Ayuda a los clientes a obtener más información sobre AWS durante su proceso de transformación digital en la nube, así como en el recorrido de Analytics y Data Lake.
Liz Menichetti ha trabajado con la arquitectura de clientes en AWS desde 2019, trabajando en Enterprise con proyectos sobresalientes en las más variadas verticales del sector, no solo solucionando problemas y apoyando a los clientes, sino que también aporta valor a los clientes negocios con buenas prácticas de seguridad, escalabilidad, resiliencia, rendimiento y excelencia operativa.