Como resolvemos o problema de três monólitos

Nas estratégias da maioria das empresas, a digitalização é cada vez mais mencionada: algumas empresas estão tentando introduzir tecnologias modernas (por exemplo, Big Data, IoT, AI, blockchain), enquanto outras estão por toda parte automatizando seus processos internos. Apesar dos crescentes esforços e investimentos na implementação de sistemas, muitos vêem os resultados como medíocres. Idealmente, as organizações modernas devem poder criar rapidamente novos produtos digitais ou integrar-se a serviços populares de terceiros; levar processos além de sua organização; ser capaz de interagir efetivamente com os parceiros, mantendo o isolamento de seus processos. Você também deve poder não apenas coletar dados, mas também acessar e gerenciar rapidamente. No entanto, até empresas maduras enfrentam os desafios de transformar e gerenciar dados,com constante concorrência de prioridades de negócios. O que os impede de alcançar a perfeição? 

A experiência de nossa equipe de DTG na criação de produtos e serviços digitais nos permite afirmar que a solução para esses problemas é dificultada pelo problema de três monólitos: monólito de aplicativo, monólito de integração e monólito de dados . Eles são o resultado dos paradigmas herdados da arquitetura, cultura tradicionais, contando com os dados existentes e trabalhando em um sistema "em camadas", onde o isolamento do departamento de TI e dos negócios leva à perda de dados e conhecimento sobre eles. Como solução para esse problema, vemos uma transição das abordagens tradicionais de desenvolvimento e gerenciamento para as distribuídas, o que implica sérias mudanças técnicas e culturais na organização.

Mas as primeiras coisas primeiro. Vamos descrever brevemente quais são os notórios monólitos e, em seguida, avançaremos para as soluções que propomos para superar as dificuldades geradas pelos monólitos.


Monólito de aplicação


Um dos três problemas de arquitetura ao criar soluções corporativas é o monólito de aplicativos , que aparece à medida que mais e mais funções são adicionadas a um aplicativo existente. Ao longo dos anos, o aplicativo se transforma em um "monstro" com muitas funcionalidades entrelaçadas e componentes co-dependentes, com os seguintes pontos negativos:

  • a presença de um único ponto de falha (no caso de uma falha em um dos módulos do aplicativo, todo o aplicativo falha e todos os funcionários que trabalham com esse aplicativo param de funcionar);
  • dificuldade em garantir a qualidade exigida do produto desenvolvido, a necessidade de testes de regressão volumétrica;
  • uma equipe monolítica, que não é prática para expandir, pois isso não irá acelerar e facilitar o processo de desenvolvimento;
  • , ; , ; 
  • ( -). , , « ». ;
  • .

Os microsserviços ajudam a superar os problemas descritos. O significado da abordagem é que um aplicativo monolítico é dividido em vários aplicativos pequenos que consistem em um grupo de serviços. 


Ao contrário dos aplicativos monolíticos, isso oferece escalabilidade muito maior do que a abordagem monolítica, pois torna-se possível dimensionar serviços altamente carregados conforme necessário, e não o aplicativo inteiro. Os microsserviços permitem que várias equipes de uma organização trabalhem de forma independente e liberem novos recursos como acharem melhor.

Embora a ideia de modularidade exista há muitos anos, a arquitetura dos microsserviços fornece uma flexibilidade muito maior, permitindo que as organizações respondam mais rapidamente às mudanças nas condições do mercado.

Mas não acredite ingenuamente que os microsserviços salvarão completamente o seu ambiente de TI da complexidade. Com o advento dos microsserviços, há um compromisso de aumentar a flexibilidade do desenvolvimento e, ao mesmo tempo, aumentar a complexidade do gerenciamento, desenvolvimento e suporte devido à sua descentralização. Além disso, nem todo aplicativo em um ambiente corporativo é adequado para a arquitetura de microsserviço.

Monólito de Integração


O segundo problema de arquitetura, o monólito de integração, está conectado ao uso do barramento corporativo de integração ( Enterprise Service Bus , ESB). Esse é um padrão arquitetural com uma única camada de interação para toda a empresa que fornece um sistema de mensagens centralizado e unificado orientado a eventos. 


Nessa abordagem tradicional, a integração é vista como uma camada intermediária entre as camadas de fontes de dados e seus consumidores. O ESB fornece serviços que são usados ​​por muitos sistemas em diferentes projetos. O ESB é gerenciado por apenas uma equipe de integração, que deve ser muito qualificada. Além disso, é difícil de escalar. Devido ao fato de a equipe do ESB ser o "gargalo" do projeto, é difícil emitir mudanças e uma linha crescente de melhorias:

  • A integração é possível apenas através do barramento, como parte do próximo release, que é melhor enviar um aplicativo devido ao grande fluxo em poucos meses;
  • quaisquer alterações podem ser feitas apenas se forem acordadas com outros consumidores, pois nem tudo é decomposto e isolado. A dívida técnica está se acumulando, o que só aumenta com o tempo. 

