Entenda tudo sobre o conceito de Arquitetura de Microsserviços que pode tornar o seu produto digital mais flexível.
Arquitetura de software explica como um produto digital será organizado, incluindo questões como o comportamento dessa estrutura e quais componentes são responsáveis por realizar um conjunto específico de funções. Esse momento é crucial para o desempenho e escalabilidade do que está sendo desenvolvido. Microsserviço é uma abordagem de arquitetura.
Ralph Johnson
“Arquitetura são as decisões que você gostaria de poder acertar no começo de um projeto.”
A arquitetura do seu sistema não é apenas uma decisão tecnológica, é também organizacional e de escala. Toda empresa busca crescer de forma sustentável para que viva por muito tempo, com investimentos assertivos que tragam retorno e é essencial entender o seu negócio, já que alcançar os resultados organizacionais também é diminuir a dívida técnica.
Microsserviços não é um assunto novo, porém, com as ferramentas e demandas atuais, está em alta, por possibilitar colocar em prática com maior eficácia ideias capazes de inovar e escalar seu negócio. Saiba mais sobre arquitetura de microsserviços, boa leitura!
O que são os Microsserviços?
Microsserviços são uma abordagem arquitetônica, com aplicações distribuídas e levemente acopladas para que as mudanças de uma equipe não corrompam toda a aplicação.
A vantagem de usar microsserviços é que as equipes de desenvolvimento conseguem criar rapidamente novos componentes de aplicação para atender às necessidades de negócios em constante mudança
São componentes criados de maneira separada, que trabalham juntos para realizar as mesmas tarefas, ou seja, cada um dos componentes ou processos é um microsserviço que se comunica entre si.
Diferença entre microsserviços e monólitos
Uma arquitetura de microsserviços é uma abordagem para desenvolver aplicações por um conjunto de serviços, são implementados de forma independente e modelados em torno de um domínio. Nela, cada módulo funciona pelo seu próprio processo e pode se comunicar entre si, por redes, assim sua base é formada de vários microsserviços colaborando entre si.
Já uma arquitetura em monólitos, representa um sistema único, não divido, que roda em um processo unitário, ou seja, é uma aplicação de software em que diferentes componentes estão ligados a um único programa dentro da mesma plataforma.
É sobre independência e fila. Por exemplo, se um restaurante fosse construído em microsserviços, você poderia entrar em uma fila para cada “operação”, ou seja, uma fila para bebidas, uma para comida, outra para pagar a conta e assim por diante.
Para que tudo isso seja servido na sua mesa, as filas precisam se comunicar, mesmo que cada uma funcione de maneira independente. Por isso, se você não receber a bebida por existir alguma falta na cozinha, ainda assim a sua comida chegará normalmente.
Já a arquitetura de monólitos, haveria apenas uma fila para a comida, suco, pagamento, etc. Porém, se a operação de pagamento, por exemplo, deixa de funcionar, toda a fila também para. Em momentos de pico, imagine a experiência negativa que geraria para o seu cliente se ele quiser tomar apenas um suco.
Se você estiver em um restaurante pequeno onde a fila é proporcional, consertar esse erro (bug) não deve ser difícil. Agora, quanto maior e mais complexo a sua operação, mais difícil fica consertar ou incrementar novas receitas, ou drinks no seu restaurante.
Entenda as vantagens e desvantagens de cada arquitetura
Microsserviços | |
Vantagens | Desvantagens |
Exigem menos tempo de produção | Podem ser granulares |
Escalam rapidamente | Latência durante uso intensivo |
Menor tempo de produção | Se usado onde deveria ser um monólito, cria uma complexidade desnecessária |
Atividades complementares na nuvem | |
Pode ser reutilizados em outros projetos (biblioteca de ativos) | |
Se algo quebra, não compromete o sistema inteiro |
Monolito | |
Vantagens | Desvantagens |
Fácil de testar | Como é um único código, se algo quebra, todo o sistema é comprometido |
Ambiente mais simples | Difícil de escalar |
Subir rapidamente uma PoC ou MVP para validar um negócio ou produto | É pouco flexível sobre as linguagens do sistema |
Topologia de implantação mais simples. |
E então, quando usar o microsserviços?
Depende do contexto! O monolito fica insustentável em determinadas situações, enquanto o microsserviço pode ser complexo demais em certos projetos. Imagine o ifood na Black Friday, que se preparou para uma grande promoção e recebeu 2,5 milhões de pedidos no mesmo dia.
O número foi bem alto, não? Com um back-end baseado em microsserviços, o aplicativo do permitiu que essa ação fosse executada sem nenhum problema de fila para os usuários. Muitas pessoas realizaram a compra ao mesmo tempo, e foi possível garantir uma ótima experiência.
Se o ifood fosse em monolito e, pela sobrecarga de pessoas, alguma parte dele parasse de funcionar, o app inteiro ficaria travado, afetaria as vendas, gerando uma experiência negativa com a marca e todo o seu investimento seria em vão. Com certeza, nem alcançaria um número tão significativo de vendas.
Uma boa solução é escalar somente a parte que pode sofrer maior sobrecarga com microsserviços, enquanto as outras seguem como estão, até que surjam novas demandas. É dividir para conquistar!
Você também pode integrar as duas arquiteturas em um só projeto
Tudo é possível na tecnologia, inclusive a união de microsserviços e monólitos! Essa é uma ótima solução para quem já tem um sistema monolítico e quer migrar para microsserviços, é possível ir segmentando as aplicações gradualmente. Assim, não é necessário reescrever o projeto inteiro.
Se pensarmos o monolito como um ajudante geral, alguém que é encarregado de muitas coisas, o microsserviço seria um operador de máquina, logo, um especialista no que faz. No código, identificamos os pontos críticos do projeto em monolito e os transformamos em especialistas (microsserviços).
O que nunca pode parar no seu projeto? Por exemplo, em toda a comunicação via e-mail, é possível ter um código isolado e muito especialista apenas para essa parte, o que também facilita a manutenção.
Outro ponto importante é que quando temos um microsserviço especialista, é possível acoplar ele a qualquer outro projeto já que é genérico, ou seja, você pode usar em qualquer outro sistema que necessite dessa funcionalidade, otimizando tempo de desenvolvimento e gera reaproveitamento de código.
Não existe bala de prata na tecnologia
“O propósito do desenvolvimento de software é gerar um impacto positivo no negócio” – Dan North, inventor do Behaviour-Driven Development (BDD).
A arquitetura de microsserviços oferece diversas vantagens e maior escalabilidade, mesmo assim não é uma bala de prata ou um solucionador mágico dos problemas de desenvolvimento, você precisa conhecer a realidade da sua empresa agora e entender se é realmente a melhor solução.
Uma boa arquitetura de software deve dizer a intenção do sistema e estar preparada para atender o objetivo de negócio, dado que o software precisa ser passível de incrementação, evolução e escalabilidade. Por isso, a arquitetura deve ser orientada a negócios.
Fez sentido para você? Acha que está na hora de mudar o seu sistema monolito para uma arquitetura de microsserviços? Veja como podemos te ajudar a desenvolver seu produto digital