Há muita agitação em torno de microsserviços hoje em dia. Eles são a nova febre em arquiteturas de aplicativos e são frequentemente mencionados em conjunto com seus melhores amigos, os contêineres. Uma pesquisa recente conduzida pela InfoQ revelou que ambos estavam no topo da lista de “usando ou planejando usar”, com contêineres (71,79% dos entrevistados) superando por pouco os microsserviços (70,4%). Curiosamente, a mesma pesquisa mostrou que os microsserviços são mais utilizados hoje (32,21%) do que os contêineres (29,44%).
De qualquer forma, parece indiscutível que microsserviços e contêineres são tecnologias que estão no radar da maioria das organizações.
No entanto, como acontece com qualquer mudança significativa nas arquiteturas de aplicativos, há uma mudança comparável na rede, à medida que os serviços de aplicativos e as funções de rede se adaptam para atender às necessidades dessas novas arquiteturas de aplicativos. Isso se deve, em parte, ao fato de que mudanças — especialmente as radicais — nas arquiteturas de aplicativos alteram os padrões de rede e geralmente são acompanhadas por novas linguagens, plataformas da web e os desafios que surgem delas em relação à segurança.
Por exemplo, a mudança do modelo cliente-servidor para o (agora) tradicional aplicativo web de três camadas trouxe consigo não apenas mais uma camada na arquitetura do aplicativo, mas uma camada complementar de infraestrutura projetada para fornecer a escala e o desempenho necessários dos aplicativos na crescente era da Internet. Você deve se lembrar do crescimento repentino de gateways XML, gateways de segurança XML, firewalls XML e outros dispositivos de “rede” relacionados, focados exclusivamente em abordar os desafios decorrentes da (então) nova arquitetura de aplicativo, SOA.
Então, quando a nuvem e os dispositivos móveis começaram a fazer seu impacto ser conhecido, a segurança ganhou destaque e uma série de novas soluções de segurança de rede surgiram. Eles estavam focados em gerenciar e proteger dispositivos móveis, incluindo as redes nas quais esses dispositivos estavam atuando, bem como corretores de segurança de acesso à nuvem. Uma mudança sutil na “rede” ocorreu aqui e ainda é sentida; a expansão da “rede” para incluir, virtualmente, a Internet. A dispersão contínua de aplicativos em vários ambientes sem dúvida será respondida pela rede com uma migração contínua de serviços tradicionalmente vinculados à LAN (particularmente segurança) para a Internet, “como um serviço”.
Hoje, estamos vendo o surgimento de microsserviços e APIs, principalmente RESTful, em arquiteturas de aplicativos. Ao mesmo tempo, a Internet das Coisas e o crescimento explosivo de aplicativos e usuários humanos continuam a impulsionar a necessidade de escala, mas hoje essa escala está focada nas operações.
O resultado é que a rede precisa (e está, em muitos casos) responder com esforços para obter compatibilidade arquitetônica com os aplicativos (serviços) que ela tem a tarefa de dimensionar, proteger e otimizar. Isso significa adotar fatores de forma virtuais e conteinerizados – incluindo nuvem, e ênfase em orquestração e automação. O objetivo hoje é ter modelos, APIs e a capacidade de integração com estruturas e conjuntos de ferramentas que, em última análise, impulsionarão a entrega de aplicativos para produção.
A “rede” está respondendo. APIs são abundantes. Modelos e suporte para outros sistemas de modelos (OpenStack Heat e AWS Cloud Formation Templates, alguém?) estão se tornando comuns, assim como o suporte para tratar a infraestrutura de entrega de aplicativos “como código”.
Essa adaptação não é como as adaptações tradicionais na rede, onde a velocidade e o fluxo de pacotes são essenciais. Esta última adaptação diz respeito à velocidade de provisionamento e aos recursos das APIs como feeds na rede. O foco é concretizar a compatibilidade arquitetônica com a arquitetura do aplicativo, seja ele implantado em uma nuvem pública ou privada (local), como um aplicativo único e monolítico ou um conjunto desacoplado de cem microsserviços.
Não se engane; a rede é impactada – e até mesmo impulsionada – por mudanças nas arquiteturas de aplicativos. Existe uma relação simbiótica entre os dois que não pode ser ignorada, principalmente à medida que avançamos para uma era focada em operações, na qual a coordenação e a cooperação são essenciais para que as empresas entreguem os aplicativos dos quais dependem hoje para ter sucesso e crescer.