Llegamos a ustedes gracias a:



Reportajes y análisis

Transición a los microservicios: 8 consejos

[25/02/2019] En la actualidad, el desarrollo de nuevas aplicaciones tiene que ver con la velocidad de producción. El amplio movimiento hacia los ambientes ágiles, que ha estado en marcha durante varios años, ha fomentado la sensación de que los despliegues de software son fáciles y rápidos.

Una de las tendencias tecnológicas que está ayudando a acelerar el desarrollo de las aplicaciones es el aumento de los microservicios -y puede que los líderes de TI, en negocios variados, consideren esta técnica de desarrollo de software para sus organizaciones, si es que aún no lo han hecho.

Los microservicios son una variante de la arquitectura orientada a servicios (SOA, por sus siglas en inglés) que estructura las aplicaciones como colecciones de servicios unidos libremente. Una de las ventajas de dividir las aplicaciones en servicios más pequeños es que mejora la modularidad, haciendo que las aplicaciones sean más fáciles de desarrollar y probar.

"Los microservicios aumentan el poder del equipo y reducen el acoplamiento, lo que permite que los equipos individuales innoven más rápido, reduzcan la comunicación entre equipos y se sientan capacitados para tomar sus propias decisiones con respecto a la arquitectura, el lenguaje y los marcos de trabajo, afirma E.J. Campbell, vicepresidente de ingeniería, deportes e ingeniería de producción de medios de Verizon Media Group, una subsidiaria de la compañía de comunicaciones compuesta por cincuenta marcas en línea.

"Hemos visto que, a medida que los equipos adoptan microservicios, el tiempo del ciclo desde el compromiso hasta la producción se reduce drásticamente, señala Campbell. "Muchos equipos implementan microservicios varias veces al día sin intervención humana, confiando en las pruebas, las revisiones de código y los sofisticados procesos de integración continua / producción continua (CI/CD, por sus siglas en inglés) para garantizar la producción segura de los cambios.

El Yahoo Daily Fantasy Product de la compañía comprende varios microservicios, que incluyen un servicio de juego básico, un servicio de datos deportivos, un servicio de billetera y varios servicios internos de soporte. "Cada uno de estos servicios tiene sus propios procesos de implementación continua, almacenes de datos aislados y equipos individuales responsables de su desarrollo y operación, agrega Campbell.

Las organizaciones pueden encontrar una serie de desafíos con el uso de microservicios. Debido a que los equipos están liberando el código de forma independiente, estos desafíos incluyen determinar los límites correctos entre los servicios, superar la dificultad de compartir código entre equipos en un ambiente de microservicios, y la complejidad de la administración de los cambios 

La transición hacia los microservicios representa un cambio radical, y las organizaciones deben estar preparadas para un cambio significativo.

"Evolucionar a microservicios es como evolucionar del caballo a la bicicleta, o de la bicicleta al automóvil, afirma Jay Bercher, subgerente de programas de Solutions By Design (SBD), una empresa proveedora de servicios de marketing, comunicaciones y tecnología que está trabando con las agencias federales que hacen su transición a un enfoque de TI basado en los microservicios.

"A medida que avanzamos por las etapas de la evolución, encontramos incluso más piezas en movimiento, señala Bercher. "Cada pieza móvil requiere su propio nivel de mantenimiento, y el soporte y supervisión de tantos elementos no solo hace que la solución sea más compleja, sino que también aumenta los costos asociados. En consecuencia, tenemos que analizar nuestras decisiones para garantizar que no solo sean la mejor decisión tecnológica, sino también que sean rentables.

Otro reto es la seguridad. "Tenemos que determinar si queremos implementar una única solución de verificación en toda la aplicación, o si queremos que cada microservicio tenga su propio proceso de verificación, afirma Bercher. "´Ésta es una decisión que debe tomarse caso por caso y que cada equipo de proyecto debe tomarla por sí solo.

Aquí figuran algunas de las mejores prácticas sugeridas para enfrentar los desafíos y prosperar en un ambiente de microservicios.

Emplear el diseño basado en el dominio

La creación de microservicios se trata de hacer que los servicios se acoplen de manera flexible y de aplicar el principio de responsabilidad única, señala Bercher.

