A arquitetura de microsserviços é uma abordagem de desenvolvimento, cuja ideia é “fazer apenas uma coisa e fazê-la bem”. Ou seja, em vez de construir uma aplicação em forma de monolito, é feito um desmembramento dos serviços em partes menores. Os benefícios dessa arquitetura são alta escalabilidade, resiliência, facilidade de implantação e aumento na eficiência da manutenção dos sistemas.
Por conta da pandemia do novo coronavírus, a transformação digital deixou de ser um diferencial, para se tornar uma questão de sobrevivência nas empresas. Portanto, quando pensamos no desenvolvimento de software é importante que eles sejam feitos de forma ágil, sem deixar de lado a entrega de valor para o cliente, além de possibilitar atualizações e a implementação de novas features com facilidade.
Nesse artigo, vamos entender melhor como os micro serviços se organizam, quais são as camadas que compõe a definição do ecossistema e como cada parte acaba se relacionando, de acordo com Susan J. Fowler. Além disso, você confere também um case de aplicação prática da arquitetura de microsserviços com o open banking!
- O ecossistema da arquitetura de microsserviços
- Benefícios da arquitetura de microsserviços
- Open Banking e microsserviços: aplicabilidade
O ecossistema da arquitetura de microsserviços
Existem alguns itens que são fundamentais para o sucesso das operações dos microsserviços. São eles:
- Estabilidade;
- Escalabilidade;
- Padronização;
- Alta tolerância a falhas;
- Infraestrutura confiável.
Atualmente, existem vários modelos de como um ecossistema de microsserviços pode ser organizado.
Um deles, que é interessante e bem estruturado, foi criado por Susan J. Fowler, uma engenheira de software americana. Em seu livro intitulado Production-Ready Microservices, Susan divide o ecossistema de microsserviços em quatro camadas, sendo elas:
- Hardware;
- Comunicação;
- Plataforma de aplicações;
- Microsserviços.
Apesar dessas camadas estarem interligadas, estabelecer essa divisão nos ajuda a entender melhor quais são as responsabilidades de cada uma e os diferentes módulos que compõem o ecossistema da arquitetura de microsserviços. Abaixo, você confere em detalhes cada uma dessas camadas.
Arquitetura de microsserviços: Hardware
Os hardwares são os computadores e equipamentos nos quais os microsserviços são armazenados e executados. Estes servidores podem estar dentro da empresa, ou ainda pertencerem a provedores de infraestrutura em nuvem, como o Amazon Web Services, o Google Cloud Platform ou o Windows Azure.
Você ainda pode optar por algumas soluções que visam diminuir a dificuldade de se gerenciar estes equipamentos, com a adoção de tecnologias de conteinerização e clusterização para o armazenamento dos microsserviços.
É importante que esses servidores tenham mecanismos de monitoramento e logging para, por exemplo, identificar problemas de falhas de disco, rede ou processamento. Isso porque, em um ecossistema de grande diversidade e dinamismo, é importante ter à disposição ferramentas para que você possa avaliar a saúde das máquinas que operam esses microsserviços, além de manter o histórico dessas informações.
Assim, eventuais problemas podem ser rapidamente identificados e resolvidos, uma vez que são facilmente detectados e rastreados. Além disso, um mecanismo de monitoramento bem estruturado permite que seja possível acompanhar o impacto que a evolução das aplicações provoca na infraestrutura como um todo.
Arquitetura de microsserviços: Comunicação
A comunicação engloba todo o conjunto responsável por permitir a interação entre os microsserviços na aplicação. Ela é composta por elementos chave como os endpoints de API, Service Discovery, Service Registry e Load Balancers.
Endpoints de API
Em uma API de microsserviços, os endpoints são os pontos pelos quais toda a comunicação externa acontece. É nesses endpoints que o microsserviço envia e recebe informações de outros microsserviços ou aplicações.
Service Discovery e Service Registry
Em um ecossistema de microsserviços executados em nuvem, as configurações de rede mudam dinamicamente, de acordo com as características de escalabilidade, falhas e atualizações.
Em um cenário dinâmico, é necessário ter mecanismos que mantenham a localização mais recente e atualizada de cada serviço, assim quando for necessária a comunicação o Service Discovery fará essa busca. Este gerenciamento é um ponto importante, que demanda muita atenção na configuração de um ecossistema de microsserviços.
Load Balancer
Os balanceadores de carga são os responsáveis por rotear as requisições que vêm dos clientes para as instâncias do microsserviço requisitado, garantindo que nenhum servidor seja sobrecarregado, maximizando a velocidade e a capacidade de execução.
Se a instância de um determinado microsserviço cair, o balanceador de carga para de rotear requisições de clientes para esta instância. Da mesma forma, quando uma nova instância estiver disponível o balanceador começa a repassar requisições para ela automaticamente.
Arquitetura de microsserviços: Plataforma de aplicações
A plataforma de aplicações, que é a terceira camada, engloba todas as ferramentas que são independentes de um microsserviço. Essas ferramentas devem ser construídas e dispostas de forma que o time de desenvolvimento não tenha que se preocupar com nada além da lógica da própria aplicação.
Adotar padrões nos processos de desenvolvimento, utilizando repositórios de código, como por exemplo, GitHub, Bitbucket e mirroring de ambiente de produção são eficientes para manter a base de código organizada e simular todas as dependências que a aplicação terá quando for ao ar. Além disso, builds centralizados e automatizados com integração e deploys contínuos são essenciais.
Dependendo do tamanho da sua aplicação e do número de microsserviços que ela possui, dezenas de deploys podem ocorrer diariamente. Por isso, é importante que as ferramentas sejam configuradas corretamente para que possam:
- Executar testes de forma automatizada;
- Adicionar novas dependências conforme necessário;
- Preparar os releases à medida que novas versões são codificadas.
Por último, um mecanismo de log centralizado com monitoramento a nível de microsserviço é crucial para entender os eventuais problemas que podem ocorrer no serviço implementado.
Pensando que é da natureza dos microsserviços sofrer alterações constantes, os logs permitem a verificação do que aconteceu no sistema em um momento específico. O monitoramento, por sua vez, é utilizado para checar a saúde e status de um serviço em tempo real.
Microsserviços
A ideia é que os microsserviços sejas totalmente abstraídos dos demais componentes que mencionamos acima. Ou seja, eles não podem ter contato com as especificidades de hardware, service registry, service discovery, balanceamento de carga e processos de deploy, por exemplo.
A camada de microsserviço é composta apenas pelo código e pelas configurações específicas que devem ser aplicadas sobre ele, para que seja possível entregar as funcionalidades que foram idealizados para os microsserviços.
De maneira geral, este é um modelo de ecossistema da arquitetura de microsserviços. Para serem aplicados em projetos reais, você vai precisar se aprofundar em cada uma das camadas, tendo sempre em mente que esse tipo de arquitetura possui componentes muito dinâmicos, que estão em constante aprimoramento.
Benefícios da arquitetura de microsserviços
Agora que você já sabe como construir um ecossistema em 4 camadas para a arquitetura de microsserviços, confere abaixo uma lista com os principais benefícios que esse tipo de arquitetura pode trazer para o desenvolvimento dos seus softwares.
Heterogeneidade Tecnológica
Como os microsserviços tem baixo acoplamento, é possível adotar tecnologias específicas para cada trabalho. É o mesmo exemplo que citamos na camada 3, plataforma de aplicações, nas quais você pode optar pelas melhores opções de comunicação sem que isso interfira tão diretamente no desenvolvimento dos códigos dos microsserviços em si.
Seguindo essa mesma lógica, também é possível adotar novas tecnologias mais rapidamente e com menores riscos.
Facilidade de implantação
Como os microsserviços são muito dinâmicos, independentes e podem ser constantemente atualizados, a implementação também acaba sendo mais simples e ágil. Isso permite que as novas funcionalidades sejam disponibilizadas para os usuários com mais rapidez.
Capacidade de composição
Como os serviços são independentes e autônomos, é possível que eles sejam utilizados para compor outros sistemas. Dessa forma, as funcionalidades podem ser “emprestadas” para outros negócios totalmente diferentes do projeto original.
Substituição de código
Como os serviços são pequenos, esta arquitetura diminui o risco e o custo de substituição total da base de código.
Open Banking e microsserviços: aplicabilidade
O open banking, é uma iniciativa global, que tem como objetivo descentralizar a posse das informações financeiras, permitindo que os titulares possam autorizar o compartilhamento de seus dados com outras instituições financeiras.
No Brasil, definido como uma norma regulatória pelo Banco Central (BC), a implementação desse modelo está na primeira fase e a expectativa é que a quarte a última fase do projeto seja finalizada até dezembro de 2021.
O compartilhamento desses dados será realizado por meio de APIs abertas, que farão essa “ponte” entre as instituições financeiras, claro, mediante a autorização dos clientes.
Mas, como o open banking e a arquitetura de microsserviços se relacionam? A resposta é bem simples: a arquitetura de microsserviços é a melhor opção para a construção da API open banking.
Isso porque as características de resiliência, associadas à possibilidade de automação oferecem uma solução ideal para atender às exigências de disponibilidade ininterrupta impostas pela regulação. O ideal é que a solução seja construída para suportar uma demanda crescente, alocando dinamicamente recursos computacionais (e seus custos correspondentes) apenas no nível necessário para atender as demandas.
Além disso, a tendência é que com o open banking, os serviços se tornem ainda mais categorizados. Isso porque, novos modelos de negócio e aplicativos podem surgir e é natural – e até mais vantajoso – que essas APIs sejam independentes, facilitando a atualização, manutenção, escalabilidade, evitando atrasos, lentidão e alteração no tempo de resposta, para respeitar as exigências do Banco Central.
Até mesmo porque, um dos objetivos do Open Banking Brasil é justamente tornar o mercado financeiro mais competitivo, ampliando as ofertas de serviço e melhorando a experiência do cliente. Ou seja, essa não é uma mera questão regulamentária, mas sim uma oportunidade de inovação e crescimento para muitas empresas do setor.
Pensando nisso, a OPUS desenvolveu uma solução pronta, o OPUS Open Banking, que implementa um middeware no ambiente de instituições financeiras, instituições de pagamento e demais participantes do sistema, permitindo que se integrem ao open banking Brasil de maneira 100% aderente à regulamentação do Banco Central. Quer saber mais? Acesse!