Primeiro foram os aplicativos em todos os lugares, para tudo , depois foram os microsserviços (e as tecnologias de contêiner que os possibilitam). Qual é a próxima inovação que ajudará a proporcionar uma experiência de usuário excepcional por meio de aplicativos? Malha de serviço.
A abordagem de microsserviços depende de componentes pequenos e de propósito único que são usados para formar aplicativos maiores e mais complexos. Você pode criar um microsserviço para praticamente qualquer coisa e, como cada um se concentra em uma única capacidade, eles são relativamente rápidos de desenvolver. No entanto, quanto mais recursos você deseja, mais complexo se torna coordenar os componentes do microsserviço.
Os aplicativos tradicionais (às vezes chamados de aplicativos monolíticos) são mais lentos de desenvolver, mas têm vantagens. Como muitas funções separadas são executadas por um único programa, a coordenação entre os componentes geralmente é incorporada ao sistema. Há apenas uma única fonte de código, o que torna os aplicativos tradicionais mais fáceis de solucionar problemas e depurar.
Uma malha de serviços é uma camada transparente de infraestrutura que facilita a comunicação entre microsserviços . Isso dá aos aplicativos criados com microsserviços as mesmas vantagens de um aplicativo tradicional — coisas como resiliência, observabilidade e segurança.
A mudança de monólito para microsserviços foi motivada principalmente pela necessidade de as equipes de aplicativos serem mais ágeis e executarem mais rapidamente. Reduzir um aplicativo grande em muitos elementos pequenos permitiu que equipes individuais se especializassem. Isso permitiu que eles iterassem mais rápido do que conseguiriam quando precisavam se preocupar com cada aspecto do monólito.
No entanto, essa velocidade e agilidade têm um preço: maior complexidade. Os microsserviços simplificam o desenvolvimento, mas introduzem novos desafios, especialmente em relação à proteção e orquestração de múltiplos componentes efêmeros. A malha de serviços é uma maneira dos desenvolvedores aliviarem a complexidade à medida que os aplicativos habilitados para microsserviços aumentam .
Em um podcast recente , Andrew Jenkins, cofundador e CTO da Aspen Mesh , colocou desta forma: “Em um ambiente de malha de serviço, a maior mudança não está no que os desenvolvedores de aplicativos precisam fazer, mas em todas as coisas que eles não devem fazer”. Por exemplo, o componente de segurança de uma malha de serviço fornece autenticação e gerencia se um aplicativo confia em outro. Quando uma solicitação falha, o operador da plataforma tem as ferramentas para definir se o microsserviço será tentado novamente ou será desativado.
Nesse novo ambiente, os desenvolvedores podem se concentrar em levar as solicitações até a camada de malha de serviço. O operador da plataforma — com acesso a ferramentas que observam todas as comunicações entre microsserviços — é capaz de oferecer ao desenvolvedor do aplicativo uma gama totalmente nova de dados e métricas. “Em uma malha de serviço, você só precisa consertar essa quebra em um lugar e ela será consertada em todos os lugares. Essa mesma história de consistência aparece repetidamente”, diz Jenkins.
Pense na malha de serviço como uma nova e poderosa caixa de ferramentas. Existem ferramentas para segurança, processamento de transações, criptografia, mecanismos de recomendação, rastreamento distribuído... a lista continua. Mas ferramentas poderosas não vão te ajudar se você não souber como usá-las. Os primeiros usuários bem-sucedidos da malha de serviços precisam de uma prática sólida de arquitetura de nuvem e de uma equipe de plataforma com experiência na definição de serviços de infraestrutura para desenvolvedores.
Muitas organizações estão executando com sucesso o Kubernetes e outras tecnologias de contêiner sem uma malha de serviço. Implementações padrão do Kubernetes abordam muito bem problemas de implantação integrados. No entanto, em grande escala, os aplicativos Kubernetes desenvolvem problemas de tempo de execução que não são tão bem abordados — coisas como criptografia, interrupção de circuito e roteamento de tráfego dinâmico. Soluções como NGINX e outras soluções de entrada de contêiner preenchem grande parte dessa lacuna, fornecendo meios para capturar, moldar, controlar e visualizar o tráfego de rede conforme ele chega em um aplicativo. Mas quando os desenvolvedores começam a atingir o limite do que essas ferramentas podem oferecer, a malha de serviços promete um novo nível de visibilidade sobre o que os microsserviços em contêineres podem fazer.
Atualmente, o service mesh ainda é de ponta. Para organizações que já estão totalmente comprometidas com o Kubernetes ou que planejam desenvolver com o Kubernetes, será mais fácil implementar uma malha de serviços logo no início do que integrá-la mais tarde. Se você estiver dimensionando o Kubernetes e quiser minimizar a sobrecarga de gerenciamento, precisará de uma malha de serviços.
Para organizações com necessidades de segurança complexas ou que dependem fortemente de aplicativos derivados de microsserviços, uma malha de serviços pode acelerar a implantação e a manutenção, reforçar a segurança e ajudar a otimizar o consumo de recursos. Ambientes de malha de serviço aumentam a visibilidade, fornecendo dados de nível micro e macro que podem ser usados para otimizar aplicativos.
A malha de serviços é o próximo nível de avanço para microsserviços e tecnologias de contêineres. Com a estratégia certa, pode ser uma ferramenta poderosa.