En el articulo anterior, hablamos sobre microservicios de forma general, aunque como bien sabéis, muchas empresas antes de evolucionar hacia una arquitectura basada en microservicios deben afrontar muchos retos complejos que no encontramos en las aplicaciones monolíticas.
A día de hoy, todos conocemos la diferencia entre un sistema monolito y microservicios.
Comparto la definición que ofrece Microsoft sobre microservicios: overview-microservices y un interesante post de Mark Russinovich: microservices-an-application-revolution-powered-by-the-cloud
Cuestiones clave sobre microservicios
Todo lo anterior es literatura muy bonita, pero como indicamos al principio hay muchos retos a resolver, el objetivo de este artículo es precisamente plantear una serie de cuestiones fundamentales para confirmar si realmente vamos a utilizar microservicios y como afrontarlos respondiendo todas estas preguntas.
Arquitectura de Referencia para Microservicios
- ¿Qué Modelo de Referencia vamos a utilizar?
- ¿Qué Modelo de Almacenamiento vamos a utilizar?
- ¿Qué Modelo de Implementación vamos a utilizar?
- ¿Qué Modelo de Desarrollo vamos a utilizar?
- ¿Qué Modelo de Despliegue vamos a utilizar?
Retos a resolver
- ¿Cómo serán configurados en cada entorno?
- ¿Cómo serán desplegados en cada entorno?
- ¿Cómo serán registrados en el sistema?
- ¿Cómo serán descubiertos en el sistema?
- ¿Cómo serán documentados en el sistema?
- ¿Cómo serán versionados en el sistema?
- ¿Cómo serán securizados?
- ¿Cómo serán testeados?
- ¿Cómo serán monitorizados?
- ¿Cómo serán logging?
- ¿Cómo serán depurados y trazabilidad para encontrar errores?
- ¿Cómo escalarán al aumentar la carga?
- ¿Cómo manejarán fallos y resilencias?
- ¿Cómo operarán entre ellos y resto del sistema?
- ¿Usaremos contenedores para los microservicios?
- ¿Usaremos orquestadores para los microservicios?
Todas estás cuestiones deben tener respuestas por el equipo y quedar documentadas en la arquitectura de referencia antes de empezar, si no es así, el proyecto acabará siendo un FRANKENSTEIN y estará destinado al fracaso.
¿Que problemas hay con microservicios?
Visto lo anterior, actualizo este post en 2019 y dejo un link muy popular que recomiendo leer sobre microservicios para tener una visión más detallada de los problemas que encontrareis con microservicios: https://www.dwmkerr.com/the-death-of-microservice-madness-in-2018/
Netflix are great at devops.
Netflix do microservices.
Therefore: If I do microservices, I am great at devops.
Por mi experiencia y punto de vista personal, si no existe una buena cultura DevOps en la organización donde vayamos a implantar microservicios, estos no serán efectivos.
Espero que sea de utilidad.