"Si bien existen varios métodos y metodologías para el desarrollo, el diseño basado en el dominio y los microservicios parecen ser una combinación perfecta, agrega Bercher. Los equipos en SBD utilizan un diseño basado en el dominio, un enfoque temático para construir una aplicación que crea un patrón de desarrollo eficiente, capaz de eliminar la mayoría de las interdependencias de los equipos.

"En nuestro trabajo, la correlación de dominio a microservicios es esencialmente uno a uno, señala Bercher. "Entonces, cada equipo de desarrollo es responsable de un dominio y también es responsable de desarrollar el microservicio correspondiente. Esto crea una clara delimitación de responsabilidades, que a su vez limita las redundancias que pueden ocurrir en las iniciativas paralelas de desarrollo.

Establecer directrices para las bibliotecas de códigos.

Es mucho más difícil compartir código entre equipos en un mundo de microservicios, afirma Campbell.

"A diferencia de un monolito, donde el código común está solo a una llamada de método de distancia, con una arquitectura de microservicios, los elementos comunes se deben tener en cuenta en un servicio independiente, o el código se debe empaquetar en una biblioteca compartida, afirma Campbell.

La adopción de estas bibliotecas a menudo es lenta, y hacer cambios requiere la coordinación entre el propietario de la biblioteca y los múltiples servicios. "Por lo tanto, es importante que las organizaciones adopten un conjunto sólido de directrices para bibliotecas comunes y expectativas sobre las implementaciones, afirma Campbell.

No compartir bases de datos entre microservicios

"Al construir nuestros servicios de forma desacoplada, estamos permitiendo que nuestros equipos de desarrollo construyan su propia base de datos que alimente nuestros sistemas de backend, lo que limita las dependencias provenientes de otros equipos de desarrollo, afirma Bercher.

"Nuestros equipos de desarrollo envían sus escritos al backend para que todos los demás los absorban, y esta información es administrada por nuestro equipo de datos, afirma Bercher. "Esto continúa con el concepto de plug and play. Si necesita reemplazar un servicio, simplemente sáquelo y enchufe el nuevo. Es como cambiar una luz -solo que es ligeramente más complejo.

Debido a que los microservicios son modulares por diseño, el proceso de desarrollo es predominantemente plug and play, lo que facilita enormemente la solución de problemas que puedan surgir.

"Debido a que el código no se propaga en toda la plataforma, podemos aislar rápidamente los problemas de una fuente específica y luego rastrearlos dentro de los microservicios, afirma Bercher. "Esto facilita la actualización de aplicaciones al permitir actualizaciones parciales y actualizaciones por microservicio. ¿Se imagina actualizar un sistema pieza por pieza en lugar de un reemplazo general? Este concepto por sí solo revoluciona el desarrollo del sistema.

SBD tiene equipos de desarrollo en diferentes lugares de Estados Unidos, capaces de mejorar los beneficios de los microservicios. Los miembros del equipo en Charleston, Carolina del Sur, tienen un mayor nivel de independencia de desarrollo porque están desarrollando su propio microservicio que se conecta a una solución.

Abordar las preocupaciones de seguridad

Al igual que con cualquier otra cosa relacionada con TI, los microservicios tienen sus propios problemas de seguridad.

Temprana y frecuentemente, las compañías deben buscar vulnerabilidades conocidas en el ciclo de vida del desarrollo del software, afirma Ryan Douglas, CIO de Digital River, una proveedora de servicios de comercio electrónico, pagos y marketing.

"Un importante mantra para cualquier equipo de TI que opera en nuestro mundo acelerado es identificar y corregir las vulnerabilidades de las soluciones locales y el software de terceros, afirma Douglas. "Es esencial para mantener la seguridad. Es fundamental tener un enfoque global del ecosistema de software para entender cómo funciona en conjunto y dónde residen las áreas con problemas potenciales.

La implementación de actualizaciones de software es mucho más fácil de probar cuando se usan microservicios, señala Douglas. "Y no es solo para el código producido internamente, afirma. "Los ingenieros de TI pueden probar vulnerabilidades en el software de terceros junto con su propio desarrollo de software. En el caso de que se encuentre una vulnerabilidad, se puede implementar más rápidamente una solución que con las estructuras de código monolítico anteriores.

Evitar los enredos

Los enredos pueden ocurrir con mucha facilidad en implementaciones de microservicios grandes, afirma J.P. Morgenthal, CTO para servicios de aplicaciones de DXC Technology, proveedora de servicios de TI que se formó luego de la fusión de CSC y la división empresarial de HP.

