Já ouviu falar em arquitetura de microsserviços? É ela que pode estar por trás das pesquisas que você fez em algum e-commerce ou marketplace e das recomendações de produtos que apareceram para você no checkout.
Basicamente, no desenvolvimento de soluções, quando falamos em microsserviços nos referimos a uma construção de módulos de função única com interfaces e operações bem definidas.
Para explicar o tema melhor a você, a seguir, conheça exemplos, entenda as diferenças em relação à arquitetura monolítica, além de vantagens e desafios da arquitetura de microsserviços, como geração de logs, monitoramento e outros.
O que são Microsserviços?
Microsserviços são pequenos serviços independentes oferecidos por um software e que são capazes de se comunicarem usando APIs (Interfaces de Programação de Aplicativos). Em termos práticos, trata-se de uma aplicação construída a partir de componentes ou serviços modulares (ou seja, de um aplicativo que é separado em partes independentes).
Em uma arquitetura de microsserviços, cada serviço é responsável por uma função específica dentro da aplicação. Não apenas isso, mas ele pode ser desenvolvido, implantado, escalado e gerenciado de forma independente.
No entanto, reforçamos que, embora cada um execute um processo separado, todos se comunicam entre si por meio de APIs bem definidas.
Confira alguns exemplos de Microsserviços
Para exemplificar, imagine que você acessou um aplicativo de delivery para pedir uma pizza. Neste app, existe um campo de busca para você procurar mais rapidamente pelo sabor desejado. Assim que escolhe a pizza, aparecem sugestões de sobremesas e de bebidas.
Após selecionar o que deseja, vem a parte do pagamento. Para isso, o sistema pede as suas credenciais de identificação. Você faz o login, é direcionado para o checkout e paga pelo pedido.
Minutos depois você começa a receber as notificações de status do seu pedido até que ele seja entregue. Assim que ele chega na porta da sua casa, você recebe um e-mail pedindo para avaliar a experiência que teve com o app.
Neste exemplo, perceba que vários serviços pequenos foram executados no mesmo app, como:
- Serviço de Autenticação e Gerenciamento de Usuários
- Serviço do Menu
- Serviço de Pedidos e Pagamentos
- Serviço de Roteamento e Entrega
Serviço de Notificações
- Serviço de Análise e Feedback
Como usuário, para você tudo aconteceu de modo fluido, pois um microsserviço conseguiu conversar com outro.
E se você quer um exemplo ainda mais real, então precisa conhecer o caso da Netflix, que tem mais de 500 microsserviços. Para saber mais sobre a arquitetura de microsserviços utilizada pela plataforma, recomendamos o vídeo abaixo, de Josh Evan -, que foi diretor de engenharia na Netflix e hoje é CTO da Datazoom -, filmado durante a QCON San Francisco em 2016:
Qual a diferença dos Microsserviços em relação à Arquitetura Monolítica?
Como o nome sugere, na arquitetura monolítica o desenvolvimento da aplicação é feito como uma unidade única. Além do mais, os componentes e as funcionalidades estão interligados entre si e são implantados de forma conjunta.
Em contrapartida, conforme você acompanhou até aqui, na arquitetura de microsserviços há a divisão em serviços menores e independentes, sendo que cada um tem a responsabilidade de executar uma função específica.
Com relação à implantação, nos microsserviços um serviço não depende do outro. Colocando em outros termos, cada um pode ser implantado independentemente.
Vale destacar também uma importante diferença entre arquitetura monolítica e de microsserviços. Na primeira, normalmente é usada a mesma tecnologia para desenvolver a aplicação, enquanto na segunda podem ser usadas diferentes tecnologias. Isso permite que cada serviço tenha uma tecnologia que melhor lhe atenda.
Microsserviços: vantagens que fazem valer a pena
Agora que você entendeu o que são microsserviços, por que optar por esse tipo de arquitetura? Confira suas principais vantagens:
Agilidade no lançamento
Cada serviço pode ser desenvolvido, testado e implantado em ciclos independentes e menores. Graças a isso, é possível adotar metodologias ágeis e executar rápidas iterações de desenvolvimento.
Alta escalabilidade
Na arquitetura de microsserviços, cada um dos serviços pode ser dimensionado independentemente. Dessa maneira, tem-se um escalonamento individual e mais granular.
Isso garante que a empresa consiga dar uma resposta eficaz a picos de demanda, sem que para isso precise escalar toda a aplicação e desperdiçar recursos em outras partes do sistema.
Facilidade de implantação
Aplicações baseadas em microsserviços são modulares, os que as tornam também menores. Como cada serviço é independente, cada um pode ser implantado isoladamente e sem afetar o sistema como um todo.
Além de tornar mais fácil a implantação, essa característica reduz o risco de necessidades de interrupções no sistema.
Resiliência
A resiliência é “a capacidade de voltar ao estado normal”. Trazendo para a arquitetura de microsserviços, ela refere-se ao fato de que um serviço não afeta o outro. Ou seja, caso haja a falha de um único componente, os demais continuarão funcionando normalmente.
Acessibilidade
Comentamos sobre os ciclos de desenvolvimento menores e do uso de metodologias ágeis, certo? Para os desenvolvedores, os microsserviços trazem a vantagem de permiti-los entender mais facilmente cada parte, para que assim as atualizações sejam feitas com mais rapidez e eficiência.
Mais Open Source
Falando nos desenvolvedores, eles têm a liberdade de escolher as APIs com a melhor tecnologia e com a linguagem mais adequada a cada uma das funções.
Leia também:
E quais são os desafios que a Arquitetura de Microsserviços pode enfrentar?
A arquitetura baseada em microsserviços oferece vantagens, como as que vimos acima. Contudo, ela pode ser complexa e apresentar outros desafios, como:
Geração de logs
Os microsserviços requerem que cada serviço gere seus próprios logs. Se esses logs estiverem espalhados por vários locais, pode ser um desafio rastrear e correlacionar eventos em todo o sistema.
Para resolver isso, é necessário que os logs sejam centralizados.
Depuração
Depuração é o processo de identificar, analisar e corrigir erros ou defeitos em um software. Por conta da natureza distribuída da arquitetura de microsserviços, a depuração é mais desafiadora do que em sistemas monolíticos.
Monitoramento
Com diversos serviços sendo executados, sem uma visão centralizada do sistema fica difícil (ou é mais trabalhoso), monitorar e identificar problemas, além de monitorar o desempenho das chamadas de API e da comunicação entre os serviços.
Conclusão
Nos microsserviços uma mesma aplicação é dividida em tarefas e serviços distintos, sendo que cada um deles é criado de forma independente. Adicionalmente, cada um executa um processo único e geralmente gerencia seu próprio banco de dados.
Conforme explicamos, a comunicação entre cada serviço é feita por uma API. Aqui na Transfeera nós também utilizamos APIs para integrar nossa plataforma de pagamentos.
Nossa API valoriza a retrocompatibilidade, evitando breaking changes e garantindo que nossos clientes sejam comunicados com transparência sobre as possíveis mudanças. Além disso, possuímos os principais certificados de segurança, práticas internacionais do CIS (Center for Internet Security) e estamos de acordo com as regras do Banco Central do Brasil.
Clique aqui, conheça mais sobre as APIs da Transfeera, acesse a documentação, solicite acesso ao Sandbox e peça uma demonstração.