Estratégia, Telco
A Nfq aborda a complexidade em arquiteturas modernas com o PALM e a sua implementação em Python, pylm, facilitando a comunicação entre componentes, balanceamento de carga e suporte a múltiplos protocolos em ambientes de aplicações complexas.
Compartilhe o artigo

Internet mudou a forma como as aplicações são desenvolvidas e implantadas. A arquitetura em três camadas baseada em um banco de dados, conectada a uma camada de lógica de negócio e com uma camada de apresentação por cima, tornou-se obsoleta.

Repetimos incessantemente o mantra do Internet scale, querendo dizer que o número de dispositivos que hoje se conectam a uma aplicação ao mesmo tempo pode colapsá-la a qualquer momento se ainda usar a arquitetura em três camadas. Esta arquitetura, baseada em um banco de dados, conectada a uma camada de lógica de negócio e com uma camada de apresentação por cima, foi amplamente utilizada até o início deste século, e tornou-se obsoleta.

O primeiro desafio foi a escalabilidade: fazer com que uma aplicação suportasse milhares, milhões ou bilhões de conexões simultâneas. Agora a escalabilidade é dada como certa para qualquer aplicação, mesmo que esses requisitos nunca se tornem reais. Hoje em dia, a escalabilidade não é mais do que uma consequência de um bom design.

Mas a escalabilidade é como um sistema reage a picos de carga de trabalho. Espera-se que, se a carga de trabalho dobrar, a única consequência prática para manter a qualidade do serviço seja dobrar os recursos. Temos inúmeros exemplos de aplicações atendendo milhões de usuários utilizando milhares de servidores. Mas os requisitos dos backends modernos foram além do desempenho.

A “Mesh App and Service Architecture” (MASA) refere-se ao design de soluções que combinam aplicações móveis, online, desktop e dispositivos IoT

Em um de seus últimos relatórios Top 10 Strategic Technology Trends, Gartner introduziu uma nova palavra-chave na arquitetura de aplicações, que representa bem a vanguarda da inovação em TI.

A “Mesh App and Service Architecture” (MASA) refere-se ao design de soluções que combinam aplicações móveis, online, desktop e dispositivos IoT juntamente com seus dados, independentemente de serem para um usuário final ou para fins operacionais, em uma rede de serviços backend para criar o que um usuário vê como uma “aplicação”.

MASA introduz uma nova medida para o design de arquitetura: a complexidade. Qualquer aplicação que escala sem problemas sob uma enorme carga de trabalho pode vacilar sempre que se precisa adicionar uma nova funcionalidade, como uma nova fonte de dados ou publicar outra interface RESTful em um desses avançados interfaces programados em Javascript. Qualquer problema de disponibilidade, latência, exceções ou bugs é imediatamente penalizado pelos usuários, cujos padrões mínimos de qualidade não param de crescer. Somando-se a isso o fato de que os ciclos de desenvolvimento estão cada vez mais curtos, é óbvio por que a complexidade se tornou o novo desafio.

MASA tem sido usada como justificativa para introduzir massivamente a arquitetura baseada em microserviços, mas a razão é equivocada. A arquitetura baseada em microserviços é a combinação linear de aplicações que seguem a clássica arquitetura em três camadas conectadas à mesma rede. É uma melhoria clara, mas não resolve muitas das dificuldades mencionadas.

A arquitetura baseada em microserviços faz um bom trabalho escondendo a complexidade do desenvolvimento do frontend, dado que o backend é separado em partes com funcionalidades específicas. No entanto, cada uma dessas partes pode se tornar complexa por si mesma.

A complexidade não é gerida diretamente, apenas é escondida em níveis mais profundos do backend. Problemas difíceis nem sempre podem ser resolvidos como uma combinação linear de problemas simples, e é exatamente isso que a arquitetura baseada em microserviços propõe.

Há um ano, Nfq decidiu enfrentar esse desafio de gerenciar a complexidade na arquitetura com PALM, e pylm, que é sua implementação em Python. Isso aconteceu mesmo antes de o acrônimo MASA aparecer pela primeira vez.

O objetivo do PALM é gerir a complexidade permitindo que componentes padrão possam comunicar-se através de um fluxo de comunicação mais versátil. Pylm suporta balanceamento de carga, assinatura de filas de mensagens, comunicação por múltiplos protocolos e muitos outros padrões orientados a suportar sem problemas casos que eram raros há poucos anos, mas que agora são requisitos de arquiteturas complexas.

Pylm é software livre (https://github.com/nfqsolutions/pylm), pode ser instalado com um único comando em Windows, Linux e MacOS (pip install pylm), e possui extensa documentação (http://pylm.readthedocs.io). Está maduro o suficiente para ter sido colocado em produção e será um componente chave nos futuros desenvolvimentos da Nfq.

Compartilhe o artigo