04/03/2019 | Hiberus Tecnología | 155 Visitas

De una arquitectura tradicional a microservicios

¿Qué son los microservicios?

La arquitectura de microservicios (del inglés Micro Services Architecture) es un método de desarrollo de software que consiste en construir una aplicación como un conjunto de pequeños servicios, con operaciones bien definidas e independientes entre sí.

Cada microservicio ejecuta su propio proceso y se encarga de implementar una funcionalidad completa del negocio. Puede estar programado en distintos lenguajes y usar diferentes tecnologías de almacenamiento de datos. A la hora de hacer un despliegue, cada servicio se hace de forma independiente.

 

microservicios estructura

 

Las principales diferencias entre una estructura tradicional y una de microservicios, es que la tradicional se realiza de forma monolítica, es decir, todas las partes de la aplicación que podían implementarse se encontraban en esa única aplicación de forma integral. Al contrario, una de microservicios descompone una aplicación en sus funciones principales. Cada función se denomina microservicio y se puede diseñar e implementar de forma independiente. Esto permite que funcionen de forma aislada a los demás servicios de la plataforma.

La tendencia se ha hecho popular en los últimos años a medida que las empresas buscan ser más ágiles y avanzar hacia un DevOps y pruebas continuas. Los microservicios pueden ayudar a crear software más rápido, que sea escalable y lograr un modelo nativo de la nube.

Tras saber con más detalle que son los microservicios, vamos a conocer cuáles son las ventajas de implementarlo en nuestros proyectos.

Ciclo de vida del desarrollo en microservicios

Para obtener los beneficios potenciales y esperados del desarrollo en microservicios (esto es aplicable a casi cualquier nueva forma de trabajo o gestión), es necesario asegurar los Factores Críticos de Éxito a desarrollar bajo este modelo.

El primer Factor Crítico de Éxito que debe asegurar cualquier organización (pública o privada), es descubrir los factores críticos de éxito que son aplicables a su contexto. En otras palabras, lo primero es asegurar la correcta “Definición e implantación de una estrategia de desarrollo en microservicios, que asegure la viabilidad del cambio y la obtención de los beneficios según el Ciclo de Vida previsto”.

Una estrategia suele ser la visión de una situación futura con unos beneficios asociados, que nos transporta a un estado “ideal” en el que nos vemos trabajando con soltura y en un ambiente de inmensa alegría compartida bajo el nuevo modelo de desarrollo en el que todo es sencillo, funciona a la primera y los equipos están eufóricos y en armonía. De hecho, las estrategias no suelen fallar (son “perfectas”) lo que falla es la implantación de la estrategia.

Dicho esto, nuestra recomendación es definir una estrategia para microservicios que se pueda implantar de forma real. Para ello nos basamos en el Ciclo de Vida del desarrollo en microservicios. Se muestra un esquema a continuación.

 

ciclo de vida microservicios

 

La Estrategia de Desarrollo en microservicios debe ser definida para cada entidad y debe ser implantable. En hiberus utilizamos una metodología de Ciclo de Vida adaptada al desarrollo en microservicios.

En general, el Ciclo de Vida se divide en tres Fases: Lanzamiento, Expansión y Estabilización. Cada una de estas fases necesita de cierto tiempo y otros recursos, a la vez que nos aportan cierto valor y alcance.

La Fase de Expansión es la que mayor beneficio nos da en el tiempo, por lo que cuanto antes lleguemos a ella antes obtendremos el valor del desarrollo en microservicios. Sin embargo, si la Fase de Lanzamiento no se realiza correctamente en la Fase de Expansión puede que nos de valor, pero a un coste insostenible. Adicionalmente, si la Fase de Expansión no se realiza correctamente, no podremos llegar a la “eficiencia prometida”, la intuiremos, pero no la obtendremos.

Nuestra recomendación es definir la Estrategia a la vez que definimos su implantación utilizando la metodología del Ciclo de Vida. Este enfoque supone hacernos las preguntas adecuadas y aportar respuestas viables a los ámbitos funcional, de arquitectura, de metodología y de equipo (u organización) para cada fase.

Así obtendremos los Factores Críticos de Éxito (de la Estrategia de Desarrollo basada en microservicios) específica para cada organización (pública o privada) y para cada Fase del Ciclo de Vida. No hay que olvidar el definir qué resultados suponen la finalización de las fases y realizar una previsión del comportamiento de las principales magnitudes de la fase siguiente.

De forma práctica, este ejercicio no es complicado y se debe realizar independientemente del tamaño de los equipos, de los volúmenes de desarrollo o del alcance funcional que se quiere tener con el desarrollo en microservicios. Además, nos permitirá estimar la inversión necesaria (no solo la económica) y el retorno esperado.

