# data[].attributes.body
La meta de los microservicios es tener un alto grado de desacoplamiento.
Fueron inspirados fuertemente por la idea de bounded context del diseño de procesos domain-driven design (DDD).

# data[].attributes.body
Las arquitecturas SOA se orientan a la arquitectura de toda la empresa. Los microservicios, en cambio, se limitan a una aplicación.

# data[].attributes.body
SOA utiliza buses de servicios empresariales, pero los microservicios utilizan API sin estado, haciéndolos más flexibles, ya que son independientes del lenguaje.

# data[].attributes.body
Es un estilo arquitectónico que permite reutilizar sus elementos gracias a las interfaces de servicios. Define la utilización de servicios para dar soporte a los requisitos de negocio.

# data[].attributes.body
Los servicios trabajan de forma independiente de las funcionalidades a sus consumidores. Cada servicio incorpora el código necesario para ejecutar una  función de negocios completa.

# data[].attributes.body
El consumidor solicita información y envía datos de entrada al servicio, el BUS de servicio recibe la información, la transforma en un formato válido y la envía, el servicio procesa los datos, realiza la tarea y devuelve una respuesta.
Los usuarios con poco o nulo entendimiento de la lógica de código subyacente pueden utilizar el servicio a través de su interfaz.

# data[].attributes.body
Los desarrolladores reutilizan servicios  para ahorrar tiempo y dinero.

# data[].attributes.body
Es más fácil crear, actualizar y corregir errores en servicios pequeños, la modificación de un servicio en SOA no afecta a la funcionalidad general del proceso empresarial.

# data[].attributes.body
Los desarrolladores usan SOA para reutilizar servicios en diferentes sistemas o combinar varios servicios independientes para realizar tareas complejas.

# data[].attributes.body
La escalabilidad de sistemas se ve seriamente afectada cuando los servicios comparten varios recursos y necesitan coordinarse para realizar su respectiva funcionalidad.
La escalabilidad depende de cómo se implementen y diseñen los servicios.

# data[].attributes.body
Tiene un estilo de arquitectura distribuido, en donde cada servicio corre sus propios procesos.
La capa API ofrece una buena ubicación para realizar tareas útiles, al ocupar un proxy o vincularse con las instalaciones operativas.

# data[].attributes.body
Las llamadas de red que se tienen que hacer entre servicios toman mucho más tiempo en realizarse y el tener que hacer una verificación de seguridad para cada endpoint, añade un tiempo de procesamiento extra.

# data[].attributes.body
Al estar basado en el concepto de bounded context, cada servicio modela un dominio o un flujo de trabajo. Por lo tanto cada servicio contiene lo necesario para operar dentro de la aplicación de manera independiente.
De esta manera, toma el concepto de una arquitectura particionada por dominio al extremo.

# data[].attributes.body
Permite la ejecución de servicios en cualquier plataforma o lenguaje de programación, lo que facilita la integración de sistemas heterogéneos.

# data[].attributes.body
Permite a los clientes interactuar con los servicios como cajas negras, sin necesidad de conocer los detalles de implementación, simplificando el uso de servicios y reduciendo la complejidad para los usuarios finales.

# data[].attributes.body
Es difícil encontrar una buena granularidad para cada servicio. Tres guías que se pueden seguir es: Propósito, Transacciones y Coreografía.
Además, cada servicio no debe compartir esquemas y base de datos, lo cual permite que se ocupe una herramienta apropiada para cada servicio

# data[].attributes.body
La desventaja de la SOA es el aumento de las vulnerabilidades (la SOA es vulnerable tanto a los ataques basados en HTTP como en XML), la exposición a través de la red puede requerir especial atención contra amenazas.

# data[].attributes.body
Frontend monolítico: Se ocupa una interfaz única de usuario llama a través de la API para satisfacer las peticiones de los usuarios
Microfrontend: Utiliza componentes para que cada servicio emita una interfaz de usuario.

# data[].attributes.body
Implica conocer los procesos del negocio, clasificarlos, extraer funciones comunes, estandarizarlas y formar capas de servicios. Esto puede aumentar la complejidad en la implementación.

# data[].attributes.body
A medida que un servicio de negocio se incorpora en la definición de procesos, su nivel de criticidad aumenta. Actualizaciones, como cambios en el código o interfaces, requieren evaluación previa y cuidado en la implementación

# data[].attributes.body
Para la forma sincrónica se ocupa una Interoperabilidad heterogénea basada en protocolos
Para la forma asíncrona, hay dos tipos:

Coreografía: No hay un mediador central, cada servicio llama a otro servicio si es que lo necesita.

Orquestación: Como los microservicios no tienen un mediador global, pueden crear un mediador local, el cual tiene la responsabilidad única de coordinar cierta información para ciertos servicios.

# data[].attributes.body
Es más fácil hacer un despliegue automatizado y pruebas

# data[].attributes.headline
Escalabilidad, la elasticidad y la evolución

# data[].attributes.subject
Escalabilidad, la elasticidad y la evolución

# data[].attributes.body
Debido a que la arquitectura favorece un alto desacoplamiento a nivel incremental, respalda la práctica empresarial moderna de cambio evolutivo.

# data[].attributes.body
Al ser un sistema distribuido hereda las desventajas de estos y puede llegar a ser complicado realizar pruebas globales, es decir de aplicación completa.

# data[].attributes.body
Cada microservicio puede ser su propio mundo y desarrollarse en la tecnología o herramienta que sea, sin necesidad de que las otras partes también tenga que ser de la misma

# data[].attributes.body
SOA es ideal para proyectos grandes donde se debe asegurar que múltiples servicios funcionen juntos. También se utiliza para sistemas heredados (antiguos o desactualizados).
Por otro lado, la arquitectura de Microservicios se suele utilizar cuando se desea mayor agilidad en el desarrollo y desplieguen como entornos de desarrollo ágil.