Microservicios APIGW 20250112-1 Flashcards
¿Qué son los microservicios y cuál es su principal característica?
Los microservicios son una arquitectura de desarrollo de software donde una aplicación se divide en servicios pequeños, independientes y desplegables de forma autónoma. Su principal característica es la independencia en el desarrollo, despliegue y escalado de cada servicio.
¿Cuáles son las principales ventajas de utilizar una arquitectura de microservicios?
Las principales ventajas incluyen:
1. Escalabilidad independiente de cada servicio.
2. Desarrollo paralelo por diferentes equipos.
3. Mayor resiliencia al aislar fallos en servicios individuales.
4. Facilidad de adopción de nuevas tecnologías para cada servicio.
5. Mejor mantenimiento y actualización debido a la modularidad.
¿Cuáles son las desventajas de una arquitectura de microservicios?
Las desventajas incluyen:
1. Complejidad en la gestión de múltiples servicios.
2. Sobrecarga en la comunicación entre servicios.
3. Dificultad en la depuración y monitoreo de sistemas distribuidos.
4. Gestión de transacciones distribuidas más compleja.
5. Mayor demanda de infraestructura y automatización.
¿Cómo se comunican los microservicios entre sí?
Los microservicios pueden comunicarse de manera sincrónica (HTTP/REST, gRPC) o asincrónica (mensajería basada en eventos, colas como RabbitMQ o Kafka). La elección depende de los requisitos de latencia, acoplamiento y resiliencia.
¿Qué es un API Gateway y cuál es su función en una arquitectura de microservicios?
Un API Gateway es un servidor que actúa como punto de entrada único para todas las solicitudes de clientes hacia los microservicios. Su función incluye rutear solicitudes, gestionar autenticación y autorización, agregar respuestas, aplicar políticas de seguridad y monitorear el tráfico.
¿Qué es el descubrimiento de servicios (Service Discovery) y por qué es importante en microservicios?
El descubrimiento de servicios es un mecanismo que permite a los microservicios localizar y comunicarse con otros servicios dinámicamente. Es importante porque facilita la escalabilidad, la alta disponibilidad y la resiliencia al manejar servicios que pueden cambiar de ubicación o disponibilidad.
Describe el patrón de diseño Circuit Breaker y su propósito.
El patrón Circuit Breaker es una técnica de resiliencia que previene que un servicio defectuoso cause fallos en cascada. Actúa como un interruptor que abre después de un número determinado de fallos, bloqueando temporalmente las llamadas al servicio defectuoso y permitiendo recuperación gradual.
¿Qué es una base de datos por servicio (Database per Service) y cuáles son sus beneficios?
Una base de datos por servicio es una práctica donde cada microservicio tiene su propia base de datos independiente. Los beneficios incluyen desacoplamiento de servicios, mejor autonomía en la gestión de datos y escala individual según las necesidades específicas de cada servicio.
¿Qué es Docker y cómo facilita el despliegue de microservicios?
Docker es una plataforma de contenedores que permite empaquetar aplicaciones y sus dependencias en contenedores ligeros y portátiles. Facilita el despliegue de microservicios al garantizar consistencia entre entornos, aislamiento de servicios y eficiencia en el uso de recursos.
¿Qué es Kubernetes y cuál es su papel en la gestión de microservicios?
Kubernetes es una plataforma de orquestación de contenedores que automatiza el despliegue, escalado y gestión de aplicaciones en contenedores. Su papel en la gestión de microservicios incluye gestión de contenedores, balanceo de carga, autorreparación y escala automática de los servicios.
¿Cómo se asegura la seguridad en una arquitectura de microservicios?
La seguridad en microservicios se asegura mediante:
1. Autenticación y autorización centralizadas (OAuth2, JWT).
2. API Gateway para aplicar políticas de seguridad.
3. Cifrado de datos en tránsito y en reposo.
4. Seguridad de red mediante firewalls y redes segmentadas.
5. Monitoreo y auditoría continua de accesos y actividades.
¿Qué es el versionado de APIs y por qué es importante?
El versionado de APIs es la práctica de gestionar diferentes versiones de una API para permitir cambios sin afectar a los clientes existentes. Es importante porque facilita la evolución de la API, mantiene la compatibilidad y minimiza interrupciones para los usuarios.
Describe el patrón de diseño Saga y su uso en microservicios.
El patrón Saga es una estrategia para gestionar transacciones distribuidas en microservicios. Consiste en una serie de transacciones locales coordinadas por eventos o comandos, con pasos compensatorios para revertir acciones en caso de fallos, asegurando la consistencia eventual.
¿Qué es un contrato de API y cuál es su propósito?
Un contrato de API es un acuerdo formal que define cómo los clientes pueden interactuar con una API, incluyendo los endpoints, métodos HTTP, parámetros, formatos de respuesta y códigos de estado. Su propósito es asegurar que tanto los desarrolladores de la API como los consumidores tengan una comprensión común de cómo usarla.
¿Qué es un Service Mesh y cómo beneficia a una arquitectura de microservicios?
Un Service Mesh es una infraestructura dedicada que gestiona la comunicación entre microservicios. Beneficia a la arquitectura proporcionando balanceo de carga, circuit breaking, seguridad y observabilidad de manera transparente para los servicios, sin necesidad de modificar el código de la aplicación.
¿Qué es la resiliencia en el contexto de microservicios y cómo se puede implementar?
La resiliencia en microservicios es la capacidad de un sistema para recuperarse rápidamente de fallos y mantener el funcionamiento. Se puede implementar mediante:
1. Patrones de diseño como Circuit Breaker y Retry.
2. Despliegues redundantes y balanceo de carga.
3. Monitoreo y alertas continuas.
4. Desacoplamiento de servicios.
¿Qué es el escalado horizontal y cómo se aplica en microservicios?
El escalado horizontal es la técnica de añadir más instancias de un servicio para manejar un aumento en la carga. En microservicios, se aplica desplegando múltiples instancias de cada microservicio y utilizando un balanceador de carga para distribuir las solicitudes entre ellas, mejorando la capacidad de respuesta y la resiliencia.
¿Cómo se gestiona el estado en una arquitectura de microservicios?
En una arquitectura de microservicios, el estado se gestiona de manera desacoplada:
1. Estado en el cliente: Mantener el estado en el cliente cuando sea posible.
2. Almacenamiento externo: Utilizar bases de datos o caches externas para almacenar el estado.
3. Microservicios stateful: Diseñar algunos microservicios para manejar el estado, aunque esto aumenta la complejidad.