La teoría es fácil y los conceptos también lo son, lo que ya no es tan fácil, y es en donde la experiencia y la visión global aportan su valor diferencial, es identificar los “Factores Críticos de Éxito Reales”, los que de verdad hay que asegurar y anticipar su gestión en el Ciclo de Vida. ¡Cuidado!, la tecnología debe estar al servicio de la estrategia y nunca la estrategia debe estar supeditada al uso de una tecnología determinada (bueno, seguro que hay casos en el que deba ser así, pero no es lo usual en empresas no tecnológicas).

Es importante seguir esta metodología antes de empezar con las iniciativas de desarrollo en microservicios, pero aún es mucho más importante si ya se ha empezado la iniciativa y no está funcionando como se espera. Si no se revisa la estrategia y su implantación podemos tener una Fase de Lanzamiento “eterna” con el sufrimiento organizacional que conlleva.

Desde hiberus, fomentamos encarecidamente que se cuente con asesoramiento y apoyo externo en la Definición de la Estrategia de Implantación de microservicios, ya que disponer de experiencia en distintos entornos y alcances, así como seguir una guía metodológica como la nuestra suponen ya un Factor Crítico de Éxito.

Claves de una arquitectura de microservicios

Adoptar un enfoque de microservicios cuando se construye un sistema desde cero o cuando se adapta uno que ya existe puede traer grandes beneficios. Sin embargo, hay una gran cantidad de retos a tener en cuenta que deben abordarse antes de que decidamos construir una artquitectura de microservicios.

Este tipo de sistemas tienden a permitir la construcción de servicios que son simples si utilizamos alguna de las soluciones disponibles, aunque generalmente la arquitectura que los respalda no es tan simple.

Procesos de negocio

Una aplicación más pequeña hace que puedas tener equipos o personas responsables con una mejor coordinación. La desventaja es que el ecosistema puede evolucionar en muchas aplicaciones diferentes a implementar y administrar.

Es importante recordar que un solo microservicio es casi siempre sólo una parte de una imagen más grande.

“Los microservicios son un medio para lograr un fin, un medio para ser más innovadores, flexibles y para reaccionar ante los nuevos requisitos o solicitudes de funciones.”

Escalabilidad

Los elementos más importantes de un microservicio en sí son su nivel de granularidad y su accesibilidad a través de las API. Los microservicios deben desarrollarse, implementarse y escalarse de manera independiente, permitiendo una entrega más rápida de la funcionalidad con poco impacto en otros sistemas. Como tales, deben abordar un dominio lo suficientemente amplio como para evitar desafíos en torno a la orquestación de “nanoservicios”, pero lo suficientemente limitados para evitar dependencias innecesarias.

Una vez que se implementa un microservicio con la funcionalidad adecuada, debe ser consumible por otros servicios y aplicaciones, por lo que debe tener una API bien definida que los clientes del servicio puedan descubrir, comprender y ejecutar fácilmente.

Proceso Ágil

Establecer objetivos de medición para determinar si se está obteniendo valor de los microservicios. El objetivo es mejorar la capacidad de hacer cambios en cualquier aplicación de la compañía y llegar a los clientes rápidamente. Para tener éxito, debe trabajar dentro de los límites del equipo de no más de 10 a 12 personas por equipo.

A medida que cambie la arquitectura de sus aplicaciones a una arquitectura de microservicios, deberá modificar la forma en que organiza sus equipos para que estén alineados.

APIs

Las garantías de aislamiento y las APIs son los elementos más importantes de los microservicios.

El aislamiento permite a los desarrolladores iterar de forma rápida e independiente. Sin embargo, los desarrolladores deben mantener la compatibilidad con la API para que otros microservicios no se vean afectados (y crean dependencias que ralentizan las iteraciones).

Hay varios puntos que tenemos que tener en cuenta:

  • No todos los servicios son microservicios. Al comenzar a trabajar en microservicios debes asegurarte que estén adecuadamente desacoplados. Si están fuertemente acoplados no será posible escalarlos de manera individual.
  • No empieces con muchos servicios al mismo tiempo. Empieza poco a poco, con las funcionalidades clave y hazlo evolucionar.
  • Conforme se vaya evolucionando el ecosistema de aplicaciones, comprende dónde se encuentra el proyecto en la actualidad y qué objetivos se están intentando lograr. Diseña aplicaciones para que los equipos pequeños puedan tener un control total del servicio o que la aplicación sea totalmente independiente de todo lo demás.

