- BACKEND
- OCTUBRE 2019
Lo que siempre quisiste saber sobre Microservicios
Suscríbete a Insights
Déjanos tu email y te mantendremos al tanto de todas nuestras publicaciones. Solo recibirás una comunicación al mes aproximadamente. Tranquilo, no mandamos spam ;)
Con la entrada en primer lugar de Docker y posteriormente de Kubernetes y Openshift los microservicios se han convertido en la infraestructura favorita para desarrollar Back Ends. Cada vez menos se usan arquitecturas monolíticas.
¿Qué son los Microservicios?
El primer libro que leí de programación, en Pascal, recuerdo que mencionaba mucho una frase en Latín “divide et impera” o en castellano “divide y vencerás”, pues ese es el resumen de los microservicios, dividir el back-end en distintintos servicios.
Un primer ejemplo de aplicación del concepto de microservicio, podría ser una tienda on-line, que constaría de un conjunto de microservicios.
Los usuarios (/users) y el login se pueden implementar en base a un microservicio. Por otra parte los productos, igualmente se pueden basar en dos contenedores, que al entrar en /items este microservicio nos muestra los productos. La pasarela de pago sería un contenedor y el token para comunicarnos con la pasarela de pago y así para cualquier aplicación.
Como contenedor de estos microservicios podemos contar con NodeJS, y una base de datos no relacional (por ejemplo MongoDB).
Cada base de datos solo accede el servicio correspondiente para mostrar las APIs.
Comunicación entre microservicios
Seguramente puedas preguntarte, si en el ejemplo anterior si cada base de datos solo accede un contenedor concreto, ¿como puedo hacer JOINS como en SQL? Pues ahora imaginemos, que cada producto muestra un precio distinto, si no estas logeado el precio final y si estás logeado cada usuario tiene un descuento.
Bien, el front end preguntará a /items que devuelva los 20 primeros productos para mostrarlos en la tienda, nombre del producto, imagen, descripción y precio, el precio depende del usuario, por lo que el microservicio items preguntará a /users por su descuento mezclará la información y la mostrará al front-end.
Los microservicios han supuesto una revolución a la hora de hacer aplicaciones, aunque como todo en esta vida, tiene un precio.
Ventajas y desventajas de los microservicios
Los microservicios han supuesto una revolución a la hora de hacer aplicaciones, como todo en esta vida tiene tiene un precio:
Ventajas
• Escalabilidad: Tanto horizontal como vertical. Si necesitamos un nuevo microservicio, no tenemos que tocar el resto del código, en el ejemplo de la tienda imaginemos que queremos crear un blog, /articles, sería un nuevo contenedor con su base de datos, por otro lado si uno de los servicios tiene más peticiones aplicaciones como kubernetes permiten replicarlo con facilidad y de forma automática.
• Trabajo en equipo: Cada desarrollador puede dedicarse a un microservicio y solo a ese, cuando tenga que consultar a otro a través de API, abstrayéndose de su interior.
• Independencia de la tecnología: Está incluiría las dos anteriores, cada desarrollador podría programar en una tecnología distinta, por ejemplo un Python para hacer analíticas y machine learning y un NodeJS para el resto de servicios y consultas a base de datos por su rendimiento.
• Migraciones más sencillas: Cambiar de tecnología es mucho más fácil, puesto que podemos migrar los microservicios por separado, al final entre ellos se comunican de forma estándar por APIs, podemos pasar de Java a Node o de Node a Go, e ir migrando de uno en uno.
• Uso de distintas bases de datos: Parecido al anterior, podemos usar distintas bases de datos en nuestra aplicación, por ejemplo la base de datos de productos puede ser un SQL, por estar muy estructurada la información, pero la de usuario es un Mongo, incluso usar otras bases de datos más exóticas como las Gráficas, motores de búsquedas en documentos, colas de mensajería...
• Más fácil de mantener: Simplifica mantenimientos, puesto que si hay un bug se identifica en que contenedor y te puedes centrar en ese.
Aunque existen desventajas y hay que conocerlas, éstas son muy relativas.
Desventajas
• Tiempo de preparación: Aunque, en mi opinión, para casi cualquier proyecto el computo total del tiempo es menor, si que requiere una preparación el preparar y pensar cada microservicio.
• Aumento de consumo de Memoria y CPU: Aunque el demonio de Docker esta muy optimizado, el uso de microservicios requiere algo más de computo y memoria.
• Complejidad en el mantenimiento: Aunque se puede buscar mejor problemas, requiere de técnicos que conozcan la tecnología de Docker, Kubernetes, Openshift y similares.
Boream insights
Descubre tendencias y sigue el día a día de nuestros proyectos.
Ver todos los insights-
UX-CX
Solid, UX y datos personales. ¿Una utopía o una realidad?
Solid es una tecnología basada en los estándares actuales de Internet que permite la organización de datos e identidades en las aplicaciones que desarrollemos. Hasta aquí poca cosa nueva. La revolución viene dada porque con esta tecnología es el propio usuario quien tiene el control de sus datos y quien da el permiso de uso a las compañías a través de un WebID.
-
Diseño UX-CX Research
Sesgos cognitivos y prejuicios en los procesos de diseño de interfaz: como combatirlos
Como diseñadores de interfaz y de experiencia de usuario debemos tomar decisiones rápidas que impactan de manera notable en el resultado final de nuestros productos digitales. Generalmente no somos conscientes de que estas decisiones pueden verse profundamente afectadas por una interpretación errónea de la realidad, sesgada por nuestra propia experiencia y alejada de una comprensión racional del entorno.
-
Backend Best practices
Desarrollo Drupal conexión con LDAP: control de acceso.
Tras el primer insight donde comentamos los pasos básicos de conexión de un desarrollo Drupal con un Sistema LDAP, en esta nueva entrega profundizamos en algunos aspectos más avanzados o particulares.
-
UX-CX Research
La experiencia de cliente (CX): clave en los programas de fidelización
Recientemente, en Boream, nos hemos embarcado junto con una gran marca de retail en la redefinición de su Club de fidelización. Muchos son los aspectos que son necesarios tener en cuenta desde el punto de vista del cliente, pues no se trata únicamente de cubrir la perspectiva de negocio.