Diagramación de Arquitectura Agnóstica para Aplicaciones
Clase 23 de 27 • Curso de Introducción a la Nube
Resumen
¿Cómo construir una arquitectura agnóstica?
Al diseñar arquitecturas en el ámbito tecnológico, es crucial combinar múltiples conceptos y herramientas para crear un entorno escalable y eficiente. Aunque existen diversas herramientas para diagramar estas estructuras, en este análisis emplearemos una arquitectura agnóstica, considero clave adoptar una perspectiva que facilite la comprensión de estos sistemas independientemente de la tecnología específica empleada. Aquí te guiaré en la creación de una arquitectura agnóstica para una aplicación como Platzi Wallet.
¿Cuál es la estructura básica de la arquitectura?
Usuarios y capa de DNS
El punto de partida de toda arquitectura es el usuario. Para nuestro sistema, Platzi Wallet, los usuarios deben interactuar con diferentes capas:
- Capa de DNS: El primer nivel es un servicio DNS que aloja nuestro dominio, por ejemplo,
platziwallet.com
. A través de él, se gestionan el enrutamiento y las redirecciones.
Content Delivery Network (CDN) y protección
En este apartado se establecen mecanismos para optimizar la entrega y proteger el sistema:
- CDN (Content Delivery Network): Se encarga de manejar el tráfico entrante y tiene funcionalidades como redirecciones basadas en diferentes criterios y asegurar conexiones HTTPS.
- Web Application Firewall (WAF): Proporciona una capa de protección contra ataques, configurando reglas para bloquear solicitudes sospechosas.
Balanceadores, API gateway y autenticación
La gestión del tráfico y la seguridad son fundamentales para la eficiencia del sistema:
- Balanceador de carga/API gateway: Estos componentes distribuyen el tráfico eficientemente y sirven como puerta de entrada al sistema.
- Autenticación y autorización: Verifica la identidad de los usuarios y determina sus permisos dentro del sistema.
Backend y zona privada
La zona privada es donde se aloja el backend, el corazón de cualquier arquitectura:
- Backend: Puede consistir en servidores, funciones o contenedores. Es vital que esta zona no esté expuesta directamente a internet para mayor seguridad.
Base de datos y almacenamiento
Toda aplicación requiere un mecanismo robusto para gestionar datos y su almacenamiento:
- Base de datos maestra y standby: La base de datos principal maneja las operaciones diarias, mientras una secundaria está lista para asumir en caso de falla.
- Almacenamiento: Se deben considerar objetos, bloques y archivos para un manejo efectivo de los datos.
¿Cuáles son los servicios transversales a considerar?
Observabilidad y competencia
Las arquitecturas modernas requieren un monitoreo constante para garantizar su funcionamiento óptimo:
- Observabilidad: Incorpora monitoreo, detección de anomalías y evaluación de la experiencia del usuario.
- Compliance: Regula normas de seguridad, como el cifrado de datos en reposo y durante la transferencia.
Cifrado y gestión de claves
Implementar técnicas de cifrado avanzadas es esencial para asegurar la integridad de los datos:
- Key Management System (KMS): Administra y gestiona las claves utilizadas para cifrar la información de manera segura.
¿Cómo asegurar la disponibilidad y la conectividad?
La alta disponibilidad y la conectividad eficiente son vitales, sobre todo si trabajamos con recursos on-premise:
- Disponibilidad en múltiples zonas: Implementar la arquitectura en al menos dos zonas garantiza robustez y continuidad del servicio.
- Conectividad híbrida: Podemos optar por una VPN para conexiones básicas o enlaces dedicados para mayor rendimiento.
¿Cuál es el reto de adaptarlo a tu aplicación?
Ahora es tu turno de aplicar estos conceptos a un proyecto personal. Refleja la arquitectura planteada en el contexto de tu aplicación. Considera adaptar cada capa a tus necesidades. Por ejemplo:
- Motor de base de datos: Define si tu aplicación requiere MySQL, PostgreSQL u otro.
- CDN y gestión de dominios: Elige servicios específicos según tus requerimientos.
A medida que avances, recuerda asignar nombres concretos y evaluar cómo estas decisiones impactan en tu arquitectura. ¡No dudes en seguir aprendiendo y experimentando para perfeccionar tus habilidades!