Descubre qué es Systemic y cómo funciona con Node.js

Autor: | Última modificación: 19 de febrero de 2024 | Tiempo de Lectura: 3 minutos
Temas en este post:

Algunos de nuestros reconocimientos:

Premios KeepCoding

Nuestros amigos de Guidesmiths, trabajan principalmente con NodeJS y arquitecturas de microservicios. Debido al alto número de proyectos que manejan y de desarrolladores que componen este equipo, es muy importante que tengan patrones comunes a la hora de escribir y estructurar el código, con el fin de mantener y mejorar los microservicios de manera constante, evitando que cada uno tenga implementaciones.

La herramienta que les ha permitido mantener alineados los desarrollos se llama Systemic y en pocas palabras es una ‘librería de inyección de dependencias para node.js’ que Matteo Di Paolantonio, Team Lead de software engineer de Guide Smiths, ha presentado en sociedad en un webinar reciente.

¿Qué es Systemic? 

Systemic en una librería mínima de inyección de dependencias. Es la receta que ha permitido a numerosas empresas uniformar los desarrollos que realizan. La idea es ser lo más ágiles posibles Se trata de un programa OpenSource, disponible tanto en github como en npm

¿Por qué se desarrolló Systemic? 

Se creó para evitar casos en los que hay God Objects, para acotar lo máximo posible las responsabilidades, empujar hacia una gestión de las posibilidades más granular. Se desarrolló teniendo en cuenta la metodología del twelve-factor, un total de doce mandamientos a seguir para desarrollar aplicaciones.  Systemic no es un framework, provee la posibilidad de generar sistemas que están hechos por subsistemas o componentes, cada uno con su responsabilidad acotada, que están ligados entre sí con un pequeño hilo que es el que nos explica qué componente depende de qué otro subsistema.  Además, se encarga de arrancar y parar un sistema hecho por distintos componentes, de la manera correcta, para que las dependencias no se pisen entre sí y no haya problemas de arranque, de stop u otros.  Asimismo, te ofrece total libertad para definir los componentes de tu sistema. 

La utilización de Systemic presenta una serie de ventajas, entre las que encontramos:

  • Permite tener una estructura básica que todos siguen. 
  • No hay que preocuparse del arranque y el stop de los distintos componentes y piezas de códigos que componen nuestro servicio o funcionalidad. 
  • Graceful shutdown es algo bastante importante, sobre todo cuando trabajas con servicios desplegados. 
  • Pero también supone algunos inconvenientes, como que la curva de aprendizaje no es muy sencilla.

Conceptos principales 

Un sistema está hecho por componentes y cada uno tiene que cumplir con tres puntos:
  • Exponer y cumplir las reglas de la interfaz de Start
  • Realizar lo mismo con la interfaz de Stop
  • Los componentes se van enlazando entre sí y van inyectados uno dentro de otro según lo que le haga falta. 
Systemic se encarga de arrancarlo todo gracias a una definición previamente estipulada por el desarrollador de lo que tiene que arrancar. Entonces, el componente y sus subsistemas estarán definidos a través de un manifiesto de quiénes son, cómo se llaman y de quién dependen. Una vez hecha esta definición, está todo listo para ser arrancado y es donde están los runners.

Systemic y Microservicios 

Cuando se habla de microservicios utilizando Systemic, intentamos tener una arquitectura hexagonal en la que cada componente se encarga de ser una pequeña interfaz con el mundo exterior.  La idea es que los componentes alrededor de nuestro servicio sepan solo lo que tienen que saber, mientras que la business logic, que es algo propio del servicio en sí, es algo de lo que se encarga el orchestrator, el que sabe de qué componentes está compuesto nuestro servicio y sabe utilizar de la mejor manera los métodos que cada componente expone para poder alcanzar la business logic que queremos desarrollar.  Además, encontramos también el término de single responsibility, que asegura que cada componente hace lo suyo y nada más.  Los últimos conceptos a tener en cuenta cuando hablamos de Systemic y Microservicios son el versioning y aliasing de los componentes y subcomponentes.  Si quieres ver los ejemplos de código que mencionamos, puedes aprender mucho más viendo el webinar completo:   Los microservicios están revolucionando el desarrollo web y si quieres aprender a utilizarlos y llevarlos a tus proyectos, descubre nuestro Desarrollo Web Full Stack Bootcamp. En seis meses dominarás ésta y otras tecnologías para convertirte en un Full Stack Web Developer.