Arquitectura de Software: Self-Contained System

Os traigo un artículo nuevo de mi blog: http://adrianalonso.es/arquitectura-del-software/self-contained-systems/

A día de hoy en el desarrollo del software todo está tendiendo a desacoplar los sistemas en microservicios. Desde que los equipos de las grandes tecnológicas como Netflix han promovido esta tendencia, todo el mundo está tendiendo a implementar esta solución en sus sistemas, pero… ¿Es siempre viable realizar una arquitectura orientada a microservicios? ¿Tenemos el equipo adecuado para manejar la gestión de esta arquitectura? Soy firme defensor de esta arquitectura, pero no nos volvamos locos, quizás no es lo que necesitamos en este momento. Es por este motivo que quiero presentaros SCS (Self-Contained Systems)

¿Que es Self-Contained System?

“Self-Contained System” es una arquitectura que se centra en la separación de funcionalidades en sistemas software independientes, lo que compone un conjunto de piezas de software que colaboran para obtener una lógica de negocio completa. Esto permite evitar el problema de mantener grandes monolitos que crecen constantemente y llegan a convertirse en algo casi inmantenible, y siendo recomendado en proyectos de media-larga envergadura.

Hasta ahora la definición podría cuadrarte perfectamente con la arquitectura de microservicios. En realidad la filosofía es la misma, ya que “Divide y Vencerás” está constantemente en la computación, sin embargo el enfoque de estas piezas de software colaborativas es algo distinto.

Diferencias con Microservicios

Como hemos visto se comparten gran cantidad de conceptos con la arquitectura de microservicios; desacoplamiento, piezas desplegables independientes, infraestructura descentralizada. Sin embargo existen algunas importantes diferencias conceptuiales que hacen que SCS sea una arquitectura totalmente independiente:

  • Un microservicio es probablemente mas pequeño que un SCS

De tal manera que quizás podamos dividir un SCSs en disntinto microservicios por el mismo, siendo particularmente una arquitectura de microservicios por si misma. Para mi personalmente, la división de estos sistemas se me asemeja bastante a la filosofía DDD componiendo una serie de dominios y subdominios en nuestro sistema con sus propias fronteras.

Según algunos expertos, dicen que los microservicios son mucho mas versátiles y permiten construir sistemas robustos e independientes mientras que los SCS resuelven problemas más específicos de arquitectura y organización de grandes proyectos.

Características

Entre las características principales que definen un Self-Contained System por si mismo:

  1. Cada SCS es una aplicación totalmente independiente. Para todo su dominio, todos los datos, la lógica, y el código para renderizar la interfaz es contenida por el mismo SCS. A priori debería de poder componerse por si mismo sin confiar en la disponibilidad de otros sistemas.

Conclusión

Como habéis visto, esta arquitectura no dista de la meta que tiene una arquitectura de microservicios. Estamos constantemente buscando la capacidad de reemplazar piezas de software de una manera sencilla, el escalado de nuestro sistema, el aislamiento y responsabilidad única de cada pieza del sistema… El objetivo es no acabar con una Big Ball of Mud ¡RECORDAD! ¡Hay que acabar con el Monolito!

Enlaces Relacionados

http://adrianalonso.es/arquitectura-del-software/self-contained-systems/

http://scs-architecture.org/

https://en.wikipedia.org/wiki/Software_architecture

https://www.innoq.com/en/articles/2016/11/self-contained-systems-different-microservices/

Full Stack Web Developer — adrianalonso.es

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store