Em arquiteturas monolíticas, os dados estão "em repouso". Mas todo o negócio é construído sobre eventos de streaming e requer mudanças rápidas. E onde tudo muda muito rapidamente, o uso do ESB é inadequado. 

Para resolver esses problemas, a abordagem de integração ágil ajuda, o que não implica uma única solução de integração centralizada para toda a empresa ou uma única equipe de integração. Utilizando-o, aparecem várias equipes de desenvolvimento multifuncional que sabem quais dados precisam e qual qualidade devem ser. Sim, com essa abordagem, o trabalho realizado pode ser duplicado, mas permite reduzir a dependência entre equipes diferentes e ajuda a liderar principalmente o desenvolvimento paralelo de diferentes serviços.

Monólito de dados


O terceiro, mas não menos importante, problema arquitetural é o problema do monólito de dados, associado ao uso de um data warehouse corporativo centralizado ( Enterprise Data Warehouse, EDW). As soluções EDW são caras, contêm dados em formato canônico, que, devido ao conhecimento específico, é suportado e compreendido por apenas uma equipe de especialistas, que atende a todos. Os dados no EDW vêm de várias fontes. A equipe da EDW os verifica e os converte em um formato canônico que deve atender às necessidades de vários grupos de consumidores da organização, e a equipe é carregada. Além disso, os dados convertidos para um determinado formato canônico não podem ser convenientes para todos e sempre. Conclusão - leva muito tempo para trabalhar com os dados. Portanto, não é possível lançar rapidamente um novo produto digital no mercado.


Essa orientação para o componente central, sua dependência de mudanças nos sistemas circundantes é um problema real no desenvolvimento de novos processos digitais e no planejamento de suas melhorias. As mudanças podem ser conflitantes, e sua coordenação com outras equipes diminui ainda mais o trabalho. 

Para resolver o problema do monólito de dados, um repositório de dados não estruturado, Data Lake , foi inventado.. Sua principal diferença é que os dados “brutos” são carregados no Data Lake; não há uma equipe única para trabalhar com eles. Se uma empresa precisar obter alguns dados para resolver seu problema, é formada uma equipe que extrai os dados necessários para uma tarefa específica. Nas proximidades, outra equipe pode fazer o mesmo para outra tarefa. Assim, o Data Lake foi introduzido para que várias equipes pudessem trabalhar simultaneamente em seus produtos. Essa abordagem implica que os dados podem ser duplicados em diferentes domínios, conforme as equipes os convertem em um formato adequado para o desenvolvimento de seu produto. Aqui surge o problema - a equipe precisa ter competências para trabalhar com vários formatos de dados. No entanto, essa abordagem, embora acarreta o risco de custos adicionais,confere aos negócios uma nova qualidade e afeta positivamente a velocidade de criação de novos produtos digitais.

E apenas algumas das organizações avançadas usam uma abordagem ainda mais "madura" ao trabalhar com dados - o Data Mesh , que herda os princípios dos dois anteriores, mas elimina suas deficiências. Os benefícios da malha de dados são a análise de dados em tempo reale custos mais baixos para gerenciar a infraestrutura de big data. A abordagem favorece o processamento do fluxo e implica que o sistema externo forneça um fluxo de dados que se torne parte da API da solução de origem. A qualidade dos dados é de responsabilidade do proprietário da equipe do sistema que gera esses dados. Para maximizar essa abordagem, é necessário um controle mais rígido sobre como os dados são processados ​​e aplicados para evitar "levar as pessoas a um monte de informações sem sentido". E isso requer uma mudança no pensamento da gerência e da equipe em relação à forma como a interação da TI com os negócios é construída. Essa abordagem funciona bem em um modelo orientado a produtos, e não em um modelo orientado a projetos.

Essa infraestrutura de dados abre uma perspectiva completamente diferente e facilita a transição do estado de "armazenamento de dados" para o estado de "responsivo aos dados". O processamento de fluxo permite que as empresas digitais respondam imediatamente aos eventos ao gerar dados, fornecendo meios intuitivos de obter dados analíticos e configurações em tempo real de produtos ou serviços que ajudarão a organização a dar um passo à frente de seus concorrentes.

Abordagens distribuídas


