Introducci贸n a los Microservicios
Normalmente, la estructura de una aplicaci贸n se basa en el esquema de la Arquitectura Monol铆tica. En esta arquitectura, todos los elementos implementado se incluyen en una sola aplicaci贸n. La arquitectura monol铆tica tiene algunas desventajas; por ejemplo, se vuelve cada vez m谩s complicado resolver problemas y a帽adir nuevas funcionalidades a la aplicaci贸n a medida que 茅sta crece. La arquitectura de microservicios se propone como una opci贸n para resolver estos problemas.

Imagen 1: Comparativa de la arquitectura de microservicios y la monol铆tica. Fuente: Martin Fowler
驴Qu茅 son los microservicios?
Los microservicios, tambi茅n conocido como arquitectura de microservicios, estructura la aplicaci贸n como una colecci贸n de servicios. La idea es dividir la aplicaci贸n en un conjunto de peque帽os e interconectados servicios en lugar de construir una sola aplicaci贸n monol铆tica. Con esto, cada servicio constituye una peque帽a aplicaci贸n.
Idealmente, un microservicio o servicio tiene que estar especializado en resolver los problemas de un solo dominio utilizando la mejor tecnolog铆a disponible. Adem谩s, cada servicio debe tener una API para facilitar la comunicaci贸n e interacci贸n con otros microservicios. La arquitectura de microservicios propone un nuevo tipo de relaci贸n entre la aplicaci贸n y la base de datos. En lugar de compartir una sola estructura de base de datos con otros servicios, cada servicio tiene su propia estructura. Tener una sola base de datos por servicio es esencial si queremos beneficiarnos de las posibilidades que nos brindan los microservicios, ya que asegura tener loose coupling.
Normalmente, la comunicaci贸n con el cliente se realiza mediante un intermediario conocido como API Gateway. La API Gateway es responsable de tareas como el balanceo de carga, el almacenamiento en cach茅, control de acceso, API metering y control.

Imagen 2: Ejemplo de aplicaci贸n desarrollada siguiendo la arquitectura de microservicios. Fuente: Microservices.io
Compa帽铆as que usan la arquitectura de microservicios: Netflix, Amazon, Ebay, Uber, Sound Cloud, etc.
Ventajas
- Si un microservicio falla, no falla el sistema completo
- Facilita la escalabilidad de la aplicaci贸n.
- Ofrece a los desarrolladores la libertad de desarrollar e implementar servicios de forma independiente.
- Se pueden usar diferentes lenguajes de programaci贸n en diferentes m贸dulos.
- F谩cil de mantener, modificar y reutilizar.
- Se puede utilizar la tecnolog铆a m谩s recomendada para cada problema.
- F谩cil de escalar y administrar equipos de desarrollo.
Desventajas
- El testeo puede verse dificultado debido a la implementaci贸n distribuida.
- Si el dise帽o no se realiza correctamente, esta arquitectura podr铆a generar problemas de latencia, equilibrio de carga, etc.
- Alto consumo de memoria
- Complejidad en la integraci贸n y gesti贸n de una gran cantidad de servicios.
- Los miembros de un grupo de desarrollo deben tener una buena formaci贸n previa.
Recursos adicionales
-
Microservices (ENG)
-
Taller: Introducci贸n a los Microservicios - Tutorial en Python - YouTube Alberto Casero - Keep Coding
-
Wikipedia: Microservices (ENG)
-
Workshop Module 1: Introduction to Microservices dotNet (ENG)