Cómo resolvimos el problema de tres monolitos

En las estrategias de la mayoría de las empresas, la digitalización se menciona cada vez más: algunas empresas están tratando de introducir tecnologías modernas (por ejemplo, Big Data, IoT, AI, blockchain), mientras que otras están automatizando sus procesos internos en todas partes. A pesar de los crecientes esfuerzos e inversiones en la implementación de sistemas, muchos ven los resultados como mediocres. Idealmente, las organizaciones modernas deberían poder crear rápidamente nuevos productos digitales o integrarse con servicios populares de terceros; llevar procesos más allá de su organización; ser capaz de interactuar efectivamente con los socios, manteniendo el aislamiento de sus procesos. También debe poder no solo recopilar datos, sino también acceder y administrarlos rápidamente. Sin embargo, incluso las compañías maduras enfrentan los desafíos de transformar y administrar datos,con competencia constante de prioridades comerciales. ¿Qué les impide alcanzar la perfección? 

La experiencia de nuestro equipo de DTG en la creación de productos y servicios digitales nos permite afirmar que la solución a estos problemas se ve obstaculizada por el problema de tres monolitos: monolito de aplicación, monolito de integración y monolito de datos . Son el resultado de los paradigmas heredados de la arquitectura tradicional, la cultura, depender de los datos existentes y trabajar en un sistema "en capas", donde el aislamiento del departamento de TI y el negocio conduce a la pérdida de datos y conocimiento sobre ellos. Como solución a este problema, vemos una transición de los enfoques tradicionales de desarrollo y gestión a los distribuidos, lo que implica serios cambios técnicos y culturales en la organización.

Pero lo primero es lo primero. Describamos brevemente cuáles son los notorios monolitos, y luego pasaremos a las soluciones que proponemos para superar las dificultades generadas por los monolitos.


Aplicación monolito


Uno de los tres problemas arquitectónicos al crear soluciones empresariales es el monolito de aplicaciones , que aparece a medida que se agregan más y más funciones a una aplicación existente. Con los años, la aplicación se convierte en un "monstruo" con muchas funciones entrelazadas y componentes co-dependientes, lo que conlleva los siguientes puntos negativos:

  • la presencia de un único punto de falla (en el caso de una falla en uno de los módulos de la aplicación, la aplicación completa falla y todos los empleados que trabajan con esta aplicación dejan de funcionar);
  • dificultad para garantizar la calidad requerida del producto desarrollado, la necesidad de pruebas de regresión volumétrica;
  • un equipo monolítico, que no es práctico expandir, ya que esto no acelerará y facilitará el proceso de desarrollo;
  • , ; , ; 
  • ( -). , , « ». ;
  • .

Los microservicios ayudan a superar los problemas descritos. El significado del enfoque es que una aplicación monolítica se divide en varias aplicaciones pequeñas que consisten en un grupo de servicios. 


A diferencia de las aplicaciones monolíticas, esto proporciona una escalabilidad mucho mayor que el enfoque monolítico, ya que es posible escalar servicios altamente cargados según sea necesario, y no toda la aplicación. Los microservicios permiten que varios equipos de una organización trabajen de forma independiente y liberen nuevas funciones como mejor les parezca.

Aunque la idea de modularidad ha existido durante muchos años, la arquitectura de los microservicios proporciona una flexibilidad mucho mayor, lo que permite a las organizaciones responder más rápidamente a las condiciones cambiantes del mercado.

Pero no crea ingenuamente que los microservicios salvarán completamente su entorno de TI de la complejidad. Con el advenimiento de los microservicios, existe un compromiso para aumentar la flexibilidad de desarrollo al tiempo que aumenta la complejidad de la gestión, el desarrollo y el soporte debido a su descentralización. Además, no todas las aplicaciones en un entorno corporativo son adecuadas para la arquitectura de microservicios.

Monolito de integración


El segundo problema arquitectónico, el monolito de integración, está relacionado con el uso del bus corporativo de integración ( Enterprise Service Bus , ESB). Este es un patrón arquitectónico con una única capa de interacción para toda la empresa que proporciona un mensaje orientado a eventos centralizado y unificado. 


En este enfoque tradicional, la integración se ve como una capa intermedia entre capas de fuentes de datos y sus consumidores. ESB proporciona servicios que son utilizados por muchos sistemas en diferentes proyectos. El ESB es administrado por un solo equipo de integración, que debe estar muy calificado. Además, es difícil de escalar. Debido al hecho de que el equipo de ESB es el "cuello de botella" del proyecto, es difícil emitir cambios y una línea creciente de mejoras:

  • La integración solo es posible a través del bus como parte de la próxima versión, que es mejor presentar una solicitud debido al gran flujo en unos pocos meses;
  • los cambios solo pueden realizarse si se acuerdan con otros consumidores, ya que no todo se descompone y se aísla. Se está acumulando deuda técnica, que solo aumenta con el tiempo. 

