Ticker

6/recent/ticker-posts

Cómo diseñar una arquitectura en capas en AWS

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:

  1. 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.
  2. 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.
  3. 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.
  4. 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:

  1. Virtual Private Cloud (VPC).
  2. Elastic Load Balancer (ELB).
  3. Internet Gateway.
  4. NAT Gateway.
  5. Security Groups.
  6. Elastic Compute Cloud (EC2).
  7. Auto Scaling Group.
  8. 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): 

SubredCIDRZona dedisponibilidad
public-subnet-za10.0.1.0/24us-east-1a
public-subnet-zb10.0.2.0/24us-east-1b
private-subnet-za10.0.3.0/24us-east-1a
private-subnet-zb10.0.4.0/24us-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 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:

DestinoObjetivoDetalle
10.0.0.0/16LocalConexión local AWS
10.0.1.0/24igw-website-hpConexión pública con salida a Intenet
10.0.2.0/24igw-website-hpConexión pública con salida a Intenet
10.0.3.0/24igw-website-hp, rtb-private-website-hpConexión privada con salida a Intenet
10.0.4.0/24rtb-public-website-hpConexió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.


Referencia:

Publicar un comentario

0 Comentarios