En este tutorial, se diseña una arquitectura en capas haciendo uso de los servicios y componentes de Amazon Web Services (AWS). El tutorial muestra el diseño en 4 etapas teniendo en consideración la creación y configurar de los servicio Virtual Private Cloud (VPC), Servicio Elastic Load Balancer (ELB), Elastic Compute Cloud (EC2) y Amazon RDS (MySQL).
Tras completar el tutorial, habrá un diseño final que integra la arquitectura en capas sobre una subred pública y una privada en cada zona de disponibilidad de la VPC. En una zona de disponibilidad, la instancias de EC2 estarán en la subred pública y la instancia de base de datos estará en la subred privada.
Qué es una arquitectura en capas en AWS:
Una arquitectura en capas en AWS (Amazon Web Services) basicamente es la estrategia de diseño que se organiza y estructura los componentes de una aplicación en diferentes niveles o capas, cada capa cumple responsabilidades específicas permitiendo mejorar la modularidad, escalabilidad y mantenibilidad de la aplicación.
En una arquitectura en capas normalmente los conforman las siguientes capas:
- Capa de presentación: Esta es la capa más alta y se encarga de la interacción del usuario. En AWS, podrías usar servicios como Amazon CloudFront y AWS Amplify para entregar contenido estático y dinámico a los usuarios finales.
- Capa de lógica de negocio: Aquí es donde se implementan las reglas y la lógica de la aplicación. AWS Lambda es una opción popular para ejecutar código sin aprovisionar o administrar servidores. También puedes usar Amazon API Gateway para crear, publicar, mantener, monitorear y proteger APIs.
- Capa de acceso a datos: Esta capa maneja las operaciones de lectura y escritura de datos. En AWS, podrías usar Amazon RDS (Relational Database Service) para bases de datos relacionales o Amazon DynamoDB para bases de datos NoSQL.
- Capa de datos: Esta capa es responsable de almacenar y recuperar los datos persistentes. Amazon S3 (Simple Storage Service) es una solución común para el almacenamiento de objetos.
Una arquitectura en capas permite una separación clara de responsabilidades y facilita el mantenimiento y la evolución de la aplicación. Cada capa puede escalarse de manera independiente según las necesidades, y los cambios en una capa no afectan directamente a las demás.
Servicios y componentes AWS:
- Virtual Private Cloud (VPC).
- Elastic Load Balancer (ELB).
- Internet Gateway.
- NAT Gateway.
- Security Groups.
- Elastic Compute Cloud (EC2).
- Auto Scaling Group.
- Amazon RDS (MySQL)
Creación y configuración Servicios AWS
1. Crear y configurar el Servicio Virtual Private Cloud (VPC)
Crea la Virtual Private Cloud (VPC) o también conocido como Red Virtual Privada; asimismo, crear las Subredes, Internet Gateway, Route Tables y NAT Gateway para aprovisionar la conexion de la arquitectura en capas.
1.1. Crear la Virtual Private Cloud (VPC) asignando el nombre de vpc-website-hp (principal) con un bloque CIDR de 10.0.0.0/16.
1.2. Crear el Internet Gateway de nombre de igw-website-hp, seguidamente asociar a la VPC principal vpc-website-hp.
El igw-website-hp permite la comunicación entre las instancias EC2 de la VPC principal y la comunicación con Internet.
1.3. Crear las sub-nets (subredes) públicas y privadas en la misma Availability Zone (zona de disponibilidad):
Subred | CIDR | Zona dedisponibilidad |
---|---|---|
public-subnet-za | 10.0.1.0/24 | us-east-1a |
public-subnet-zb | 10.0.2.0/24 | us-east-1b |
private-subnet-za | 10.0.3.0/24 | us-east-1a |
private-subnet-zb | 10.0.4.0/24 | us-east-1b |
A las subnets privadas sólo se podrán acceder a través de una NAT Gateway.
1.4. Crear los route tables (tablas de ruteo) privada de nombre rtb-private-website-hp y pública de nombre rtb-public-website-hp.
Seguidamente asocia las subredes privadas (private-subnet-za y private-subnet-zb) a la tabla de ruteo privada rtb-private-website-hp, asimismo, asocia las subredes pública (public-subnet-za y public-subnet-zb) a la tabla de ruteo pública rtb-public-website-hp.
Finalmente, enrutar el tráfico a Internet a través de la puerta de enlace de Internet Gateway de nombre de igw-website-hp para nuestra tabla de ruteo pública rtb-public-website-hp.
1.5. Crear el NAT Gateway de tipo pública con la finalidad de que las instancias Elastic Compute Cloud (EC2) de la subred privada accedan a Internet.
Sólo la subred privada de nombre private-subnet-za accedará a Internet.
Seguidamente, editar la tabla de ruteo privada rtb-private-website-hp para utilizar (asignar) la puerta de enlace NAT para acceder a Internet.
En el siguiente diagrama preliminar se visualiza los servicios y componentes que aprovisiona la Virtual Private Cloud (VPC).
2. Crear y configurar el Servicio Elastic Load Balancer (ELB)
Para controlar el tráfico de la arquitectura en capas se crearán 2 Elastic Load Balancer (balaceadores de carga).
2.1. Crear el primer balaceadores de carga de tipo aplicación de nombre abl-internet-website-hp para el Front-End que se conectará con la puerta de enlace (Internet Gateway igw-website-hp).
Seleccionar Internet-facing para la comunicación con Internet, seguidamente en Network seleccionar las sud redes publicas public-subnet-za y public-subnet-zb.
2.2. Crear el segundo balaceadores de carga INTERNO de nombre abl-internal-website-hp para el Front-Back de carga interna.
Seleccionar Internal para la comunicación con Interno, seguidamente en Network seleccionar las sud redes privadas private-subnet-za y private-subnet-zb.
2.3. Configurar los grupos de seguridad teniendo en cuenta los puertos que necesitará el sitio web.
Crear el grupo de nombre sg-internet-website-hp y habilitamos los puertos HTTP 80 y HTTPS 443 para la comunicación desde Internet.
Crear el grupo de nombre sg-internal-website-hp y habilitamos el puerto 3000 para la comunicación interna.
Definir el target group (grupo objetivo) de nombre tg-website.hp para establecer el tipo de instancias con soporte a balanceador de carga.
En el siguiente diagrama se visualiza los servicios y componentes que se aprovisiona a la Virtual Private Cloud (VPC) y al Elastic Load Balancer (ELB) con las configuraciones necesarias.
3. Crear y configurar el Elastic Compute Cloud (EC2)
Crea las intancias para el Front-End y Back-End del sitio web; asimismo, asignar las instancias al Auto Scaling Group según corresponda.
3.1. Crear o lanzar la primera instancia de Elastic Compute Cloud (EC2). Para esto se necesita crear la plantilla de lanzamiento de nombre ec2-internet-website-hp.
3.2. Crear o lanzar la segunda instancia de Elastic Compute Cloud (EC2). Para esto se necesita crear la plantilla de lanzamiento de nombre ec2-internal-website-hp.
3.3. Crear el Auto Scaling Group y configurar las políticas de escalado cuándo:
La CPU de la instancia ec2-internet-website-hp sea mayor o igual al 80% se debe agrega una nueva instancia, reducir la escala cuando la CPU de la instancia ec2-internet-website-hp sea menor o igual al 50%.
La CPU de la instancia ec2-internal-website-hp sea mayor o igual al 80% se debe agrega una nueva instancia, reducir la escala cuando la CPU de la instancia ec2-internal-website-hp sea menor o igual al 50%.
4. Crear y configurar Amazon RDS (MySQL)
Crea la base de datos de tipo MySQL y el bastion host (opcional) para acceder mediante SSH a las instancias EC2 de la subred privada.
4.1. Crear la base de datos del tipo de motor MySQL y asigna a la subred privada de nombre private-subnet-za, y selecciona el grupo sg-internet-website-hp.
4.2. Crear el bastion host para acceder mediante SSH a las instancias EC2 de la subred privada.
Enrutamiento:
Destino Objetivo Detalle 10.0.0.0/16 Local Conexión local AWS 10.0.1.0/24 igw-website-hp Conexión pública con salida a Intenet 10.0.2.0/24 igw-website-hp Conexión pública con salida a Intenet 10.0.3.0/24 igw-website-hp, rtb-private-website-hp Conexión privada con salida a Intenet 10.0.4.0/24 rtb-public-website-hp Conexión privada sin salida a Intenet
Destino | Objetivo | Detalle |
---|---|---|
10.0.0.0/16 | Local | Conexión local AWS |
10.0.1.0/24 | igw-website-hp | Conexión pública con salida a Intenet |
10.0.2.0/24 | igw-website-hp | Conexión pública con salida a Intenet |
10.0.3.0/24 | igw-website-hp, rtb-private-website-hp | Conexión privada con salida a Intenet |
10.0.4.0/24 | rtb-public-website-hp | Conexión privada sin salida a Intenet |
Terminología:
- CIDR: Classless Inter-Domain Routing o también conocido como enrutamiento entre dominios sin clases.
- RDS: Relational Database Service o también conocido como bases de datos relacionales.
0 Comentarios