Microservicios
Es un tipo de arquitectura de Software que sirve para crear sistemas complejo como componentes pequeños y autnomos que colaboran entre si.
# Caracteristicas
Algunas de sus caracteristicas principales son:
- Dividir toda la solucion en multiples modulos llamados microservicios en el que cada uno resuelve una funcionalidad.
- Son independientes los unos de los otros tanto en formas de despliegue, ubicaciones fisicas y logicas.
- Los microservicios se comunican regularmente mediante REST o sistemas de mensajeria como RabbitMQ.
- Se logra muy bajo acoplamiento afernte y eferente mediante un registro y autodescubrimiento.
- Se permite autoescalado y alta disponibilidad
- Se da resiliencia y tolerancia a fallos de microservicios
- Aumenta la complejidad de despliegue{
- Desarrollo puede ser agnostico al lenguaje
- Permite reutilizarse en distintas soluciones para problemas.
Anatomia tipica de un Microservicio

La capa Controller solo debe encargarse de enviar los datos que recibe del mundo exterior a la capa Service.
La capa Service debe contener toda la logica de negocio.
La capa DAO unicamente debe encargarse de comunicarse con la persistencia de la aplicacion