Instrução Técnica Completa — Implantação do eCosif em Produção

Destinatário: Equipe de implantação / DevOps / SRE (ex.: Banco Itaú)
Objetivo: Documento técnico único com toda a informação necessária para implantar o ecossistema eCosif em ambiente de produção, incluindo criação do banco de dados, variáveis de ambiente, passos de deploy e diagramas.


Modelo de entrega ao cliente

O cliente (banco) não recebe os fontes do projeto. A entrega é feita exclusivamente através de imagens Docker. O cliente obtém essas imagens a partir do registo de imagens e implanta-as no seu ambiente. Não há passos de build de aplicação (sem mvn, npm run build, pip install, etc.) no lado do cliente — apenas configuração de variáveis de ambiente, execução dos contentores e integração com API Gateway, base de dados e rede.


Índice

  1. Introdução e versões
  2. Arquitetura geral e diagramas
  3. Pré-requisitos e criação do banco de dados
  4. Variáveis de ambiente
  5. ecosif-angular (frontend)
  6. ecosif-auth
  7. ecosif-masterdata
  8. ecosif-moviments
  9. ecosif-querys
  10. ecosif-reports
  11. ecosif-compliance
  12. ecosif-automations
  13. Checklist pós-implantação

1. Introdução e versões

O eCosif é um ecossistema de aplicações para gestão contábil, composto por um frontend (SPA Angular) e vários serviços backend (Spring Boot e Python). A implantação em produção pressupõe um único domínio (ex.: https://app.ecosif.banco.com.br) com o frontend na raiz e cada backend num path (/ecosif-auth, /ecosif-masterdata, etc.).

1.1 Versões dos módulos (referência)

Módulo Versão
ecosif-angular 0.7.01.202601282
ecosif-auth 0.7.01.202601280
ecosif-masterdata 0.7.01.202601280
ecosif-moviments 0.7.01.202601280
ecosif-querys 0.7.01.202601280
ecosif-reports 0.7.01.202601282
ecosif-compliance 0.1.02.202509121
ecosif-automations 0.7.01.202601280

2. Arquitetura geral e diagramas

2.1 Diagrama de alto nível (fluxo utilizador e APIs)

flowchart LR
    subgraph Browser
        A[Utilizador]
        B[SPA Angular]
    end
    subgraph "API Gateway / Load Balancer"
        GW["/ → Frontend\n/ecosif-auth → Auth\n/ecosif-masterdata → Masterdata\n/ecosif-moviments → Moviments\n/ecosif-querys → Querys\n/ecosif-reports → Reports\n/ecosif-compliance → Compliance"]
    end
    subgraph Backends
        Auth[ecosif-auth]
        MD[ecosif-masterdata]
        Mov[ecosif-moviments]
        Q[ecosif-querys]
        R[ecosif-reports]
        C[ecosif-compliance]
    end
    subgraph PostgreSQL
        DB[(ecosif)]
    end
    A --> B
    B --> GW
    GW --> Auth
    GW --> MD
    GW --> Mov
    GW --> Q
    GW --> R
    GW --> C
    Auth --> DB
    MD --> DB
    Mov --> DB
    Q --> DB
    R --> DB
    C --> DB

2.2 Diagrama de dependências entre módulos

flowchart TD
    Angular[ecosif-angular] --> Auth[ecosif-auth]
    Angular --> MD[ecosif-masterdata]
    Angular --> Mov[ecosif-moviments]
    Angular --> Q[ecosif-querys]
    Angular --> R[ecosif-reports]
    Angular --> C[ecosif-compliance]
    Auth --> DB[(PostgreSQL)]
    MD --> DB
    Mov --> DB
    Q --> DB
    R --> DB
    C --> DB
    Auto[ecosif-automations] --> API[APIs moviments/masterdata]
    API --> Mov
    API --> MD

2.3 Mapeamento de URLs (produção)

Path Serviço Porta interna (exemplo)
/ ecosif-angular (Nginx) 80
/ecosif-auth ecosif-auth 8080
/ecosif-masterdata ecosif-masterdata 8080
/ecosif-moviments ecosif-moviments 8080
/ecosif-querys ecosif-querys 8080
/ecosif-reports ecosif-reports 8080
/ecosif-compliance ecosif-compliance 8021
/ecosif-automations ecosif-automations (se HTTP) conforme deploy

3. Pré-requisitos e criação do banco de dados

3.1 Pré-requisitos gerais

3.2 Passo a passo: criação do banco de dados PostgreSQL

Passo 1. Instalar/configurar o servidor PostgreSQL (ou usar serviço gerido, ex.: RDS).

Passo 2. Criar a base de dados e os utilizadores (executar como superuser, ex.: postgres):

-- Criar a base de dados
CREATE DATABASE ecosif
  WITH ENCODING = 'UTF8'
       LC_COLLATE = 'pt_BR.UTF-8'
       LC_CTYPE = 'pt_BR.UTF-8'
       TEMPLATE = template0;

-- Conectar à base: \c ecosif

-- Utilizador para ecosif-auth (com permissões para criar schema e tabelas via Flyway)
CREATE USER ecosif_auth WITH PASSWORD 'senha_segura_auth';
GRANT ALL PRIVILEGES ON DATABASE ecosif TO ecosif_auth;
GRANT ALL ON SCHEMA public TO ecosif_auth;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO ecosif_auth;

-- Utilizador para ecosif-masterdata
CREATE USER ecosif_masterdata WITH PASSWORD 'senha_segura_masterdata';
GRANT CONNECT ON DATABASE ecosif TO ecosif_masterdata;
GRANT USAGE ON SCHEMA public TO ecosif_masterdata;
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO ecosif_masterdata;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO ecosif_masterdata;

-- Utilizador para ecosif-moviments
CREATE USER ecosif_moviments WITH PASSWORD 'senha_segura_moviments';
GRANT CONNECT ON DATABASE ecosif TO ecosif_moviments;
GRANT USAGE ON SCHEMA public TO ecosif_moviments;
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO ecosif_moviments;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO ecosif_moviments;

-- Utilizador para ecosif-querys
CREATE USER ecosif_querys WITH PASSWORD 'senha_segura_querys';
GRANT CONNECT ON DATABASE ecosif TO ecosif_querys;
GRANT USAGE ON SCHEMA public TO ecosif_querys;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO ecosif_querys;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO ecosif_querys;

-- Utilizador para ecosif-reports
CREATE USER ecosif_reports WITH PASSWORD 'senha_segura_reports';
GRANT CONNECT ON DATABASE ecosif TO ecosif_reports;
GRANT USAGE ON SCHEMA public TO ecosif_reports;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO ecosif_reports;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO ecosif_reports;

-- Utilizador para ecosif-compliance
CREATE USER ecosif_compliance WITH PASSWORD 'senha_segura_compliance';
GRANT CONNECT ON DATABASE ecosif TO ecosif_compliance;
GRANT USAGE ON SCHEMA public TO ecosif_compliance;
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO ecosif_compliance;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO ecosif_compliance;

Passo 3. O ecosif-auth é o primeiro serviço a subir com Flyway ativo; ele criará as tabelas do schema (gr_user, roles, etc.). Os restantes serviços utilizam o mesmo schema (lib ecosif-database). Garantir que o utilizador ecosif_auth tem permissão para criar tabelas na primeira execução.

Passo 4. Documentar em local seguro: host, porta, nome da base, cada utilizador e respectiva senha, para configurar as variáveis de ambiente de cada módulo.


4. Variáveis de ambiente

As variáveis de ambiente são definidas na task definition (ECS), no docker run / docker-compose ou no orquestrador (Kubernetes). As imagens Docker leem-nas em tempo de execução. A lista completa está no arquivo ecosif-structure/env.template. Abaixo segue a tabela de referência de todas as variáveis (obrigatórias e opcionais) por módulo, tipo e obrigatoriedade. O detalhe de como utilizar e o que cada uma faz está na secção de cada serviço (itens 5 a 12).

4.1 Tabela de referência — todas as variáveis

Variável Módulo(s) Tipo Obrigatório
AUTH_TOKEN_SECRET ecosif-auth, ecosif-masterdata, ecosif-moviments, ecosif-querys, ecosif-reports texto S
AUTH2_CLIENT_ID ecosif-auth texto N
AUTH2_SECRET ecosif-auth texto N
AWS_ACCESS_KEY_ID ecosif-automations, ecosif-masterdata, ecosif-moviments, ecosif-reports texto N
AWS_DEFAULT_REGION ecosif-automations, ecosif-masterdata, ecosif-moviments, ecosif-reports texto N
AWS_SECRET_ACCESS_KEY ecosif-automations, ecosif-masterdata, ecosif-moviments, ecosif-reports texto N
AWS_S3_BUCKET ecosif-automations, ecosif-masterdata, ecosif-moviments, ecosif-reports texto N
AWS_S3_ERROR_FOLDER ecosif-automations texto N
AWS_S3_IMPORTED_FOLDER ecosif-automations texto N
AWS_S3_REPORTS_FOLDER ecosif-automations texto N
AWS_SQS_ENTRIES_QUEUE_URL ecosif-automations texto N
AWS_SQS_QUEUE_URL ecosif-automations texto N
ECOSIF_ANGULAR_API_AUTH_URL ecosif-angular texto N
ECOSIF_ANGULAR_API_COMPLIANCE_URL ecosif-angular texto N
ECOSIF_ANGULAR_API_MASTERDATA_URL ecosif-angular texto N
ECOSIF_ANGULAR_API_MOVIMENTS_URL ecosif-angular texto N
ECOSIF_ANGULAR_API_QUERYS_URL ecosif-angular texto N
ECOSIF_ANGULAR_API_REPORTS_URL ecosif-angular texto N
ECOSIF_ANGULAR_AUTH_TOKEN ecosif-angular texto N
ECOSIF_ANGULAR_DEBUG ecosif-angular boolean N
ECOSIF_ANGULAR_HIDE_ADMIN_MENU ecosif-angular boolean N
ECOSIF_ANGULAR_PORT ecosif-angular número N
ECOSIF_ANGULAR_PRODUCTION ecosif-angular boolean N
ECOSIF_API_BASE_URL ecosif-angular, ecosif-automations texto S (automations em prod)
ECOSIF_AUTH_PORT ecosif-auth número S
ECOSIF_AUTH_CONTEXT_PATH ecosif-auth texto S
ECOSIF_AUTOMATIONS_CONTEXT_PATH ecosif-automations texto N
ECOSIF_AUTOMATIONS_PORT ecosif-automations número N
ECOSIF_AZURE_AUTHORITY ecosif-angular, ecosif-auth texto N
ECOSIF_AZURE_CLIENT_ID ecosif-angular, ecosif-auth texto N
ECOSIF_AZURE_TENANT_ID ecosif-angular, ecosif-auth texto N
ECOSIF_COMPLIANCE_CONTEXT_PATH ecosif-compliance texto N
ECOSIF_COMPLIANCE_PORT ecosif-compliance número N
ECOSIF_CORS ecosif-auth, ecosif-compliance, ecosif-masterdata, ecosif-moviments, ecosif-querys, ecosif-reports texto S
ECOSIF_FLYWAY_ENABLED ecosif-auth, ecosif-masterdata, ecosif-moviments, ecosif-querys boolean N
ECOSIF_LOGMODE_HIBERNATE ecosif-auth, ecosif-masterdata, ecosif-moviments, ecosif-querys, ecosif-reports texto N
ECOSIF_LOGMODE_HIBERNATE_SQL ecosif-auth, ecosif-masterdata, ecosif-moviments, ecosif-querys, ecosif-reports texto N
ECOSIF_LOGMODE_ROOT ecosif-auth, ecosif-compliance, ecosif-masterdata, ecosif-moviments, ecosif-querys, ecosif-reports texto N
ECOSIF_LOGMODE_SPRING ecosif-auth, ecosif-masterdata, ecosif-moviments, ecosif-querys, ecosif-reports texto N
ECOSIF_LOGSHOW ecosif-auth, ecosif-masterdata, ecosif-moviments, ecosif-querys, ecosif-reports boolean N
ECOSIF_LOCAL_MODE ecosif-automations boolean N
ECOSIF_MASTERDATA_CONTEXT_PATH ecosif-masterdata texto S
ECOSIF_MASTERDATA_PORT ecosif-masterdata número S
ECOSIF_MOVIMENTS_CONTEXT_PATH ecosif-moviments texto S
ECOSIF_MOVIMENTS_PORT ecosif-moviments número S
ECOSIF_PAGINATION_SIZE ecosif-angular número N
ECOSIF_QUERYS_CONTEXT_PATH ecosif-querys texto S
ECOSIF_QUERYS_PORT ecosif-querys número S
ECOSIF_REPORTS_CONTEXT_PATH ecosif-reports texto S
ECOSIF_REPORTS_PORT ecosif-reports número S
HIBERNATE_DDL_AUTO ecosif-auth, ecosif-masterdata, ecosif-moviments, ecosif-querys texto S
LAMBDA_MEMORY_SIZE ecosif-automations número N
LAMBDA_RUNTIME ecosif-automations texto N
LAMBDA_TIMEOUT ecosif-automations número N
LOG_FORMAT ecosif-auth, ecosif-masterdata, ecosif-moviments, ecosif-querys, ecosif-reports texto N
POSTGRES_DB ecosif-auth, ecosif-masterdata, ecosif-moviments, ecosif-querys, ecosif-reports texto S
POSTGRES_HOST ecosif-auth, ecosif-masterdata, ecosif-moviments, ecosif-querys, ecosif-reports texto S
POSTGRES_PASSWORD ecosif-auth, ecosif-masterdata, ecosif-moviments, ecosif-querys, ecosif-reports texto S
POSTGRES_PORT ecosif-auth, ecosif-masterdata, ecosif-moviments, ecosif-querys, ecosif-reports número S
POSTGRES_USER ecosif-auth, ecosif-masterdata, ecosif-moviments, ecosif-querys, ecosif-reports texto S
SERVER_SERVLET_CONTEXT_PATH ecosif-auth, ecosif-masterdata, ecosif-moviments, ecosif-querys, ecosif-reports texto S
SPRING_AUTOCONFIGURE_EXCLUDE ecosif-auth texto N
TOKEN_EXPIRATION ecosif-auth, ecosif-masterdata, ecosif-moviments, ecosif-querys, ecosif-reports número N
ECOSIF_CORS ecosif-compliance texto S
ECOSIF_DB_LOGIN ecosif-compliance texto S
ECOSIF_DB_PASSWORD ecosif-compliance texto S
ECOSIF_DB_PORT ecosif-compliance número S
ECOSIF_DB_SERVER ecosif-compliance texto S
ECOSIF_DB_USER ecosif-compliance texto S
ECOSIF_DEBUG_MODE ecosif-compliance boolean N
ECOSIF_HOST_ADDRESS ecosif-compliance texto N
ECOSIF_LOGMODE_ROOT ecosif-compliance texto N
ECOSIF_COMPLIANCE_PORT ecosif-compliance número N
ECOSIF_RUNTIME_ENVIRONMENT ecosif-compliance texto N
ECOSIF_SESSION_TIMEOUT ecosif-compliance número N
ECOSIF_VERSION estrutura texto N
ECOSIF_ENVIRONMENT ecosif-moviments, estrutura texto N
ECOSIF_DOMAIN estrutura texto N
TZ estrutura texto N
TRAEFIK_ACME_EMAIL estrutura texto N
USEDATADOG estrutura boolean N
DATADOG_API_KEY estrutura texto N
DATADOG_ENV estrutura texto N
DD_AGENT_HOST estrutura texto N
DD_TRACE_AGENT_PORT estrutura número N
DD_SERVICE estrutura texto N
DD_ENV estrutura texto N
DD_VERSION estrutura texto N
DD_LOGS_INJECTION estrutura texto N
DOCKER_GID estrutura número N

Notas: (1) O módulo estrutura refere-se a variáveis usadas pelo ecosif-structure (docker-compose, scripts de setup), não por um contentor de aplicação específico. As variáveis exclusivas da estrutura aparecem no final da tabela e estão centralizadas no final do arquivo env.template. (2) TRAEFIK_ACME_ENABLED foi removida por não ser utilizada pelo docker-compose nem pelo Traefik. (3) Nos serviços Spring Boot, o context path pode ser definido por SERVER_SERVLET_CONTEXT_PATH (direto no contentor) ou, no ecosif-structure, por ECOSIF_*_CONTEXT_PATH (ex.: ECOSIF_AUTH_CONTEXT_PATH). (4) Todas as variáveis são em MAIÚSCULAS (incluindo ecosif-compliance). (5) O detalhe de como utilizar cada variável e o que faz está na secção de cada serviço (itens 5 a 12).


5. ecosif-angular (frontend)

5.1 Função e tecnologia

5.2 Diagrama (frontend e APIs)

flowchart LR
    subgraph "Navegador"
        UI[SPA Angular]
    end
    subgraph "Mesma origem (ex.: app.ecosif.banco.com.br)"
        UI --> A[/ecosif-auth]
        UI --> M[/ecosif-masterdata]
        UI --> V[/ecosif-moviments]
        UI --> Q[/ecosif-querys]
        UI --> R[/ecosif-reports]
        UI --> C[/ecosif-compliance]
    end

5.3 Variáveis de ambiente

Definir na task/contentor do frontend. O entrypoint usa-as para gerar window.env (ex.: env.js). Se a imagem não suportar variáveis em runtime, os paths das APIs já vêm na imagem para o domínio acordado.

Variável Como utilizar O que faz
ECOSIF_ANGULAR_API_AUTH_URL Path relativo, ex.: /ecosif-auth (ou vazio para derivar de ECOSIF_AUTH_CONTEXT_PATH) Base URL do auth (authUrl no window.env).
ECOSIF_ANGULAR_API_MASTERDATA_URL ex.: /ecosif-masterdata Base do masterdata (apiUrl).
ECOSIF_ANGULAR_API_MOVIMENTS_URL ex.: /ecosif-moviments Base do moviments (movementAPIUrl).
ECOSIF_ANGULAR_API_QUERYS_URL ex.: /ecosif-querys Base do querys (entryAPIUrl).
ECOSIF_ANGULAR_API_REPORTS_URL ex.: /ecosif-reports Base do reports (reportsApiUrl).
ECOSIF_ANGULAR_API_COMPLIANCE_URL ex.: /ecosif-compliance Base do compliance (complianceApiUrl).
ECOSIF_ANGULAR_AUTH_TOKEN Token fixo (opcional, raro em prod) Se definido, usado em contexto específico.
ECOSIF_ANGULAR_DEBUG true ou false Ativa modo debug da aplicação.
ECOSIF_ANGULAR_HIDE_ADMIN_MENU true (prod) ou false (QAS) Esconde ou mostra o menu "Ferramentas Administrativas" (ex.: Logs Docker).
ECOSIF_ANGULAR_PORT ex.: 80 Porta em que o Nginx escuta dentro do contentor.
ECOSIF_ANGULAR_PRODUCTION true em produção, false em dev/QAS Indicador de ambiente (production no window.env).
ECOSIF_PAGINATION_SIZE ex.: 100 Tamanho padrão de paginação (paginationSize).
ECOSIF_API_BASE_URL URL base completa (ex.: https://app.ecosif.banco.com.br) Referência para chamadas às APIs quando necessário.
ECOSIF_AZURE_AUTHORITY URL do tenant/authority (login Azure AD) MSAL: Authority para Azure AD.
ECOSIF_AZURE_CLIENT_ID Client ID da app no Azure Portal MSAL: habilita login com Azure AD.
ECOSIF_AZURE_TENANT_ID ID do tenant Azure MSAL: tenant para Azure AD.

5.4 Passo a passo de implantação (ecosif-angular)

  1. Obter a imagem Docker do registo indicado no release. Exemplo: docker pull disoft/ecosif-angular:<tag>.
  2. Configurar variáveis de ambiente do contentor (se a imagem suportar): URLs das APIs em paths relativos (ex.: authUrl=/ecosif-auth, apiUrl=/ecosif-masterdata, etc.) ou domínio para o qual a imagem foi preparada.
  3. Executar o contentor (ou definir task/serviço em ECS/Kubernetes) com a porta exposta (ex.: 80). O contentor serve arquivos estáticos via Nginx; health check em /health se disponível.
  4. Expor o serviço na raiz do domínio (path /) no API Gateway ou load balancer.
  5. Validar: abrir https://app.ecosif.banco.com.br e verificar login (requer ecosif-auth já em funcionamento).

6. ecosif-auth

6.1 Função e tecnologia

6.2 Variáveis de ambiente

Definir na task/contentor do ecosif-auth. Segredos (POSTGRES_PASSWORD, AUTH_TOKEN_SECRET) em repositório de segredos.

Variável Como utilizar O que faz
SERVER_SERVLET_CONTEXT_PATH Path do serviço: /ecosif-auth (ou use ECOSIF_AUTH_CONTEXT_PATH no ecosif-structure) Prefixo da aplicação; deve coincidir com o mapeamento no API Gateway.
ECOSIF_AUTH_PORT ex.: 8080 Porta HTTP em que o serviço escuta dentro do contentor.
ECOSIF_AUTH_CONTEXT_PATH ex.: /ecosif-auth Usado no docker-compose para montar SERVER_SERVLET_CONTEXT_PATH.
POSTGRES_HOST Host do PostgreSQL (RDS ou servidor) Conexão JDBC: host.
POSTGRES_PORT ex.: 5432 Conexão JDBC: porta.
POSTGRES_DB ex.: ecosif Nome da base de dados.
POSTGRES_USER ex.: ecosif_auth Utilizador da base (um por serviço).
POSTGRES_PASSWORD Senha do utilizador (em segredos) Credencial JDBC.
AUTH_TOKEN_SECRET String longa e aleatória; o mesmo valor em todos os serviços que usam JWT Chave HMAC para assinar (auth) e validar (outros serviços) tokens JWT.
TOKEN_EXPIRATION Milissegundos, ex.: 86400000 (24h) Tempo de vida do token emitido pelo auth.
ECOSIF_CORS URL exata do frontend, ex.: https://app.ecosif.banco.com.br (várias origens separadas por vírgula) Origens permitidas no CORS.
HIBERNATE_DDL_AUTO Em produção: validate; não usar update em prod Comportamento do Hibernate (validate só valida o schema).
ECOSIF_FLYWAY_ENABLED true na 1ª implantação (executa migrações); depois pode ser false Executa migrações Flyway ao arranque (cria/atualiza tabelas).
AUTH2_CLIENT_ID Client ID do Google Cloud Console (opcional) Se definido com AUTH2_SECRET, habilita login OAuth2 com Google.
AUTH2_SECRET Secret do cliente OAuth2 Google (opcional) Credencial OAuth2 Google.
SPRING_AUTOCONFIGURE_EXCLUDE ex.: excluir auto-config OAuth2 se desativar (opcional) Desabilita auto-configuração do OAuth2 quando client ID está vazio.
ECOSIF_AZURE_CLIENT_ID, ECOSIF_AZURE_TENANT_ID, ECOSIF_AZURE_AUTHORITY Valores do Azure Portal (opcional) Habilita login com Azure AD / Microsoft Entra ID.
LOG_FORMAT default, json ou spring Escolhe o arquivo logback (logback-${LOG_FORMAT}.xml).
ECOSIF_LOGMODE_ROOT, ECOSIF_LOGMODE_SPRING, ECOSIF_LOGMODE_HIBERNATE_SQL, ECOSIF_LOGMODE_HIBERNATE ex.: INFO Níveis de log por pacote.
ECOSIF_LOGSHOW true ou false Exibição de logs (conforme implementação).

6.3 Passo a passo de implantação (ecosif-auth)

  1. Banco criado (ver secção 3) e utilizador ecosif_auth com permissões.
  2. Obter a imagem Docker do registo indicado no release (imagem gerada no tag GitHub). Exemplo: docker pull <registro>/ecosif-auth:<tag>.
  3. Configurar todas as variáveis de ambiente na task/contentor (POSTGRES_*, AUTH_TOKEN_SECRET, ECOSIF_CORS, SERVER_SERVLET_CONTEXT_PATH=/ecosif-auth, etc.).
  4. Subir o contentor (ou serviço ECS/Kubernetes). Na primeira execução, Flyway executará as migrações em db/migration dentro da imagem.
  5. Health check: configurar ALB/API Gateway para /ecosif-auth/actuator/health.
  6. Mapear no API Gateway o path /ecosif-auth (e /ecosif-auth/{proxy+}) para este serviço.

7. ecosif-masterdata

7.1 Função e tecnologia

7.2 Variáveis de ambiente

Definir na task/contentor do ecosif-masterdata. AUTH_TOKEN_SECRET deve ser igual ao do ecosif-auth.

Variável Como utilizar O que faz
SERVER_SERVLET_CONTEXT_PATH /ecosif-masterdata (ou ECOSIF_MASTERDATA_CONTEXT_PATH no ecosif-structure) Context path; coincide com o mapeamento no API Gateway.
ECOSIF_MASTERDATA_PORT ex.: 8080 Porta HTTP do serviço.
ECOSIF_MASTERDATA_CONTEXT_PATH ex.: /ecosif-masterdata Usado no ecosif-structure para montar o context path.
POSTGRES_HOST, POSTGRES_PORT, POSTGRES_DB Host, porta e nome da base (ex.: ecosif) Conexão JDBC ao PostgreSQL.
POSTGRES_USER, POSTGRES_PASSWORD ex.: ecosif_masterdata e senha (em segredos) Credenciais da base (um utilizador por serviço).
AUTH_TOKEN_SECRET O mesmo valor que no ecosif-auth Validação do JWT nas requisições.
TOKEN_EXPIRATION ex.: 86400000 Referência para consistência com o auth.
ECOSIF_CORS URL do frontend, ex.: https://app.ecosif.banco.com.br Origens CORS permitidas.
HIBERNATE_DDL_AUTO validate em produção Hibernate não altera o schema.
AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_DEFAULT_REGION, AWS_S3_BUCKET Preencher se o módulo usar S3 (opcional) Acesso a buckets S3 para arquivos/importação.
LOG_FORMAT, ECOSIF_LOGMODE_* ex.: default, INFO Formato e níveis de log.
ECOSIF_LOGSHOW true ou false Exibição de logs.

7.3 Passo a passo de implantação (ecosif-masterdata)

  1. ecosif-auth já implantado (schema e tabelas existem).
  2. Obter a imagem Docker do registo (tag do release). Ex.: docker pull <registro>/ecosif-masterdata:<tag>.
  3. Configurar variáveis de ambiente; context path /ecosif-masterdata.
  4. Subir o contentor; Health: /ecosif-masterdata/actuator/health.
  5. Mapear no API Gateway /ecosif-masterdata (e /ecosif-masterdata/{proxy+}) para este serviço.

8. ecosif-moviments

8.1 Função e tecnologia

8.2 Variáveis de ambiente

Definir na task/contentor do ecosif-moviments. AUTH_TOKEN_SECRET igual ao do ecosif-auth.

Variável Como utilizar O que faz
SERVER_SERVLET_CONTEXT_PATH /ecosif-moviments (ou ECOSIF_MOVIMENTS_CONTEXT_PATH) Context path; coincide com o API Gateway.
ECOSIF_MOVIMENTS_PORT ex.: 8080 Porta HTTP do serviço.
ECOSIF_MOVIMENTS_CONTEXT_PATH ex.: /ecosif-moviments Usado no ecosif-structure.
POSTGRES_HOST, POSTGRES_PORT, POSTGRES_DB Host, porta, nome da base Conexão JDBC.
POSTGRES_USER, POSTGRES_PASSWORD ex.: ecosif_moviments e senha Credenciais da base.
AUTH_TOKEN_SECRET, TOKEN_EXPIRATION Mesmo valor que no auth Validação JWT e referência de validade.
ECOSIF_CORS URL do frontend Origens CORS.
HIBERNATE_DDL_AUTO validate em produção Hibernate não altera schema.
ECOSIF_FLYWAY_ENABLED true ou false conforme política de migrações Executa Flyway ao arranque (se o módulo tiver migrações).
ECOSIF_ENVIRONMENT ex.: prod, local Identificador de ambiente (ecosif.environment).
AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_DEFAULT_REGION, AWS_S3_BUCKET Se usar importação por S3 (opcional) Acesso ao bucket S3.
LOG_FORMAT, ECOSIF_LOGMODE_*, ECOSIF_LOGSHOW ex.: default, INFO Formato e níveis de log.

8.3 Passo a passo de implantação (ecosif-moviments)

  1. Auth e masterdata já implantados.
  2. Obter a imagem Docker do registo (tag do release). Ex.: docker pull <registro>/ecosif-moviments:<tag>.
  3. Configurar variáveis de ambiente; context path /ecosif-moviments.
  4. Subir o contentor; Health: /ecosif-moviments/actuator/health.
  5. Mapear no API Gateway /ecosif-moviments (e /ecosif-moviments/{proxy+}) para este serviço.

9. ecosif-querys

9.1 Função e tecnologia

9.2 Variáveis de ambiente

Definir na task/contentor do ecosif-querys. AUTH_TOKEN_SECRET igual ao do ecosif-auth.

Variável Como utilizar O que faz
SERVER_SERVLET_CONTEXT_PATH /ecosif-querys (ou ECOSIF_QUERYS_CONTEXT_PATH) Context path; coincide com o API Gateway.
ECOSIF_QUERYS_PORT ex.: 8080 Porta HTTP do serviço.
ECOSIF_QUERYS_CONTEXT_PATH ex.: /ecosif-querys Usado no ecosif-structure.
POSTGRES_HOST, POSTGRES_PORT, POSTGRES_DB Host, porta, nome da base Conexão JDBC.
POSTGRES_USER, POSTGRES_PASSWORD ex.: ecosif_querys (perfil de leitura) e senha Credenciais da base (SELECT).
AUTH_TOKEN_SECRET, TOKEN_EXPIRATION Mesmo valor que no auth Validação JWT.
ECOSIF_CORS URL do frontend Origens CORS.
HIBERNATE_DDL_AUTO validate em produção Hibernate não altera schema.
ECOSIF_FLYWAY_ENABLED true ou false conforme política Executa Flyway se o módulo tiver migrações.
LOG_FORMAT, ECOSIF_LOGMODE_*, ECOSIF_LOGSHOW ex.: default, INFO Formato e níveis de log.

9.3 Passo a passo de implantação (ecosif-querys)

  1. Serviços que escrevem no BD (auth, masterdata, moviments) já implantados.
  2. Obter a imagem Docker do registo (tag do release). Ex.: docker pull <registro>/ecosif-querys:<tag>.
  3. Configurar variáveis de ambiente; context path /ecosif-querys.
  4. Subir o contentor; Health: /ecosif-querys/actuator/health.
  5. Mapear no API Gateway /ecosif-querys (e /ecosif-querys/{proxy+}) para este serviço.

10. ecosif-reports

10.1 Função e tecnologia

10.2 Variáveis de ambiente

Definir na task/contentor do ecosif-reports. AUTH_TOKEN_SECRET igual ao do ecosif-auth.

Variável Como utilizar O que faz
SERVER_SERVLET_CONTEXT_PATH /ecosif-reports (ou ECOSIF_REPORTS_CONTEXT_PATH) Context path; coincide com o API Gateway.
ECOSIF_REPORTS_PORT ex.: 8080 Porta HTTP do serviço.
ECOSIF_REPORTS_CONTEXT_PATH ex.: /ecosif-reports Usado no ecosif-structure.
POSTGRES_HOST, POSTGRES_PORT, POSTGRES_DB Host, porta, nome da base Conexão JDBC.
POSTGRES_USER, POSTGRES_PASSWORD ex.: ecosif_reports (leitura) e senha Credenciais da base.
AUTH_TOKEN_SECRET, TOKEN_EXPIRATION Mesmo valor que no auth Validação JWT.
ECOSIF_CORS URL do frontend Origens CORS.
AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_DEFAULT_REGION, AWS_S3_BUCKET Se usar S3 para relatórios (opcional) Acesso ao bucket S3.
LOG_FORMAT, ECOSIF_LOGMODE_*, ECOSIF_LOGSHOW ex.: default, INFO Formato e níveis de log.

10.3 Passo a passo de implantação (ecosif-reports)

  1. Obter a imagem Docker do registo (tag do release). Ex.: docker pull <registro>/ecosif-reports:<tag>.
  2. Configurar variáveis de ambiente; context path /ecosif-reports.
  3. Subir o contentor (a imagem já inclui java.awt.headless=true para geração de relatórios).
  4. Health: /ecosif-reports/actuator/health.
  5. Mapear no API Gateway /ecosif-reports (e /ecosif-reports/{proxy+}) para este serviço.

11. ecosif-compliance

11.1 Função e tecnologia

11.2 Diagrama (compliance)

flowchart LR
    subgraph "ecosif-compliance"
        API[API REST]
        Engine[Motor regras]
    end
    Angular[Frontend] --> API
    API --> Engine
    Engine --> DB[(PostgreSQL)]

11.3 Variáveis de ambiente

O ecosif-compliance (Python/Flask) lê variáveis de ambiente em MAIÚSCULAS e mapeia-as para config.json ou config-{ECOSIF_RUNTIME_ENVIRONMENT}.json. Definir na task/contentor.

Variável Como utilizar O que faz
ECOSIF_COMPLIANCE_PORT ex.: 8021 Porta HTTP do serviço (host.port no config).
ECOSIF_HOST_ADDRESS ex.: 0.0.0.0 Endereço de escuta (host.address).
ECOSIF_DB_SERVER Host do PostgreSQL database.host.
ECOSIF_DB_PORT ex.: 5432 database.port.
ECOSIF_DB_LOGIN ex.: ecosif Nome da base (database.name).
ECOSIF_DB_USER ex.: ecosif_compliance Utilizador da base.
ECOSIF_DB_PASSWORD Senha (em segredos) database.password.
ECOSIF_CORS URL do frontend, ex.: https://app.ecosif.banco.com.br Origens CORS (cors.allowed_origins).
ECOSIF_RUNTIME_ENVIRONMENT ex.: prod Escolha do arquivo: prod → config-prod.json.
ECOSIF_DEBUG_MODE false em produção runtime.debug.
ECOSIF_SESSION_TIMEOUT ex.: 30 (minutos) session.timeout.
ECOSIF_LOGMODE_ROOT ex.: INFO Nível de log (logging).
ECOSIF_COMPLIANCE_CONTEXT_PATH ex.: /ecosif-compliance Path do serviço no ecosif-structure.

11.4 Passo a passo de implantação (ecosif-compliance)

  1. Obter a imagem Docker do registo (tag do release). Ex.: docker pull <registro>/ecosif-compliance:<tag>.
  2. Configurar variáveis de ambiente do contentor (ECOSIF_DB_SERVER, ECOSIF_DB_PASSWORD, ECOSIF_CORS, ECOSIF_COMPLIANCE_PORT, ECOSIF_RUNTIME_ENVIRONMENT=prod, etc.). A imagem pode usar arquivo config com placeholders resolvidos por variáveis.
  3. Configurar prefixo da aplicação /ecosif-compliance (reverse proxy ou configuração na imagem) para que os endpoints respondam em https://app.ecosif.banco.com.br/ecosif-compliance/....
  4. Subir o contentor (porta 8021 no interior; gunicorn já configurado na imagem).
  5. Health check: endpoint de saúde exposto pela app (ex.: /ecosif-compliance/health).
  6. Mapear no API Gateway /ecosif-compliance (e /ecosif-compliance/{proxy+}) para este serviço.

12. ecosif-automations

12.1 Função e tecnologia

12.2 Diagrama (fluxo automatizações)

flowchart LR
    S3[S3 Bucket] --> Lambda[Lambda Import]
    Lambda --> SQS[SQS Fila]
    SQS --> Disp[Lambda Dispatcher]
    Disp --> API[API moviments/masterdata]
    API --> Mov[ecosif-moviments]
    API --> MD[ecosif-masterdata]

12.3 Variáveis de ambiente

Definir na configuração da função Lambda ou na task ECS do ecosif-automations. Em produção (AWS), ECOSIF_LOCAL_MODE=false e ECOSIF_API_BASE_URL aponta para o domínio das APIs.

Variável Como utilizar O que faz
ECOSIF_API_BASE_URL URL base completa, ex.: https://app.ecosif.banco.com.br Base para chamar as APIs moviments e masterdata.
ECOSIF_LOCAL_MODE false em produção (AWS); true para uso local com arquivos Se false, usa S3/SQS; se true, usa sistema de arquivos local.
ECOSIF_AUTOMATIONS_PORT ex.: 8085 (se o módulo expuser HTTP) Porta do serviço quando em modo ECS/HTTP.
ECOSIF_AUTOMATIONS_CONTEXT_PATH ex.: /ecosif-automations Path quando exposto atrás do API Gateway.
AWS_REGION ex.: us-east-1 Região AWS dos recursos (bucket, filas).
AWS_S3_BUCKET ou AWS_S3_BUCKET_NAME Nome do bucket S3 Bucket para arquivos de entrada/saída da importação.
AWS_S3_ERROR_FOLDER ex.: importError/ Prefixo S3 para arquivos com erro.
AWS_S3_IMPORTED_FOLDER ex.: imported/ Prefixo S3 para arquivos importados com sucesso.
AWS_S3_REPORTS_FOLDER ex.: imported/reports/ Prefixo S3 para relatórios de processamento.
AWS_SQS_QUEUE_URL URL da fila SQS (dispatcher) Fila que o Lambda dispatcher consome.
AWS_SQS_ENTRIES_QUEUE_URL URL da fila SQS (import) Fila para onde o Lambda de import envia mensagens.
AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY Credenciais AWS (se não usar IAM role) Acesso a S3 e SQS.
LAMBDA_RUNTIME ex.: java17 Runtime da função Lambda.
LAMBDA_TIMEOUT ex.: 300 (segundos) Timeout da Lambda.
LAMBDA_MEMORY_SIZE ex.: 512 (MB) Memória alocada à Lambda.

12.4 Passo a passo de implantação (ecosif-automations)

  1. APIs (moviments, masterdata) já implantadas e acessíveis em ECOSIF_API_BASE_URL.
  2. Obter as imagens Docker ou pacotes Lambda do registo/release (imagens ou artefactos gerados no tag GitHub para as funções de import e dispatcher).
  3. AWS: criar bucket S3, filas SQS; implantar as funções Lambda (ou tarefas ECS) usando as imagens/artefactos fornecidos.
  4. Configurar variáveis nas Lambdas ou na task ECS: ECOSIF_API_BASE_URL, AWS_REGION, bucket, filas.
  5. Credenciais: IAM roles (Lambdas/ECS) ou variáveis AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY.
  6. Testar: upload de arquivo no bucket e verificar processamento e chamadas às APIs.
  7. Se existir API HTTP neste módulo: obter a imagem correspondente e mapear /ecosif-automations no API Gateway.

13. Checklist pós-implantação


Fim do documento. Para detalhes adicionais por módulo, consultar a pasta docs/ de cada repositório (operational.md, aws-ecs-api-gateway.md).

Equipe eCosif · Instrução Técnica de Implantação em Produção