-
Notifications
You must be signed in to change notification settings - Fork 0
1. Introdução
Em aplicações monolíticas, todos os recursos e funcionalidades oferecidos estão em uma base de código unitária e indivisível. As dificuldades com este tipo de aplicação surgem quando o software precisa evoluir. Modificar e atualizar o código base a fim de incorporar novos serviços e funcionalidades à estrutura existente pode ser complexo e inviável, pois pequenas alterações podem gerar impactos negativos em outras áreas da aplicação.
Como contraponto a aplicação monolítica temos a arquitetura de micro serviços, em que a base de código unitária é fragmentada em componentes de serviços que realizam tarefas específicas, como se fossem uma aplicação autônoma. Os microsserviços encapsulam responsabilidades, são reutilizáveis, comunicam entre si usando protocolos como o HTTP e interagem de forma colaborativa. Com os microsserviços podemos desenvolver sistemas mais eficientes, escaláveis e flexíveis em menor tempo. Estes microsserviços operando em conjunto formam a arquitetura da aplicação.
Os microsserviços são disponibilizados por meio de APIs, usualmente através da rede. A arquitetura amplamente adotada no mercado atualmente é a API REST. Não obstante, há a API gRPC desenvolvida pela Google, uma estrutura mais moderna de conectar serviços que julgamos bastante promissora.
Este artigo aborda os fundamentos das duas arquiteturas, compara suas características destacando as vantagens e desvantagens de ambas, e avalia alguns cenários nos quais seria mais conveniente usar uma ou outra.
Éder Marques - @earmarques - [email protected]
All rights reserved - Distributed above GPL3 license. See LICENSE to more information.
-
Resumo
-
1. Introdução
-
2. Justificativa
-
3. Objetivos
-
4. Fundamentação Teórica
4.1. RPC Legado
4.2. REST
4.3. gRPC
4.4. Golang
4.5. Dart
4.6. Protocol Buffers
-
5. Trabalhos Similares
-
6. Metodologia
-
7. Desenvolvimento
7.1. JavaScript - Sorteador de número
7.1.1. Definição de contrato – sorteio.proto
7.1.2. Servidor gRPC – NodeJS
7.2. Golang – Fornecedor de id
7.2.1. Definição de contrato – gerador_id.proto
7.2.2. Servidor gRPC – Golang
7.3. Dart – Banco de dados
7.3.1. Definição de contrato – aluno.proto
7.3.2. Servidor gRPC de banco de dados e Cliente gRPC de Golang
7.4. Java – Aplicação Cliente
7.5. Simulação
-
8. Resultados e Discussões
-
9. Conclusões
-
Referências