Você está na página 1de 4
Arquitetura de micro servicos em Node.js + MongoDB Até o presente momento eu jd escrevi alguns artigos aqui no blog sobre a arquitetura de micro servicos (microservices architecture), uma proposta de arquitetura antagonica aos tradicionais monolitos, ou grandes blocos de software que sao o tipo mais comum de arquitetura presente atualmente nas empresas. Eu jé estudava e gostava bastante deste modelo de arquitetura, que nao ¢ exatamente nova mas uma releitura de arquiteturas passadas, mas depois de passar a trabalhar no Agibank e ver os ganhos que temos com esta abordagem no dia-a-dia eu realmente fui convertido em um evangelista de micro servigos nas empresas. ® Resumidamente um micro servico ¢ uma API, um backend que responde a uma tinica ¢ exclusiva fungao, pautado no classico SRP do SOLID (Single Responsibility Principle — Principio da Responsabilidade Unica). Cada micro servigo é independente dos outros ¢ nao possui qualquer tipo de dependéncia, tendo até mesmo a sua prépria base de dados e servidor web em muitos casos, uma vez que esse é 0 tinico cenario real de 100% independéncia. Obviamente sendo to “micro” em sua responsabilidade, pouco se faz com apenas um microservice em um sistema inteiro, assim, é na chamada a multiplos micro services que os comportamentos dos sistemas complexos séo construidos, pautados em. principios como tolerancia a falhas, containerizacao e escala horizontal. A Amazon é um simbolo desta proposta uma vez que alegam ter mais de 100 micro servigos sendo chamados durante a exibigdo de suas paginas de produtos no site Amazon.com. Outro {cone desta abordagem é a Netflix, que tem um servico responsavel por tentar derrubar seus micro servicos de maneira aleatéria para testar sua resiliéncia, tolerancia 4 falhas e interdependéncia entre eles. E por fim, temos os testes e o deploy. £ incrivelmente mais facil ter uma cobertura de testes unitdrios automatizados que garantam o funcionamento de um sistema completo se eu tiver quebrado ele em micro-pedagos, assim como o deploy, que se torna bem menos oneroso e mais dgil neste contexto, podem fazer implantacao de microservices de maneira independente desde que os contratos sejam mantidos intactos ou através de um sistema rigoroso de versionamento e APIs. Ok, mas esta teoria eu ja falei em outras oportunidades aqui no blog, certo? Mas como se cria um microservice na pratica? ‘Aideia deste artigo é justamente é essa, mostrar como vocé cria um microservice profissional usando a plataforma do Nodejs, uma das mais utilizadas neste tipo de abordagem (Netflix, LinkedIn, PayPal, etc). Em Java voce poderia fazer algo semelhante também, usando Spring Boot, mas deixo isso para outra oportunidade. Vocé vai ver: 1. Por que Nod: 2. Por que MongoDB? 3. © que nao abordarei? 4, Case de exemplo: cinema Vamos la! Curso Node.js e MongoDB #1 - Por que Node.js? Lembra quando falei que a ideia é que o micro servigo seja independente do restante da aplicagao? Pois é, uma das coisas que te garante independéncia é ter microservices rodando de maneira standalone, ou seja, em suas préprias plataformas. Rodar microservices em Node,js permite que cada um deles tenha a sua prépria instancia de Node sem que isso pese muito no custo da empresa, uma vez. que rodar Node é extremamente barato. Além de ser extremamente répido de criar servicos standalone em Node, seja a partir do classico exemplo de servidor em 12 linhas que esta no site oficial ou usando web frameworks como ExpressJS (meu favorito). Caso nao esteja familiarizado com Nodejs, ExpressJS ¢ cia., recomendo ler os outros posts aqui do blog ou meu livro. #2 - Por que MongoDB? Idealmente cada servigo tem o seu préprio banco de dados, para que seja realmente independente dos demais. Sendo o dominio de aplicagao extremamente enxuto, 0 banco de dados do microservice também o sera. Uma coisa que eu acho extremamente positiva no uso de microservices com bancos independentes, principalmente em empresas que usam métodos Ageis, é que cada servico pode ter a tecnologia de banco de dados mais adequado para sua funcao. Assim, um microservice de catdlogo de produtos pode usar MongoDB, enquanto que no mesmo sistema, o microservice de pagamento pode usar um SQL Server, enquanto que 0 sistemas estatisticos da empresa estdo em um Cassandra. Obvio que manter uma estrutura dessas em pé requer um time de engenharia forte, mas esse tipo de liberdade permite que os servicos sejam 0 mais eficiente possiveis e que os times que trabalham neles nao fiquem presos a uma tinica suite tecnoldgica, sendo auténomos e auto-organizados como o agil prega. Neste contexto, MongoDB é uma excelente opgao na minha opinido, uma vez que sua natureza jé prega a independéncia dos dos documentos mesmo entre as colecdes do mesmo banco. Assim, conseguimos criar bancos poderosos, que escalam muito bem horizontalmente (um requisito muito comum em abordagens de micro servigos) e ao mesmo tempo simples, geralmente tendo uma colesdo apenas. Eu particularmente sou suspeito pra falar (afinal sou autor de livros sobre ambas plataformas), mas acho que Node e Mongo tem um fit absurdamente bom para compor solugGes. Se vocé nao sabe nada de MongoDB, sugiro ler os outros posts sobre © assunto aqui no blog ou o meu livro. Curso Node.js e MongoDB #3 — O que nao abordarei? Nao falarei de DevOps aqui e consequentemente de deploy, CI, CD, etc. Quero me ater ao desenvolvimento do micro servico sem ter de explicar Docker, API Gateway, etc. Nao falarei de front-end aqui. Ok, isso é meio ébvio, mas realmente nao teremos interface grafica neste tutorial. Primeiro porque nao é meu intuito, segundo que ndo sou reconhecido pelos meus talentos com frameworks front-end. ®@ Nao falarei dos princfpios de desenvolvimento de web APIs RESTful, o que sugiro que vocé busque em outros materiais aqui do blog ou em meu livro de Programagao Web com Nodes. Mas sim, usaremos estes principios ao longo deste artigo. Nao falarei de versionamento ou documentagao de APIs também (Swagger por exemplo). #4 - Case de Exemplo: Cinema Imagine que vocé esté trabalhando no departamento de TI de uma grande rede de cinemas (ideia nen um pouco original, admito) que deseja refatorar todo 0 seu sistema de bilheteria e bomboniere de um gigantesco monolito para uma arquitetura de micro services. Como essa empreitada seria enorme para ser discutida apenas em um artigo de blog, vamos focar aqui no servico de filmes, dentro da arquitetura abaixo. Arquitetura de Micro servicos - Cinema Note que temos as responsabilidades jé separadas neste desenho, dando um exemplo real de uma arquitetura usando micro servicos. Enquanto que em uma estrutura monolitica tradicional teriamos algo como um tinico webservice para o sistema de cinema inteiro (quem nunca fez um api.empresa.com na sua carreira?) ou no maximo

Você também pode gostar