¿Cuáles son los beneficios de una arquitectura de microservicios?

  • Mejor escalabilidad. Los microservicios se pueden replicar con facilidad, lo cual permite que nuestra aplicación pueda crecer con mayor rapidez y que de un mejor servicio.
  • Mayor facilidad de implementación. Las aplicaciones basadas en microservicios son más modulare, por lo que su implementación es más ágil y sencilla que cuando se trataba de una aplicación monolítica.
  • Innovación rápida. Tu equipo podrá reaccionar más rápido ante las nuevas necesidades, en lugar de tener que esperar los años que exige el desarrollo tradicional de software podrás adoptar continuamente la última y mejor tecnología a medida que evoluciona.
  • Agilidad en cambios. Cada microservicio puede estar desarrollado sobre una tecnología diferente, por lo que en cada momento podrás elegir la mejor tecnología para la aplicación.
  • Aplicación más independiente. Cada micro servicio es totalmente independiente, por lo que seguir el código es más fácil que si tratase de una aplicación integral. Además cada desarrollador puede trabajar de forma simultánea.
  • Tiempo de lanzamiento al mercado. Si comienza con una arquitectura flexible, extensible y basada en microservicios, lanzarás más rápido que si intentas implementar un gigante monolítico de software.
  • Menor riesgo.
    • No necesitas contenedores para implementar microservicios.
    • Si los microservicios han sido bien desarrollados, no afectarán a los demás. Lo que quiere decir que si una parte falla, no afectará a toda la aplicación. Algo que si ocurría con un desarrollo tradicional.
    • Los elementos clave son la modularidad y la capacidad de reemplazo. Las personas a menudo ponen mucho énfasis en la reutilización del código, pero el hecho de poder reemplazar un servicio heredado por uno nuevo es un gran beneficio de los microservicios.

Si estás planteando utilizar microservicios en tu proyecto, entonces ahora comienza una fase en la que debes evaluar siguientes pasos. ¿Es una nueva aplicación o una ya existente? ¿cuáles son los principales retos en cada tipología de proyecto? ¿qué debemos tener en cuenta?

¿Por qué elegir a Hiberus para empezar a usar los microservicios?

Hiberus aporta experiencia y capacidades en:

Consultoría Tecnológica en microservicios: Desde asesoramiento en estrategia hasta proyectos, asistencia técnica y externalización.

Consultoría de Metodología, Procesos y Organización, enfocada en las necesidades de cada cliente y en su contexto de implantación:

  • Definición de organización y procesos de gestión para el ámbito de Microservicios
  • Adaptación de metodologías DEV-OPS y Agile para Microservicios
  • Gestión del conocimiento para Microservicios

Consultoría de Formación: Tecnológica y en Competencias Clave enfocadas a microservicios:

  • Formación en tecnologías específicas de microservicios por niveles de “Expertise”
  • Elaboración de cursos específicos para clientes:
    • Arquitectura específica de clientes
    • Competencias Clave: Funcionales / Metodológicas / Gestión / …
    • Con soporte de Hiberus University

Agile Centers en microservicios

Podemos decir que esta lista es el “qué” podemos ofrecer, sin embargo, lo realmente diferencial de hiberus es el “cómo” prestamos estos servicios.

Nuestra visión es ser el socio tecnológico en microservicios de nuestros clientes. Esta visión se plasma en aportar a cada cliente la mejor solución y el mejor servicio que necesita en cada momento. Supone compartir toda nuestra experiencia y capacidades, crecer con nuestros clientes y estar preparados para aportarles el “impulso” necesario en cada momento.

Ser “socio tecnológico” de nuestros clientes también supone entender su negocio y asegurar el alineamiento de la tecnología y de nuestros servicios para potenciar sus objetivos de negocio.
También supone “interiorizar” su organización y adaptarnos a su forma de trabajo y cultura, al igual que anticipar los posibles cambios que acompañan al uso de la tecnología para ayudar en su gestión y rápida asimilación.

Resumiendo: intentamos adaptarnos al contexto de cada cliente, independientemente del sector o de su necesidad, siguiendo siempre el criterio de aportación de valor.

 

Un artículo escrito por Oliver Hierro, Sergio Gil e Ignacio Anguiano.

Elija Hiberus para empezar a usar microservicios

Nuestra visión es ser el socio tecnológico en microservicios de nuestros clientes. Aportamos a cada cliente la mejor solución y el mejor servicio que necesita en cada momento.

Te aportamos experiencia y capacidades en Consultoría Tecnológica, Consultoría de Metodología, Procesos y Organización, Consultoría de Formación, Agile Centers...

¿Te ayudamos?

Comentar

Su dirección de correo electrónico no será publicada.Los campos necesarios están marcados *

*

¡Contacta con nosotros!

¿ALGUNA DUDA?

Llámanos y nuestros expertos realizarán un asesoramiento personalizado sin compromiso

902 87 73 92

SOLICITAR INFORMACIÓN

* Campos Obligatorios

Afirmo que he leido el aviso legal y acepto la Política de privacidad
Permito el tratamiento de mis datos personales con la finalidad informada