"Incluso puede haber rutas de datos recursivas si las organizaciones no tienen la precaución de garantizar que exista una arquitectura de sistema que impulse el uso de los microservicios, afirma Morgenthal. "Entre el uso de equipos multifuncionales independientes y repositorios de servicios, es posible ver la aparición de dependencias que podrían hacer que el sistema invalide los principios de los microservicios, afirma.

Un solo microservicio debe poder ser cambiado o eliminado sin un impacto significativo en el sistema en general. Una buena práctica es comprometer la arquitectura empresarial para validar los diseños de microservicios, señala Morgenthal.

Considerar crear las aplicaciones desde cero

Vylla.com, una plataforma hipotecaria de marketing directo lanzada por la proveedora de servicios inmobiliarios, Carrington Mortgage Holdings, recientemente trasladó su arquitectura tecnológica a microservicios.

"Uno de los desafíos que enfrentamos cuando decidimos migrar a microservicios era si romper o no la aplicación pieza por pieza, o realizar una reescritura completa, afirma John Nicholas, CTO de Carrington Mortgage.

"Debido a algunos requerimientos comerciales preestablecidos, necesitábamos producir nuevas funciones en un plazo muy corto, afirma Nicholas. "Al principio, intentamos integrarnos en la arquitectura monolítica con resultados exitosos. Sin embargo, también sabíamos que romperla sería más difícil que reescribir la mayoría de nuestras funciones actuales.

Con esto en mente, el equipo de desarrollo decidió que el mejor camino a seguir era construir una nueva aplicación desde cero. "Fue una tarea enorme y requirió de mucho trabajo por parte de los miembros de nuestro equipo, pero después del corto período de tiempo desde la transición ya probó haber valido el esfuerzo, afirma Nicholas.

Debido a que hay una importante inversión en tecnología necesaria para implementar microservicios con éxito, es importante tener un caso de negocios claramente definido que describa cómo la nueva tecnología mejorará el rendimiento o mejorará la eficiencia operativa, afirma Nicholas.

"El componente crítico aquí es encontrar el talento adecuado, agrega Nicholas. "No es fácil encontrar arquitectos de ingeniería que tengan la experiencia para hacer el trabajo. Hemos podido crear un sólido equipo de ingeniería que comprende la arquitectura adecuada y un sólido equipo de control de calidad para crear pruebas de automatización en torno a la aplicación.

Medir el rendimiento al crecer

Para satisfacer un incremento en la demanda, la escala total de las aplicaciones monolíticas puede aumentarse agregando servidores, afirma Praveen Kanyadi, cofundador de SpotCues, una compañía que proporciona software de productividad que usa inteligencia artificial.

"En el caso de los microservicios, la arquitectura modular solo permite un crecimiento en partes del sistema, afirma Kanyadi. "Sin embargo, los microservicios requieren un enfoque muy diferente a la escalabilidad porque una implementación típica de la arquitectura de microservicio puede consistir en múltiples componentes que se ejecutan en diferentes servidores y virtualizaciones que trabajan en conjunto.

Esto agrega el desafío de identificar qué componentes individuales se deben ampliar. "Aquí es donde la medición del rendimiento se vuelve crítica, y las herramientas como un controlador de producción de aplicaciones pueden ayudar a medir y detectar problemas de desempeño, señala Kanyadi.

Las compañías también deben considerar la definición de acuerdos de nivel de servicio (SLA, por sus siglas en inglés), para cada microservicio, de desempeño y confiabilidad, en función de las prioridades de negocio, agrega Kanyadi.

Centrarse en la gestión del cambio

Las empresas deben actualizar los procesos de gestión del cambio y el control de los cambios, junto con la documentación de respaldo, para beneficiarse del cambio de una arquitectura monolítica a una de microservicios.

"Un proceso de desarrollo más rápido es excelente, pero no pierda los beneficios de los microservicios al dejar de lado el control de los cambios y otros procesos importantes de la gobernanza, afirma Ron Hayman, director de nube de Avant Communications, proveedora de servicios de nube para el mercado de canales de ventas de TI.

"Asegúrese de alinear el control de cambios y el proceso de aprobación para que coincida con su ciclo de vida de desarrollo ágil, señala Hayman.