En arquitecturas monolíticas, los datos están "en reposo". Pero todo el negocio se basa en eventos de transmisión y requiere cambios rápidos. Y donde todo cambia muy rápidamente, el uso de ESB es inapropiado. 

Para resolver estos problemas, el enfoque de integración ágil ayuda, lo que no implica una única solución de integración centralizada para toda la empresa o un solo equipo de integración. Al usarlo, aparecen varios equipos de desarrollo multifuncionales que saben qué datos necesitan y qué calidad deberían ser. Sí, con este enfoque, el trabajo realizado puede duplicarse, pero le permite reducir la dependencia entre diferentes equipos y ayuda a liderar principalmente el desarrollo paralelo de diferentes servicios.

Monolito de datos


El tercer problema arquitectónico, pero no menos importante, es el problema del monolito de datos, asociado con el uso de un almacén centralizado de datos corporativos ( Enterprise Data Warehouse, EDW). Las soluciones de EDW son caras, contienen datos en un formato canónico que, debido a su conocimiento específico, es respaldado y entendido por un solo equipo de especialistas, que atiende a todos. Los datos en EDW provienen de varias fuentes. El equipo de EDW los verifica y los convierte a un formato canónico, que debe satisfacer las necesidades de varios grupos de consumidores dentro de la organización, y el equipo se carga. Además, los datos convertidos a cierto formato canónico no pueden ser convenientes para todos y siempre. En pocas palabras: lleva demasiado tiempo trabajar con los datos. En consecuencia, no es posible lanzar rápidamente un nuevo producto digital en el mercado.


Tal orientación al componente central, su dependencia de los cambios en los sistemas circundantes es un problema real en el desarrollo de nuevos procesos digitales y la planificación de sus mejoras. Los cambios pueden ser contradictorios y su coordinación con otros equipos ralentiza aún más el trabajo. 

Para resolver el problema del monolito de datos , se inventó un repositorio de datos no estructurado, Data Lake .. Su principal diferencia es que los datos "sin procesar" se cargan en Data Lake, no hay un solo equipo para trabajar con ellos. Si una empresa necesita obtener algunos datos para resolver su problema, se forma un equipo que extrae los datos necesarios para una tarea en particular. Cerca, otro equipo puede hacer lo mismo para otra tarea. Por lo tanto, se introdujo Data Lake para que varios equipos pudieran trabajar simultáneamente en su producto. Este enfoque implica que los datos pueden duplicarse en diferentes dominios, ya que los equipos los convierten en una forma adecuada para desarrollar su producto. Aquí surge el problema: el equipo necesita tener competencias para trabajar con varios formatos de datos. Sin embargo, este enfoque, aunque conlleva el riesgo de costos adicionales,da a los negocios una nueva calidad y afecta positivamente la velocidad de creación de nuevos productos digitales.

Y solo unas pocas entre las organizaciones avanzadas utilizan un enfoque aún más "maduro" al trabajar con datos: el Data Mesh , que hereda los principios de los dos anteriores, pero elimina sus defectos. Los beneficios de Data Mesh son el análisis de datos en tiempo realy menores costos para administrar la infraestructura de big data. El enfoque favorece el procesamiento del flujo e implica que el sistema externo proporciona un flujo de datos que se convierte en parte de la API de la solución de origen. La calidad de los datos es responsabilidad del propietario del equipo del sistema que genera estos datos. Para maximizar este enfoque, se requiere un control más estricto sobre cómo se procesan y aplican los datos para evitar "llevar a las personas a un montón de información sin sentido". Y esto requiere un cambio en el pensamiento de la administración y el equipo con respecto a cómo se construye la interacción de TI con el negocio. Este enfoque funciona bien en un modelo orientado a productos y no en un modelo orientado a proyectos.

Dicha infraestructura de datos abre una perspectiva completamente diferente y facilita la transición del estado de "almacenamiento de datos" al estado de "respuesta a los datos". El procesamiento continuo permite a las empresas digitales responder inmediatamente a los eventos al generar datos, proporcionando medios intuitivos para obtener datos analíticos y configuraciones en tiempo real de productos o servicios que ayudarán a la organización a ir un paso por delante de sus competidores.

Enfoques distribuidos


