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é encontrarás en este post?
Toggle¿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.