Caracteristicas adicionales de EC2
Clase 12 de 75 • Curso de AWS Certified Solutions Architect Associate
Características Adicionales de EC2: Optimizando el Rendimiento y la Flexibilidad
Durante una migración crítica de sistemas financieros de Nexiabank a AWS, el banco descubrió que sus aplicaciones de trading de alta frecuencia experimentaban latencias inesperadas de 0.5 milisegundos. Este pequeño retraso, imperceptible para la mayoría de las aplicaciones, representaba millones en oportunidades perdidas. La solución vino al implementar Placement Groups en modo Cluster combinados con interfaces de red EFA, reduciendo la latencia a menos de 0.1 milisegundos y recuperando su ventaja competitiva.
Más allá de las opciones de compra que vimos anteriormente, EC2 ofrece características avanzadas que pueden marcar una diferencia significativa en el rendimiento, disponibilidad y flexibilidad de nuestras aplicaciones.
Placement Groups & Tenancy
Los Placement Groups determinan cómo se distribuyen físicamente nuestras instancias EC2 en la infraestructura subyacente de AWS:
# Ejemplo de creación de un Placement Group tipo Cluster aws ec2 create-placement-group --group-name MyClusterPG --strategy cluster
En cuanto a Tenancy (inquilinato), EC2 ofrece tres opciones:
- Shared Tenancy (Default): Múltiples clientes comparten el mismo hardware físico
- Dedicated Instances: Instancias que se ejecutan en hardware dedicado a un solo cliente
- Dedicated Hosts: Servidor físico completo dedicado a un solo cliente, con visibilidad de sockets y cores
La tenancy dedicada es ideal para:
- Cumplimiento de licencias de software (Oracle, SQL Server)
- Requisitos regulatorios estrictos
- Aislamiento completo por motivos de seguridad
Networking en EC2
Las capacidades de red en EC2 han evolucionado significativamente:
Elastic Network Adapter (ENA)
ENA proporciona redes mejoradas para instancias EC2:
- Ancho de banda de hasta 100 Gbps
- Menor latencia
- Mayor rendimiento de paquetes por segundo (PPS)
- Menor utilización de CPU
La mayoría de los tipos de instancias modernas tienen ENA habilitado por defecto.
Elastic Network Interface (ENI)
Las ENI son componentes de red virtuales que puedes conectar a tus instancias:
- Cada instancia tiene una ENI primaria que no se puede desconectar
- Puedes crear ENIs adicionales y conectarlas a tus instancias
- Las ENIs permanecen incluso si la instancia se termina
- Pueden moverse entre instancias (útil para failover)
Casos de uso de ENIs:
- Crear redes de administración separadas
- Usar dispositivos de seguridad de red en tu VPC
- Crear instancias de doble conexión (multi-homed)
- Escenarios de baja presupuestación y alta disponibilidad
# Ejemplo de creación de una ENI aws ec2 create-network-interface --subnet-id subnet-12345abc --description "Mi ENI secundaria"
Elastic Fabric Adapter (EFA)
EFA es un dispositivo de red para aplicaciones de alto rendimiento:
- Proporciona comunicación entre instancias de baja latencia
- Utiliza "OS-bypass" para comunicación directa con el hardware
- Esencial para aplicaciones HPC y machine learning
- Compatible con la interfaz de paso de mensajes (MPI)
Creación y Uso de AMIs Personalizadas
Las Amazon Machine Images (AMIs) son plantillas que contienen la configuración de software necesaria para lanzar instancias:
Proceso de creación de AMIs personalizadas:
- Lanza una instancia desde una AMI base
- Personaliza la instancia (software, configuraciones, etc.)
- Crea una AMI a partir de la instancia personalizada
- Termina la instancia original si ya no es necesaria
- Lanza nuevas instancias desde tu AMI personalizada
# Ejemplo de creación de AMI desde una instancia existente aws ec2 create-image --instance-id i-1234567890abcdef0 --name "Mi-AMI-Personalizada" --description "AMI para servidores web"
Beneficios de las AMIs personalizadas en Auto Scaling:
- Tiempo de inicio reducido: Las instancias se inician con todo el software preinstalado
- Consistencia: Todas las instancias son idénticas
- Control de versiones: Puedes mantener diferentes versiones de tu entorno
- Recuperación de desastres: Facilita la recreación de entornos completos
EC2 Launch Templates y Launch Configurations
Para automatizar el despliegue de instancias, especialmente con Auto Scaling, AWS ofrece:
Launch Templates
Los Launch Templates son la opción recomendada y más moderna:
- Soportan versionamiento
- Proporcionan más parámetros de configuración
- Permiten combinaciones parciales de parámetros
- Se pueden usar tanto para instancias individuales como para Auto Scaling
- Soportan Spot Instances y opciones de compra mixtas
# Ejemplo de creación de Launch Template aws ec2 create-launch-template --launch-template-name MiTemplate --version-description "Versión 1" --launch-template-data file://config.json
Launch Configurations
Las Launch Configurations son la opción anterior:
- No soportan versionamiento
- No se pueden modificar después de creadas
- Solo se utilizan con Auto Scaling Groups
- AWS recomienda migrar a Launch Templates
Nota importante: Launch Configurations están en proceso de deprecación. AWS recomienda usar Launch Templates para todos los nuevos desarrollos.
EC2 Hibernate y Tipos de Almacenamiento
EC2 Hibernate
La característica de Hibernate permite preservar el estado de una instancia EC2:
- El contenido de la RAM se guarda en el volumen EBS raíz
- La instancia se apaga, pero no se termina
- Al reiniciar, el estado se restaura rápidamente
- Ideal para:
- Aplicaciones con largos procesos de inicialización
- Preservar el estado de la memoria RAM
- Acelerar el arranque de aplicaciones
Limitaciones:
- Tamaño de RAM máximo: 150 GB
- No disponible para todos los tipos de instancias
- No funciona con instancias respaldadas por Instance Store
- Tiempo máximo de hibernación: 60 días
Instance Store vs. EBS-backed Instances
EC2 ofrece dos tipos principales de almacenamiento:
Instance Store (Almacenamiento efímero)
- Almacenamiento físico conectado directamente al servidor host
- Extremadamente rápido (baja latencia, alto IOPS)
- Los datos se pierden cuando la instancia se detiene o termina
- Ideal para:
- Datos temporales
- Cachés
- Procesamiento de datos que pueden regenerarse
- Aplicaciones que gestionan su propia replicación
EBS-backed Instances (Elastic Block Store)
- Volúmenes de almacenamiento persistente
- Los datos sobreviven incluso si la instancia se detiene
- Se pueden desconectar y reconectar a diferentes instancias
- Soportan snapshots para respaldo
- Ideal para:
- Sistemas operativos
- Bases de datos
- Aplicaciones empresariales
- Datos que deben persistir
Implementación de Estrategias Avanzadas
Para maximizar el rendimiento y la disponibilidad, considera estas estrategias combinadas:
- Para aplicaciones HPC:
- Instancias en Placement Group tipo Cluster
- Adaptadores EFA para comunicación de baja latencia
- Instance Store para datos temporales de procesamiento
- Para aplicaciones críticas:
- Instancias en Placement Group tipo Spread
- Múltiples ENIs para redes redundantes
- EBS-backed con snapshots automáticos
- Para entornos de desarrollo ágil:
- AMIs personalizadas con herramientas preinstaladas
- Launch Templates con versionamiento
- Hibernate para preservar entornos de desarrollo
Resumen
Las características avanzadas de EC2 nos permiten ir más allá de la simple provisión de servidores virtuales. Con una combinación adecuada de Placement Groups, opciones de red, AMIs personalizadas, templates de lanzamiento y estrategias de almacenamiento, podemos construir infraestructuras que satisfagan requisitos específicos de rendimiento, disponibilidad y flexibilidad.
La clave está en entender las características disponibles y cómo se alinean con los requisitos específicos de nuestras aplicaciones. Al dominar estas opciones, podemos diseñar arquitecturas en AWS que no solo sean rentables, sino que también proporcionen el rendimiento y la confiabilidad que nuestros sistemas necesitan.