Skip to content

esachser/es-api-gateway

Repository files navigation

ES API Gateway e Enterprise Service Bus

Transportes

Middlewares

APIs

TODO

Aspectos que devem ser vistos:

  • [OK] Carga dos middlewares e transportes no core
  • [OK] Verificar se o prefixo já não está utilizado no transporte http
  • [OK] Não carregar middleware ou transporte cujo esquema estiver incorreto
  • [OK] Criar construtor assíncrono para garantir que o load dos middlewares está acontecendo
  • [OK] Não permitir criação da API em caso de erro em qualquer parte da criação
    • [OK] Criar extensão de error para representar isso.
  • [OK] Refatorar middleware base para classes abstratas
    • [OK] after deve ser padrão na definição
    • [OK] execute deve seguir ou não o after
    • [OK] runInternal deve ser implementado
  • [OK] Configuração logger para cada API
    • [OK] Logger Redis por API
  • [OK] Criar Throw Error Middleware
  • [OK] Criar Catch Error Middleware
    • Setar tipo de response padrão por path
  • [Não faz sentido] ForEach Middleware
  • [OK] Cada Path no transporte HTTP pode ter middlewares
  • [OK] OpenAPIVerify Middleware deve retornar erro ou setar variável
  • Criar OAuth2 Middleware
    • [OK] JWKS
    • [OK] Inspect
    • [OK] Escopos via propriedade
  • [OK] Erros na execução do middleware geram retorno padrão
  • [OK] Remover uso do vm2 para usar vm
  • [OK] Execute JS middleware
  • Parsers de entrada, saída, e transformação
    • Entrada: Executar transformação de Buffer para any
    • Saída: Executar transformação de any para Buffer
    • Transformação: Executar transformação de Buffer para Buffer
    • [OK] JSON parser
    • [OK] Compression parser
    • [OK] String parser
    • [OK] Form parser
    • [OK] XML parser
    • [Não processará] Multipart parser
    • [OK] Media type parser
      • [OK] Sempre obedecendo um media-type
  • [OK] YAML API
  • [OK] Decode Middleware
  • [OK] Encode Middleware
  • [Usar Parse Middleware] HttpRequest Middleware deve ter a possibilidade de fazer parsing ou não do retorno
  • [OK] Estudar chamada de GRPC
    • [OK] Adicionar middleware cliente GRPC - com SSL
      • Por enquanto somente chamadas e respostas unárias, sem stream
  • [OK] Certificados em diretório
    • [OK] Um diretório para cada api
  • [OK] Load Private Key Middleware
  • [OK] Load Public Certificate Middleware
  • [OK] Gerar JWS Middleware
  • [OK] Verificar JWS Middleware
  • [OK] Gerar JWE Middleware
  • [OK] Verificar/Decriptar JWE Middleware
  • [OK] Salvar no Redis um registro Middleware
  • [OK] Capturar no Redis um registro Middleware
  • [OK] Rate Limiting - Por servidor (instalação, em memória)
  • [OK] Quotas - Por alguma coisa, p.ex. usuário, ip, client_id, etc. (usa Redis)
  • [OK] Incluir o nome da API (id) no construtor padrão
  • [OK] Chamada HTTP com certificado de cliente - Testar melhor
  • [OK] Tornar getRawBody um middleware
  • [OK] Limite de tamanho do body no getRawBody
  • [OK] Compound Middleware --> Middlewares personalizados
  • [OK] init_mid --> transport_mid --> execution_mid
  • [OK] Várias portas HTTP com configurações diferentes
    • [OK] Fazer a recarga de todas elas corretamente
  • [OK] Adicionar "transporte" Scheduler
  • [OK] Adicionar transporte/middleware Redis Pub/Sub
    • [OK] Middleware Pub
    • [OK] Transport Sub
  • [OK] Adicionar transporte/middleware Redis Streams
    • [OK] Middleware Stream Write
    • [OK] Transport Group Stream Read
  • [OK] Rodar gateway em cluster
  • [OK] Criar tag de API desabilitada
  • [OK] Criar tag de transporte habilitado
  • [OK] Centralizar configuração de Redis
    • [OK] Verificar configuração do Redis como um todo
    • [OK] Configuração de redis publisher para os logs das APIs
    • [OK] Configuração de redis como objeto para cada middleware ou transporte
  • [OK] Avaliar uso de ETCD para escala horizontal dos clusters
    • [OK] Será usado
    • [OK] Usar para quotaLimiter
    • [OK] Utilizar como replicação de cluster
      • [OK] Melhorar código do config.ts
      • [OK] Adicionar logs ao watcher das APIs
      • [OK] Carregar as APIs inicialmente/preferencialmente do ETCD
      • [OK] Sincronizar arquivos auxiliares
  • Ajustar middlewares
    • [OK] Debug unificado
    • Verificar código
  • [OK] Ajustar transportes
    • [OK] Ajustar index.ts para não carregar de lugar nenhum
  • Iniciar documentação, exemplos, testes, e casos de uso
    • Documentação explicando o geral do projeto
    • Principais componentes do projeto
    • Diagrama day of life de uma chamada
    • Descrição de cada transporte
    • Descrição de cada middleware
    • Descrição de cada autenticador
    • Exemplos e casos de uso
  • Middlewares necessários para primeira versão
    • [OK] Timeout Middleware
    • [OK] Salvar dado no ETCD Store da API
    • [OK] Salvar dado no ETCD Store público
    • [OK] Capturar dado no ETCD Store da API
    • [OK] Capturar dado no ETCD Store público
    • [OK] Remover dado no ETCD Store da API
    • [OK] Remover dado no ETCD Store público
    • [OK] Capturar arquivo (e stats) das resources (buffer ou stream)
    • [OK] Verificar payload contra Regex
    • [OK] Autenticação Básica
    • [OK] Autenticação com certificado (Mutual TLS)
    • Kafka
  • [OK] Ids no Transporte HTTP separados por vírgulas servem para criar mesma casca para vários
  • Schedule um cluster ou todos (usando ETCD para sincronizar)
  • Criar ferramenta que edita direto etcd
    • Sincronizar somente ETCD --> Local
  • Unificar configuraçãos
  • Adicionar middleware de envio de email
    • Exige configuração centralizada?
  • Adicionar transporte Kafka
  • Adicionar transportes de filas
    • AMQP
    • MQTT
  • Adicionar facilidades para gerar JWT
    • Com issuer
    • jti
    • exp
    • ...
  • Trocar o verificador de OpenAPI
  • Estudar a adição dos conceitos SOAP
  • Tipos de Logger na configuração global
  • APIs como JWE, para encriptar informações sensíveis
  • Parâmetros configuráveis para os middlewares criados (e todos os middlewares)
    • Algo do tipo ${request.headers.test}
  • Validar configuração global
  • Considerar troca de koa para fastify

Outros pontos

Outros pontos a serem verificados:

  • Adicionar transporte GRPC
  • Verificar concorrência nos creators
  • Criar testes para todo o sistema
  • Criar "Vault" para salvar infos das APIs

About

API Gateway e ESB usando Nodejs

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published