Este documento apresenta alguns detalhes sobre a implementação da solução.
A aplicação foi escrita em NodeJS utilizando frameworks como Express, Morgan e Google Cloud AI Platform. A idéia é que a aplicação execute em um container.
O projeto foi organizado de forma a tentar manter uma divisão de responsabilidades entre os múltiplos componentes.
Hoje temos 3 grandes grupos de responsabilidade:
- ctx.js: Responsável por trabalhar com os arquivos
config/*_XX.txt
. - file.js: Responsável por trabalhar com o arquivo
config/default.yml
. - env.js: Responsável por trabalhar com variáveis de ambiente.
- authentication.js: Middleware que confere o valor do header API_KEY
- authorization.js: Middleware que confere o valor do header User-Agent
- obfuscator.js: Middleware para alterar o valor do header Server
- geminihelper.js: Responsável por invocar o Vertex AI usando gemini-pro.
Arquivo principal da solução. A lógica de implementação é a sequinte:
- Importar pacotes gerais do NodeJS
- Importar as dependências locais do
lib
- Checagem de arquivo de configuração, variáveis de ambiente e arquivo de contexto
- Criação da aplicação Express
- Configuração do Morgan para logs
- Configuração do middleware para ofuscar a versão do Express
- Configuração dos middlewares incluindo Autenticação e Autorização
- Implementação de um Health Check
- Implementação do endpoint que vai invocar o Vertex AI
- Inicialização do Servidor