En mi experiencia, cada tipo de sistema presenta sus distintos retos:
- El sistema monolitico permite tener una alta cohesion entre todas las partes, los flujos de nuestro negocio son cercanos entre ellos y usan una misma base de datos, el desarrollo con pocas personas puede ser agil, pero cuando un proceso se vuelve pesado todo el sistema completo falla. Porque es un solo sistema.
Ejemplo: Tenemos una app monolitica como youtube. Pero, cada vez que alguien está subiendo un video muy pesado (que tienes que convertir a distintos formatos) las personas demoran mas en iniciar sesión.
Un solo proceso está afectando a toda la aplicación. Es por esto, que muchas empresas se mueven a sistemas distribuidos, a microservicios.
Ahora, esa aplicación de youtube, ya no es un solo sistema, ahora lo podemos dividir en distintas servicios, los usuarios tendrán su propia base de datos y su propio sistema, la carga de videos y conversión tendrá otra base de datos y así con todas las pequeñas partes. TODO se divide.
El reto llega cuando, los sistemas tienen que comunicarse entre ellos de la forma request/response y uno de esos microservicios tiene un bajo performance, ahora, la cohesion de nuestra aplicación baja, tenemos sistemas separados pero aún podrían causar conflictos cuando uno de ellos falla.
Cada una tiene retos y soluciones interesantes 🤘🏼
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?