# data[].attributes.body
Es un método de desarrollo de aplicaciones software que funciona como un conjunto de pequeños servicios que se ejecutan de manera independiente y autónoma, proporcionando una funcionalidad de negocio completa. En ella, cada microservicio es un código que puede estar en un lenguaje de programación diferente, y que desempeña una función específica. Los microservicios se comunican entre sí a través de APIs, y cuentan con sistemas de almacenamiento propios, lo que evita la sobrecarga y caída de la aplicación.

# data[].attributes.body
REST es una interfaz para conectar varios sistemas basados en el protocolo HTTP (uno de los protocolos más antiguos) y nos sirve para obtener y generar datos y operaciones, devolviendo esos datos en formatos muy específicos, como XML y JSON.

El formato más usado en la actualidad es el formato JSON, ya que es más ligero y legible en comparación al formato XML. Elegir uno será cuestión de la lógica y necesidades de cada proyecto.

REST se apoya en HTTP, los verbos que utiliza son exactamente los mismos, con ellos se puede hacer GET, POST, PUT y DELETE. De aquí surge una alternativa a SOAP.

# data[].attributes.headline
Ventajas y Desventajas de Microservicios

# data[].attributes.subject
Ventajas y Desventajas de Microservicios

# data[].attributes.body
Modularidad: al tratarse de servicios autónomos, se pueden desarrollar y desplegar de forma independiente. Además un error en un servicio no debería afectar la capacidad de otros servicios para seguir trabajando según lo previsto.

Escalabilidad: como es una aplicación modular, se puede escalar horizontalmente cada parte según sea necesario, aumentando el escalado de los módulos que tengan un procesamiento más intensivo.

Versatilidad: se pueden usar diferentes tecnologías y lenguajes de programación. Lo que permite adaptar cada funcionalidad a la tecnología más adecuada y rentable.Rapidez de actuación: el reducido tamaño de los microservicios permite un desarrollo menos costoso, así como el uso de “contenedores de software” permite que el despliegue de la aplicación se pueda llevar a cabo rápidamente.

Alto consumo de memoria: al tener cada microservicio sus propios recursos y bases de datos, consumen más memoria y CPU.

Inversión de tiempo inicial: al crear la arquitectura, se necesita más tiempo para poder fragmentar los distintos microservicios e implementar la comunicación entre ellos.Complejidad en la gestión: si contamos con un gran número de microservicios, será más complicado controlar la gestión e integración de los mismos.

# data[].attributes.body
Cliente-Servidor​
Los servicios REST deben estar basados en una arquitectura Cliente-Servidor. Un servidor que contiene los recursos y estados de los mismos, y unos clientes que acceden a ellos.​.

Información cacheable.​

Esta información es utilizada por los clientes REST para decidir si hacer una copia local del recurso,

Acceso a recursos por nombre​
Un sistema REST está compuesto por recursos que son accedidos mediante URL, y éstas deben ser intuitivas, predecibles y fáciles de entender y componer.​

Recursos relacionados​

Los recursos accesibles en el servidor suelen estar relacionados unos con otros. Por tanto, la información de estado de un recurso debería permitir acceder a otros recursos.

# data[].attributes.body
Especializados​

Cada servicio está diseñado para un conjunto de capacidades y se enfoca en resolver un problema específico. Los servicios no necesitan compartir ninguno de sus códigos o implementaciones con otros servicios. Cualquier comunicación entre componentes individuales ocurre a través de API bien definidas.​
Autónomos​

Cada servicio componente en una arquitectura de microservicios se puede desarrollar, implementar, operar y escalar sin afectar el funcionamiento de otros servicios. Los servicios no necesitan compartir ninguno de sus códigos o implementaciones con otros servicios. Cualquier comunicación entre componentes individuales ocurre a través de API bien definidas.​

# data[].attributes.body
Los métodos son usados para manipular los diferentes recursos que conforman la API. Los principales métodos soportados por HTTP y por ello usados por una API REST son:​

POST: crear un recurso nuevo.​

PUT: modificar un recurso existente.​

GET: consultar información de un recurso.​

DELETE: eliminar un recurso determinado.​

PATCH: modificar solamente un atributo de un recurso.

# data[].attributes.body
A continuación se nombrarán unos cuantos patrones de diseño:

Event driven: En este patrón un microservicio publica un evento y otro microservicio lo consumirá.Aggregator o Proxy: Un cliente web necesita información que esta en varios microservicios. En este caso se invoca a un microservicio que agrega las llamadas a otros microservicios para obtener la respuesta.

Chained: En este caso se realizan llamadas consecutivas para componer la información.

Asynchronous messaging: Con un patrón de llamadas REST, las peticiones y llamadas son asíncronas (se pueden hacer implementaciones para llegar a asíncronas); por lo que provoca que en muchas ocasiones se utilice un servicio de mensajería asíncrona como Kafka para enviar información.Patrón Saga: El Patrón Saga es una secuencia de transacciones locales donde cada transacción actualiza información dentro de un servicio.