Para resumir, a solução para os problemas de todos os monólitos listados é:

  • dividir o sistema em blocos separados, focados nas funções de negócios;
  • a alocação de equipes independentes, cada uma das quais pode criar e operar uma função de negócios;
  • paralelização do trabalho entre essas equipes, a fim de aumentar a escalabilidade, a velocidade.

Não há soluções simples na construção da infraestrutura de TI de uma organização moderna. E a transição da arquitetura tradicional para a arquitetura distribuída não é apenas uma transformação técnica, mas também cultural. Requer mudanças de pensamento em relação à interação de negócios e sistemas de informação. E se aplicativos monolíticos já existiam na organização antes, agora milhares de serviços trabalham que precisam ser gerenciados, mantidos e comparados em termos de interfaces e dados. Isso aumenta os custos, aumenta os requisitos para as habilidades das pessoas e o gerenciamento de projetos. O departamento de TI e os negócios devem assumir responsabilidades adicionais e, se aprenderem a gerenciar essa complexidade, essa infraestrutura permitirá que os negócios respondam aos desafios do mercado com uma nova qualidade superior.

E agora sobre o que exatamente estamosUsamos o DTG como uma solução para o "problema dos monólitos" ao otimizar os processos digitais de nossos clientes e sua integração no ecossistema de parceiros? Nossa resposta é a classe Plataforma de tecnologia de negócios digitais (consulte a classificação de análise do Gartner). Nós a chamamos de GRANUMe, por tradição, construído sobre uma combinação de tecnologias de código aberto, o que nos permite criar rápida e facilmente sistemas distribuídos complexos em um ambiente corporativo. Abordaremos as tecnologias com mais detalhes abaixo. O que se tornou mais fácil e rápido? Usando a plataforma, aceleramos significativamente a integração das plataformas de TI do cliente, sistemas de interação com o cliente, gerenciamento de dados, IoT e análises, e conseguimos integrar rapidamente os sistemas do cliente aos parceiros do ecossistema para lidar com eventos de negócios e tomar decisões conjuntas para criar valor comum. Além disso, o uso de tecnologias de código aberto nos ajudou a responder às solicitações dos clientes relacionadas a evitar software licenciado. 

Do ponto de vista técnico, durante a digitalização de processos através do uso de uma arquitetura distribuída (microsserviços e a abordagem DataMesh), conseguimos reduzir a interdependência dos componentes e resolver o problema do desenvolvimento complexo e demorado. Além disso, conseguimos processar eventos de streaming em tempo real, preservando a qualidade dos dados e também criando um ambiente confiável para interagir com os parceiros.


A plataforma pode ser dividida em três camadas lógicas. 

  1. A camada inferior é a infraestrutura. Projetado para fornecer serviços básicos. Isso inclui segurança, monitoramento e análise de logs, gerenciamento de contêiner, roteamento de rede (balanceamento de carga), devops. 
  2. Camada de integração - suporta uma arquitetura distribuída (abordagem DataMesh, microsserviços e processamento de dados de streaming).
  3. — . (track&trace), , . . 

Vamos falar mais especificamente sobre as tecnologias de código aberto que escolhemos. Quais deles são usados ​​em suas melhores práticas pelas principais empresas de Internet como Netflix, LinkedIn, Spotify. As tecnologias Kubernetes, Jenkins, Keycloak, Spring Boot, Fluentd, Grafana, Prometheus são escolhidas para combater o monólito de aplicativos e construir e trabalhar com uma arquitetura de microsserviço, além de buscar flexibilidade e velocidade das mudanças. Para se afastar de uma arquitetura monolítica, a abordagem de Agile Integration geralmente usa o Apache Camel, NiFi, WSO2 API Manager. E, finalmente, o Kafka, Flink, Salase Event Portal são úteis para resolver o problema do monólito de dados, seu particionamento e transição para a análise de dados em tempo real usando a abordagem Data Mesh.

A ilustração abaixo representa um conjunto de tecnologias que, como resultado de experimentos, nós da DTG consideramos ótimos para resolver o problema de três monólitos.


Iniciamos a aplicação prática da plataforma descrita há cerca de um ano e hoje já podemos concluir que, independentemente do setor, essa solução é do interesse das organizações que estão pensando em reduzir o custo de execução de seus processos de negócios, aumentar a eficiência da interação com os parceiros, criar novas cadeias de valor. Essas empresas visam experimentos rápidos de fluxo digital (teste de hipóteses, integração, lançamento rápido de mercado e, se houver sucesso local, implementação global), além de abrir novos canais de comunicação com os clientes e criar uma comunicação digital mais intensa com eles. o mundo. As vagas interessantes

estão sempre abertas em nosso grupo de empresas . Esperando Por Você!

All Articles