O que é uma arquitetura de microsserviços?
Arquitetura de microsserviços se refere a uma técnica que fornece aos desenvolvedores modernos uma maneira de projetar aplicativos flexíveis e altamente escaláveis, decompondo o aplicativo em serviços distintos que implementam funções de negócios específicas. Esses serviços, muitas vezes chamados de "fracamente acoplados", podem ser construídos, implantados e escalonados de forma independente.
Cada serviço se comunica com outros serviços, por meio de interfaces de programação de aplicativos (APIs) padronizadas, permitindo que os serviços sejam escritos em diferentes linguagens ou em diferentes tecnologias. Isso difere completamente dos sistemas construídos como estruturas monolíticas onde os serviços estavam completamente interligados e só podiam ser escalados juntos.
Como cada serviço tem uma funcionalidade limitada, é muito menor em tamanho e complexidade. O termo microsserviço vem desse design de funcionalidade discreta, não de seu tamanho físico.
Por que uma arquitetura de microsserviços?
A arquitetura de microsserviços cresceu em popularidade porque suas características modulares levam à flexibilidade, escalabilidade e redução do esforço de desenvolvimento. Sua flexibilidade de implantação e o aumento das opções de implantação de função como serviço e sem servidor nativas da nuvem (como AWS Lambda e Microsoft Azure Cloud Functions) criaram o ambiente perfeito para os microsserviços florescerem no cenário de TI atual. Essas plataformas de nuvem permitem que microsserviços e funções sejam escalonados de inatividade para alto volume e vice-versa, enquanto os clientes pagam apenas pela capacidade de computação que usam.
Como as empresas buscam continuamente ser mais ágeis, reduzir gargalos e melhorar os tempos de entrega de aplicativos, a popularidade da arquitetura de microsserviços continua crescendo.

Benefícios de uma arquitetura de microsserviços
- Os componentes do aplicativo podem ser construídos em diferentes linguagens de programação
- Fluxos de desenvolvimento e implantação contínuos individuais podem ser sustentados
- Aplicativos extremamente escaláveis podem ser construídos
- O uso de opções de implantação nativas da nuvem para função como serviço é possível
- Os custos operacionais mais baixos geralmente dão resultado
- O isolamento e o acoplamento flexível permitem atualizações e aprimoramentos compartimentados
Exemplo de casos de uso de arquitetura de microsserviços
- Adote opções de implantação nativas da nuvem: aproveite as funções sem servidor e função como serviço para operações mais eficientes e escalonáveis.
- Migre a funcionalidade de aplicativos legados: decomponha serviços de grandes aplicativos monolíticos para que possam ser mantidos e dimensionados de forma independente.
- Aproveite a arquitetura moderna de aplicativos: adote padrões de aplicativos de microsserviços orientados a eventos e livremente acoplados, com a capacidade de aproveitar diferentes linguagens de programação, dependendo das necessidades do caso de uso. Por exemplo, vá para funções pesadas de computação, Node.js para aplicativos da web rápidos, etc.
O que é DevOps e por que ele costuma estar associado a microsserviços?
DevOps pode ser explicado como uma ideologia centrada em ferramentas. Essencialmente, as ferramentas / tecnologia são usadas para simplificar o trabalho que precisa ser feito pelos desenvolvedores. Junto com ferramentas aprimoradas, a cooperação entre as equipes de operações e de desenvolvimento ajuda a conduzir os projetos a serem concluídos com mais rapidez e eficiência.
Por exemplo, digamos que você esteja construindo um aplicativo que permite que os usuários verifiquem seus saldos de contas. Muitas vezes, no passado, o ciclo de desenvolvimento de aplicativos fazia com que os desenvolvedores criassem o aplicativo e depois o entregassem à equipe de operações sem responsabilidade pelo resultado final; Era trabalho da equipe de operações fazer com que funcionasse. Em um ambiente de DevOps mais coeso, os dois lados trabalham juntos. Um desenvolvedor seria o proprietário do ciclo de vida do aplicativo do início ao fim, o que significa, por exemplo, estar de plantão durante o lançamento. A comunicação consistente entre os dois grupos é necessária para garantir que tudo seja bem-sucedido e que você obtenha os benefícios do DevOps (velocidade de lançamento no mercado, ciclo de desenvolvimento mais fácil, mais responsabilidade, etc.).
O novo modelo de fluxo de trabalho DevOps cria uma grande mudança cultural. Apenas usar novas ferramentas não torna um plano de DevOps bem-sucedido. No mínimo, novas ferramentas podem inibir o sucesso se fizerem com que você acredite indubitavelmente que tudo será implementado de maneira adequada.
Devido à natureza dos microsserviços, frequentemente é necessário ter processos fortes de DevOps para a implantação. O aumento do uso de ferramentas e práticas compartilhadas mais fortes evitam que as equipes sejam sobrecarregadas por todas as peças pequenas e móveis. Você reduz a interrupção ou carga dessa mudança enquanto continua a receber os benefícios.

O futuro: microsserviços orientados a eventos, computação sem servidor e FaaS
Quando as pessoas começam a experimentar microsserviços, geralmente usam técnicas familiares como padrão, por exemplo, APIs RESTful . REST opera em um tipo de comunicação tipo solicitação-resposta. O problema com essa abordagem síncrona é que você precisa esperar por uma resposta; os serviços tornam-se dependentes uns dos outros. Se um serviço estiver executando mais lentamente ou não responder, isso significa que o serviço que o chamou será executado mais lentamente ou falhará. Esse acoplamento pode significar a perda de alguns dos benefícios de uma arquitetura de microsserviços, criando uma estrutura mais interdependente semelhante a um estilo de arquitetura orientada a serviços (SOA).
Se você projetar seus serviços usando um modelo orientado a eventos, poderá garantir que partes de seu aplicativo continuem funcionando, enquanto outras partes podem não estar envolvidas, ao invés de todo o aplicativo deixar de responder. Veja a Netflix como exemplo. Ocasionalmente, você pode notar que o botão “continuar assistindo” não aparece. Isso ocorre porque um serviço específico não está disponível. No entanto, isso não significa que todo o serviço da Netflix pare. Os usuários ainda podem procurar programas e assistir a pré-visualizações, portanto, outros aspectos do serviço Netflix ainda estão disponíveis, embora um serviço possa não estar.
Os desenvolvedores que adotam totalmente uma abordagem de microsserviços percebem que a verdadeira escalabilidade é habilitada com acoplamento flexível e arquitetura orientada a eventos . Um serviço pode ser assíncrono, executando uma ação, transmitindo uma mensagem e continuando com sua função principal sem ter que esperar por uma resposta de outro serviço.