01/12/2024, 18:18 Descomplica
API Gateway
O API Gateway é um componente fundamental em arquiteturas de
microservices e sistemas distribuídos, atuando como um ponto
centralizado de entrada e saída de dados entre os clientes e os serviços
internos. Sua principal função é centralizar e simplificar o gerenciamento
de requisições, proporcionando um único ponto de controle que facilita a
segurança, monitoramento e roteamento das solicitações. Nesta aula,
exploraremos a definição e propósito do API Gateway, suas principais
características e a importância deste elemento em garantir a eficiência e
segurança das comunicações em um sistema distribuído.
Definição e Propósito do API Gateway
Um API Gateway é um componente crítico em arquiteturas de
microservices e sistemas distribuídos. Ele age como uma porteira ou ponto
centralizado de entrada e saída de dados entre os clientes e os serviços
internos. Essencialmente, ele serve para centralizar as requisições externas,
gerenciar o tráfego de dados e assegurar a segurança, transformando-se
em um único ponto de controle.
Definição do API Gateway
O API Gateway é um servidor intermediário que se posiciona entre os
clientes e os serviços de backend. Seu papel é fundamental, pois ele é
responsável por rotear as requisições dos clientes para os serviços
corretos, agregando respostas de múltiplos serviços e retornando-as ao
cliente como uma única resposta. Ele também pode realizar a tradução de
protocolos, autenticação, autorização e aplicação de políticas de
segurança.
[Link] 1/10
01/12/2024, 18:18 Descomplica
Propósito do API Gateway
O principal propósito de um API Gateway é centralizar e simplificar o
gerenciamento de todas as requisições em um sistema distribuído. Isso
permite:
1. Centralização de Acesso: Oferece um único ponto de entrada para todas
as requisições, facilitando o controle e monitoramento.
2. Segurança: Implementa autenticação e autorização centralizadas,
protegendo os serviços backend.
3. Roteamento Inteligente: Direciona requisições para os serviços
apropriados com base em regras configuradas.
4. Transformação de Dados: Converte formatos de dados (como JSON para
XML) conforme necessário.
5. Gerenciamento de Tráfego: Balanceia a carga e limita o número de
requisições para prevenir sobrecarga.
Exemplos Práticos
Por exemplo, em uma aplicação de e-commerce, um API Gateway pode
receber requisições de clientes para listar produtos, adicionar itens ao
carrinho e processar pagamentos. O Gateway então roteia essas
requisições para os serviços específicos: catálogo de produtos, carrinho de
compras e sistema de pagamentos, respectivamente.
plaintext</p><p style="margin-right: 0.2pt;text-align:
justify">Cliente -> API Gateway -> Serviço de Catálogo</p>
<p style="margin-right: 0.2pt;text-align:
justify"> ->
API Gateway -> Serviço de Carrinho</p><p style="margin-right:
0.2pt;text-align:
[Link] 2/10
01/12/2024, 18:18 Descomplica
justify"> ->
API Gateway -> Serviço de Pagamentos</p><p style="margin-
right: 0.2pt;text-align: justify">
Arquitetura e Componentes do API Gateway
A arquitetura de um API Gateway é composta por diversos componentes
essenciais que garantem seu funcionamento eficiente e seguro. Estes
componentes são configuráveis e podem ser adaptados conforme as
necessidades do sistema.
Componentes da Arquitetura do API Gateway
1. Entrada de Requisições: Este é o ponto de entrada para todas as
requisições externas. Pode suportar diferentes protocolos (HTTP, TCP,
WebSocket) e é responsável por receber e encaminhar as requisições aos
serviços de backend apropriados.
2. Monitoramento e Métricas: Este componente coleta dados sobre o
tráfego de rede e o desempenho do gateway. Métricas como tempo de
resposta, taxa de sucesso das requisições e taxas de erro são essenciais
para monitorar a saúde do sistema.
3. Cache: Armazena respostas de serviços frequentemente solicitados para
reduzir a carga nos serviços de backend e melhorar o tempo de resposta. O
cache pode ser configurado para armazenar respostas completas ou
parciais, dependendo das necessidades do sistema.
4. Administração e Configuração: Ferramentas e interfaces (como linhas de
comando ou GUIs) para gerenciar e configurar o API Gateway. Isso inclui
definir políticas de roteamento, regras de segurança e outras configurações
necessárias para o funcionamento do gateway.
Exemplos Práticos
[Link] 3/10
01/12/2024, 18:18 Descomplica
Um exemplo prático de cache é uma aplicação de notícias onde as
manchetes mais recentes são frequentemente solicitadas. Em vez de
acessar o serviço backend a cada requisição, o API Gateway pode
armazenar essas manchetes em cache e servir as respostas diretamente
do cache.
plaintext</p><p style="margin-right: 0.2pt;text-align:
justify">Requisição do Cliente -> API Gateway (Cache) ->
Serviço de Notícias</p><p style="margin-right: 0.2pt;text-align:
justify">
Segurança e Boas Práticas
A segurança é uma preocupação central ao implementar um API Gateway,
visto que ele centraliza o acesso aos serviços de backend. Algumas das
práticas de segurança essenciais incluem:
Autenticação e Autorização
Autenticação: Verifica a identidade dos usuários que tentam acessar os
serviços. Pode ser implementada utilizando protocolos como OAuth 2.0.
Autorização: Determina quais recursos o usuário autenticado pode acessar.
Isso garante que os usuários tenham acesso apenas aos dados e serviços
que são permitidos para seus níveis de permissão.
Proteção contra Ataques
Injeção de SQL: Medidas para prevenir ataques onde comandos maliciosos
são inseridos em consultas SQL.
Negação de Serviço (DDoS): Proteções para detectar e mitigar ataques que
tentam sobrecarregar o sistema com um volume excessivo de requisições.
[Link] 4/10
01/12/2024, 18:18 Descomplica
Repetição de Solicitações: Prevenção contra ataques onde a mesma
solicitação é repetida várias vezes para comprometer o sistema.
Criptografia (SSL/TLS)
SSL/TLS: Criptografia de tráfego para proteger dados sensíveis durante a
transmissão, prevenindo interceptação ou manipulação por terceiros.
Validação de Dados
Validação de Entrada e Saída: Assegura que os dados recebidos e enviados
estejam em conformidade com os formatos esperados, prevenindo erros e
ataques.
Log e Monitoramento
Log: Registro detalhado das atividades, útil para auditorias e resolução de
problemas.
Monitoramento: Acompanhamento contínuo do desempenho e da
segurança do API Gateway.
Auditoria e Conformidade
Auditorias Regulares: Verificação periódica para garantir que o sistema está
em conformidade com as normas de segurança e regulamentos internos e
externos.
Atualizações e Patches
Manutenção Regular: Atualização contínua do API Gateway e suas
dependências para corrigir vulnerabilidades e melhorar a segurança.
Spring Cloud Gateway
[Link] 5/10
01/12/2024, 18:18 Descomplica
O Spring Cloud Gateway é um projeto de código aberto dentro do
ecossistema Spring, projetado para facilitar a criação de API Gateways
robustos e flexíveis.
Características do Spring Cloud Gateway
Regras de Roteamento Flexíveis: Configuração para direcionar requisições
com base em várias condições, como caminho, método HTTP, cabeçalhos,
etc.
Filtros: Aplicação de operações específicas nas requisições, como
autenticação, autorização, log, transformação de dados e mais.
Balanceamento de Carga: Distribuição do tráfego entre as instâncias de
serviço disponíveis utilizando algoritmos como Round Robin e Weighted
Response Time.
Integração com Segurança: Suporte para OAuth 2.0 e outras práticas de
segurança para proteger tanto o Gateway quanto os serviços de backend.
Implementação Prática
Na prática, o Spring Cloud Gateway intercepta as requisições dos clientes,
aplica os filtros configurados e encaminha as requisições processadas aos
serviços backend. Isso adiciona uma camada adicional de segurança e
consistência, facilitando a manutenção e melhorando o desempenho da
arquitetura.
Exemplo Prático com Spring Cloud Gateway
java</p><p style="margin-right: 0.2pt;text-align:
justify">@Configuration</p><p style="margin-right: 0.2pt;text-
align: justify">public class GatewayConfig {</p><p
style="margin-right: 0.2pt;text-align:
justify"> @Bean</p><p style="margin-
[Link] 6/10
01/12/2024, 18:18 Descomplica
right: 0.2pt;text-align: justify"> public
RouteLocator customRouteLocator(RouteLocatorBuilder builder)
{</p><p style="margin-right: 0.2pt;text-align:
justify"> return
[Link]()</p><p style="margin-right: 0.2pt;text-align:
justify"> &
nbsp; .route("path_route", r
-> [Link]("/get")</p><p style="margin-right: 0.2pt;text-
align:
justify"> &
nbsp;  
; .filters(f ->
[Link]("Hello", "World"))</p><p style="margin-right:
0.2pt;text-align:
justify"> &
nbsp;  
; .uri("[Link]
style="margin-right: 0.2pt;text-align:
justify"> &
nbsp; .route("host_route", r
-> [Link]("*.[Link]")</p><p style="margin-right:
0.2pt;text-align:
justify"> &
nbsp;  
; .uri("[Link]
style="margin-right: 0.2pt;text-align:
justify"> &
nbsp; .build();</p><p
style="margin-right: 0.2pt;text-align:
justify"> }</p><p style="margin-right:
0.2pt;text-align: justify">}</p><p style="margin-right:
0.2pt;text-align: justify">
[Link] 7/10
01/12/2024, 18:18 Descomplica
Neste exemplo, estamos configurando duas rotas no Spring Cloud
Gateway: uma que adiciona um cabeçalho “Hello” com valor “World” a todas
as requisições no caminho “/get”, e outra que roteia todas as requisições
para “ [Link] se o host corresponder a “*.[Link]”.
Conclusão
Com essas características e funcionalidades, o API Gateway, especialmente
com a utilização do Spring Cloud Gateway, se torna uma ferramenta
poderosa para a implementação de gateways API, proporcionando
segurança, flexibilidade e facilidade de desenvolvimento. A compreensão
profunda desses conceitos e a implementação correta garantem um
sistema distribuído robusto, seguro e eficiente.
GitHub da Disciplina
Você pode acessar o repositório da disciplina no GitHub a partir do seguinte
link:
[Link] Esse espaço é o seu
portal para mergulhar fundo no universo da aprendizagem interativa. Nele,
você encontrará todos os códigos, além dos links para os arquivos e dados.
Conteúdo Bônus
Título: REST API (API Gateway v1)
Plataforma: Serverless
Este artigo fornece uma documentação detalhada sobre como usar o API
Gateway com o Serverless Framework no AWS. Ele abrange a configuração
[Link] 8/10
01/12/2024, 18:18 Descomplica
de eventos do API Gateway, integrações com AWS Lambda, e exemplos
práticos de uso. É uma excelente fonte para entender como implementar e
gerenciar API Gateways em um ambiente serverless.
Referência Bibliográfica
CARDOSO, L. da C. Design de aplicativos. Intersaberes: 2022
ELMASRI, R.; NAVATHE, S. B. Sistemas de banco de dados. [Link]. Pearson:
2018.
JOÃO, B. do N. Usabilidade e interface homem-máquina. Pearson: 2017
LEAL, G. C. L. Linguagem, programação e banco de dados: guia prático de
aprendizagem. Intersaberes: 2015.
MEDEIROS, L. F. de. Banco de dados: princípios e prática. Intersaberes: 2013.
PUGA, S.; FRANÇA, E.; GOYA, M. Banco de dados: implementação em SQL,
PL/SQL e Oracle 11g. Pearson: 2013.
SETZER, V. W.; SILVA, F. S. C. Bancos de dados. Blucher: 2005.
VICCI, C. (Org.). Banco de dados. Pearson: 2014.
Referência Bibliográfica
CARDOSO, L. da C. Design de aplicativos. Intersaberes: 2022
ELMASRI, R.; NAVATHE, S. B. Sistemas de banco de dados. [Link]. Pearson:
2018.
[Link] 9/10
01/12/2024, 18:18 Descomplica
JOÃO, B. do N. Usabilidade e interface homem-máquina. Pearson: 2017
LEAL, G. C. L. Linguagem, programação e banco de dados: guia prático de
aprendizagem. Intersaberes: 2015.
MEDEIROS, L. F. de. Banco de dados: princípios e prática. Intersaberes: 2013.
PUGA, S.; FRANÇA, E.; GOYA, M. Banco de dados: implementação em SQL,
PL/SQL e Oracle 11g. Pearson: 2013.
SETZER, V. W.; SILVA, F. S. C. Bancos de dados. Blucher: 2005.
VICCI, C. (Org.). Banco de dados. Pearson: 2014.
Ir para exercício
[Link] 10/10