# data[].attributes.body
La Arquitectura de Microservicios es un estilo arquitectónico que estructura una aplicación como un conjunto de servicios pequeños y autónomos, que se comunican entre sí a través de APIs o mensajes.

Cada microservicio está diseñado para realizar una función específica dentro de la aplicación global, siendo completamente independiente en su ciclo de vida, despliegue y mantenimiento.

Cada microservicio puede estar desarrollado en distintos lenguajes de programación y utilizar diferentes bases de datos, lo que ofrece flexibilidad para cada equipo o funcionalidad.

# data[].attributes.body
1. Mayor complejidad en el rendimiento:
Las llamadas de red entre servicios son más lentas que las llamadas internas de métodos, lo que puede impactar negativamente en el rendimiento del sistema.

2. Sobrecarga de seguridad:
La verificación de seguridad en cada punto de conexión agrega tiempo de procesamiento adicional.

3. Diseño complejo:
Determinar la granularidad adecuada de los servicios es un desafío crucial. Una granularidad incorrecta puede llevar a problemas de eficiencia y mantenimiento.

4. Incompatibilidad con transacciones entre servicios:
Es complicado realizar transacciones que involucren múltiples servicios, lo que requiere un diseño cuidadoso para evitar dependencia entre ellos.

5. Mayor esfuerzo de gestión:
La administración de múltiples servicios distribuidos exige herramientas más avanzadas y un enfoque más estructurado en la operación del sistema.

# data[].attributes.body
Netflix: Usa microservicios para manejar distintas funcionalidades como streaming, recomendaciones, gestión de usuarios, entre otras.

Uber: Su plataforma está construida en torno a microservicios, permitiendo manejar desde las peticiones de los usuarios hasta la administración de conductores y tarifas.

# data[].attributes.body
Se espera que todos los servicios incluyan todas las partes necesarias para operar independientemente, incluyendo las bases de datos y otros componentes

# data[].attributes.attachment_caption
Simplemente describa su aplicación y los recursos necesarios, y Amazon Elastic Container Service (Amazon ECS) la lanzará, supervisará y escalará mediante opciones de computación flexibles con integraciones automáticas con otros servicios de AWS compatibles que su aplicación necesite. Ejecute operaciones del sistema, como la creación de reglas personalizadas de escalado y capacidad, y observe y consulte los datos de los registros de aplicaciones y la telemetría.

# data[].attributes.headline
Amazon Elastic Container Service - Coursera

# data[].attributes.subject
Amazon Elastic Container Service - Coursera

# data[].attributes.body
Amazon Elastic Container Service (ECS) es un servicio de orquestación de contenedores completamente administrado que lo ayuda a implementar, administrar y escalar aplicaciones con contenedores. Se integra profundamente con el entorno de AWS para proporcionar una solución fácil de usar para ejecutar cargas de trabajo de contenedores en la nube y en las instalaciones con funciones de seguridad avanzadas mediante Amazon ECS Anywhere.

# data[].attributes.body
RICHARDS, M., Ford N., Fundamentals of Software Architecture, An Engineering Approach, O´Reilly 2020.

(S/f). Amazon. Recuperado el 16 de octubre de 2024, de https://aws.amazon.com/es/ecs/#

# data[].attributes.body
Cuando se construyen aplicaciones grandes y complejas, donde los equipos necesitan desarrollar y desplegar componentes de manera independiente.

Si la aplicación necesita una escalabilidad independiente para distintos módulos o partes del sistema.

Cuando se busca flexibilidad para usar múltiples tecnologías dentro de una misma aplicación.

No se recomienda utilizarla cuando son:

Aplicaciones pequeñas o monolíticas con pocos módulos.

Proyectos con recursos limitados donde la complejidad de la infraestructura es difícil de manejar.

Es recomendable no hacer transacciones en microservicios

# data[].attributes.body
1. Independencia Operacional:
Cada servicio se ejecuta en su propio proceso, lo que permite una mayor independencia en su gestión y desarrollo.

2. Uso eficiente de recursos:
Permite reutilizar recursos operacionales como ancho de banda, memoria, y espacio en disco, especialmente en entornos con múltiples aplicaciones.

3. Escalabilidad:
La separación de servicios facilita el crecimiento de cada componente de manera independiente, tanto a nivel de dominio como a nivel operativo.

4. Aislamiento:
La separación de servicios en procesos distintos evita problemas relacionados con la falta de aislamiento en aplicaciones compartidas, reduciendo el riesgo de interferencias entre ellas.