Para resumir, la solución a los problemas de todos los monolitos enumerados es:

  • dividir el sistema en bloques separados centrados en las funciones comerciales;
  • la asignación de equipos independientes, cada uno de los cuales puede crear y operar una función comercial;
  • paralelización del trabajo entre estos equipos para aumentar la escalabilidad, la velocidad.

No existen soluciones simples para construir la infraestructura de TI de una organización moderna. Y la transición de la arquitectura tradicional a la distribuida no es solo una transformación técnica, sino también cultural. Requiere cambios de pensamiento con respecto a la interacción de los negocios y los sistemas de información. Y si antes existían aplicaciones monolíticas en la organización, ahora funcionan miles de servicios que deben gestionarse, mantenerse y compararse en términos de interfaces y datos. Esto aumenta los costos, aumenta los requisitos para las habilidades de las personas y la gestión de proyectos. El departamento de TI y la empresa deben asumir responsabilidades adicionales, y si aprenden a gestionar esta complejidad, esta infraestructura permitirá que la empresa responda a los desafíos del mercado con una nueva calidad más alta.

Y ahora, ¿en qué estamos exactamente?¿Utilizamos DTG como solución al "problema de los monolitos" al optimizar los procesos digitales de nuestros clientes y su integración en el ecosistema de socios? Nuestra respuesta es la clase Digital Business Technology Platform (consulte la clasificación analítica de Gartner). La llamamos GRANUMy, por tradición, se basa en una combinación de tecnologías de código abierto, lo que nos permite crear rápida y fácilmente sistemas distribuidos complejos en un entorno corporativo. Tocaremos las tecnologías con más detalle a continuación. ¿Qué se ha vuelto más fácil y rápido? Al usar la plataforma, aceleramos significativamente la integración de las plataformas de TI existentes del cliente, los sistemas de interacción con el cliente, la gestión de datos, IoT y análisis, pudimos integrar rápidamente los sistemas del cliente con los socios del ecosistema para manejar eventos comerciales y tomar decisiones conjuntas para crear valor común. Además, el uso de tecnologías de código abierto nos ayudó a responder a las solicitudes de los clientes relacionadas con evitar el software con licencia. 

Desde un punto de vista técnico, durante la digitalización de procesos mediante el uso de una arquitectura distribuida (microservicios y el enfoque DataMesh), pudimos reducir la interdependencia de los componentes y resolver el problema del desarrollo complejo y prolongado. Además, pudimos procesar eventos de transmisión en tiempo real, preservando la calidad de los datos, y también creamos un entorno confiable para interactuar con los socios.


La plataforma se puede dividir en tres capas lógicas. 

  1. La capa inferior es la infraestructura. Diseñado para brindar servicios básicos. Esto incluye seguridad, monitoreo y análisis de registros, administración de contenedores, enrutamiento de red (equilibrio de carga), devops. 
  2. Capa de integración: admite una arquitectura distribuida (enfoque DataMesh, microservicios y procesamiento de datos de transmisión).
  3. — . (track&trace), , . . 

Hablemos más específicamente sobre las tecnologías de código abierto que hemos elegido. ¿Cuáles de ellos son utilizados en su mejor práctica por las principales compañías de Internet como Netflix, LinkedIn, Spotify? Las tecnologías Kubernetes, Jenkins, Keycloak, Spring Boot, Fluentd, Grafana, Prometheus se eligen para combatir el monolito de la aplicación y para construir y trabajar con la arquitectura de microservicios, así como en busca de flexibilidad y velocidad de cambios. Para alejarse de una arquitectura monolítica, el enfoque de integración ágil generalmente usa Apache Camel, NiFi, WSO2 API Manager. Y, finalmente, Kafka, Flink, Salase Event Portal son útiles para resolver el problema del monolito de datos, su partición y transición al análisis de datos en tiempo real utilizando el enfoque Data Mesh.

La siguiente ilustración representa un conjunto de tecnologías que, como resultado de los experimentos, en DTG consideramos óptimos para resolver el problema de tres monolitos.


Comenzamos la aplicación práctica de la plataforma descrita hace aproximadamente un año y hoy ya podemos concluir que, independientemente de la industria, dicha solución es de interés para las organizaciones que están pensando en reducir el costo de ejecutar sus procesos comerciales, aumentar la eficiencia de la interacción con los socios, crear Nuevas cadenas de valor. Dichas compañías están destinadas a experimentos de flujo digital rápido (prueba de hipótesis, integración, lanzamiento rápido al mercado y, si el éxito local, implementación global), y también abrirán nuevos canales de comunicación con los clientes y construirán una comunicación digital más intensa con ellos el mundo. 

En nuestro grupo de empresas siempre hay vacantes interesantes . ¡Esperando por ti!

All Articles