Projeto eCosif 05/2026

Instrução Técnica de Implantação

versão: 0.7.05.202605280

versão documento data responsável
0.7.05.202605280 28/05/2026 José Augusto de Lima Pereira

Índice

  1. Introdução e versões
  2. Arquitetura geral e mapeamento de URLs
  3. Pré-requisitos e criação do banco de dados
  4. Variáveis de ambiente (visão geral)
  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 (Lambda + SQS)
  13. Implementação na AWS (ECS, API Gateway, Lambda, SQS)
  14. Ordem sugerida de implantação
  15. Checklist pós-implantação

Modelo de entrega ao cliente

O cliente não recebe os fontes do projeto. A entrega é feita por:

Não há build no cliente (mvn, npm, etc.). O processo é configuração de ambiente, deploy dos artefatos e integração com AWS.

Referências de infraestrutura no repositório:


1. Introdução e versões

O eCosif é um ecossistema com frontend Angular e APIs backend para autenticação, cadastros, lançamentos, consultas, relatórios, conformidade e automação de importação.

1.1 Versões dos módulos (release 0.7.05)

Módulo Versão Artefato
ecosif-angular 0.7.05.202605280 disoft/ecosif-angular:0.7.05.202605280
ecosif-auth 0.7.05.202605280 disoft/ecosif-auth:0.7.05.202605280
ecosif-masterdata 0.7.05.202605280 disoft/ecosif-masterdata:0.7.05.202605280
ecosif-moviments 0.7.05.202605280 disoft/ecosif-moviments:0.7.05.202605280
ecosif-querys 0.7.05.202605280 disoft/ecosif-querys:0.7.05.202605280
ecosif-reports 0.7.05.202605280 disoft/ecosif-reports:0.7.05.202605280
ecosif-compliance 0.7.05.202605280 disoft/ecosif-compliance:0.7.05.202605280
ecosif-automations 0.7.05.202605280 ZIP Lambda (https://files.disoft.com.br/)

2. Arquitetura geral e mapeamento de URLs

2.1 Domínio único (produção)

Exemplo: https://app.ecosif.banco.com.br

Path Serviço Runtime
/ ecosif-angular ECS/Nginx
/ecosif-auth ecosif-auth ECS/Spring Boot
/ecosif-masterdata ecosif-masterdata ECS/Spring Boot
/ecosif-moviments ecosif-moviments ECS/Spring Boot
/ecosif-querys ecosif-querys ECS/Spring Boot
/ecosif-reports ecosif-reports ECS/Spring Boot
/ecosif-compliance ecosif-compliance ECS/Flask

2.2 Automations no fluxo

O ecosif-automations não expõe rota HTTP pública via ECS/API Gateway. O fluxo ocorre por:


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

3.1 Pré-requisitos gerais

3.2 Criação do banco (exemplo SQL)

CREATE DATABASE ecosif
  WITH ENCODING = 'UTF8'
  LC_COLLATE = 'pt_BR.UTF-8'
  LC_CTYPE = 'pt_BR.UTF-8'
  TEMPLATE = template0;

-- conectar: \c ecosif

CREATE USER ecosif_auth WITH PASSWORD '<senha-auth>';
GRANT ALL PRIVILEGES ON DATABASE ecosif TO ecosif_auth;
GRANT ALL ON SCHEMA public TO ecosif_auth;

CREATE USER ecosif_masterdata WITH PASSWORD '<senha-masterdata>';
GRANT CONNECT ON DATABASE ecosif TO ecosif_masterdata;
GRANT USAGE ON SCHEMA public TO ecosif_masterdata;

CREATE USER ecosif_moviments WITH PASSWORD '<senha-moviments>';
GRANT CONNECT ON DATABASE ecosif TO ecosif_moviments;
GRANT USAGE ON SCHEMA public TO ecosif_moviments;

CREATE USER ecosif_querys WITH PASSWORD '<senha-querys>';
GRANT CONNECT ON DATABASE ecosif TO ecosif_querys;
GRANT USAGE ON SCHEMA public TO ecosif_querys;

CREATE USER ecosif_reports WITH PASSWORD '<senha-reports>';
GRANT CONNECT ON DATABASE ecosif TO ecosif_reports;
GRANT USAGE ON SCHEMA public TO ecosif_reports;

CREATE USER ecosif_compliance WITH PASSWORD '<senha-compliance>';
GRANT CONNECT ON DATABASE ecosif TO ecosif_compliance;
GRANT USAGE ON SCHEMA public TO ecosif_compliance;

Observação: ecosif-auth deve subir primeiro com Flyway para criar/atualizar schema.


4. Variáveis de ambiente (visão geral)

4.1 Compartilhadas

Variável Uso
POSTGRES_HOST, POSTGRES_PORT, POSTGRES_DB, POSTGRES_USER, POSTGRES_PASSWORD Conexão banco
AUTH_TOKEN_SECRET JWT compartilhado entre serviços Java
ECOSIF_CORS CORS das APIs
HIBERNATE_DDL_AUTO Política Hibernate
ECOSIF_LOGMODE_*, ECOSIF_LOGSHOW, LOG_FORMAT Logging

4.2 Referência operacional

As tabelas detalhadas por módulo estão nos release notes da pasta releases/0.7.05.202605280/.


5. ecosif-angular (frontend)

5.1 Função e tecnologia

5.2 Variáveis de ambiente

Definir na task/contentor do frontend. O entrypoint usa-as para gerar window.env / config.json. Com domínio único, as bases das APIs são paths relativos.

Variável Como utilizar O que faz
ECOSIF_ANGULAR_API_AUTH_URL /ecosif-auth Base URL do auth.
ECOSIF_ANGULAR_API_MASTERDATA_URL /ecosif-masterdata Base do masterdata.
ECOSIF_ANGULAR_API_MOVIMENTS_URL /ecosif-moviments Base do moviments.
ECOSIF_ANGULAR_API_QUERYS_URL /ecosif-querys Base do querys.
ECOSIF_ANGULAR_API_REPORTS_URL /ecosif-reports Base do reports.
ECOSIF_ANGULAR_API_COMPLIANCE_URL /ecosif-compliance Base do compliance.
ECOSIF_ENABLE_RUNTIME true em Docker/ECS Usar config runtime do container (config.json + env.js); não confundir com ECOSIF_ENVIRONMENT
ECOSIF_ANGULAR_HIDE_ADMIN_MENU true (prod) Esconde menu Ferramentas Administrativas.
ECOSIF_ANGULAR_PORT 80 Porta Nginx no contentor.

Variáveis opcionais (ecosif-angular)

Variável Como utilizar O que faz
ECOSIF_ANGULAR_DEBUG true/false Ativa logs/comportamentos de debug no frontend.
ECOSIF_ANGULAR_AUTH_TOKEN token fixo (quando aplicável) Token default para cenários específicos de integração.
ECOSIF_PAGINATION_SIZE ex.: 100 Tamanho padrão de paginação na UI.
ECOSIF_API_BASE_URL URL absoluta, se necessário Base global para APIs quando não usar apenas paths relativos.
ECOSIF_AZURE_CLIENT_ID, ECOSIF_AZURE_TENANT_ID, ECOSIF_AZURE_AUTHORITY valores do Entra ID Habilita autenticação Microsoft/Entra ID.

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

  1. Obter a imagem Docker do registo (ex.: ECR).
  2. Configurar variáveis de ambiente na task definition (ECS) ou no contentor.
  3. Executar o contentor (porta HTTP do Nginx) e validar health check /health.
  4. Expor o serviço na raiz (path /) no API Gateway ou ALB.
  5. Validar: abrir https://<domínio> e verificar login.

6. ecosif-auth

6.1 Função e tecnologia

6.2 Variáveis de ambiente

Variável Como utilizar O que faz
ECOSIF_AUTH_PORT 8080 Porta HTTP do serviço.
ECOSIF_AUTH_CONTEXT_PATH /ecosif-auth Context path para API Gateway/ALB.
POSTGRES_HOST, POSTGRES_PORT, POSTGRES_DB, POSTGRES_USER, POSTGRES_PASSWORD Endpoint e credenciais do PostgreSQL Conexão JDBC.
AUTH_TOKEN_SECRET Secret forte e compartilhado Chave JWT (deve ser igual nos módulos Java).
TOKEN_EXPIRATION Ex.: 86400000 Expiração do token em ms.
ECOSIF_CORS URL do frontend Origens permitidas no CORS.
HIBERNATE_DDL_AUTO validate Política de schema Hibernate em produção.
ECOSIF_FLYWAY_ENABLED true na primeira subida Executa migrações Flyway.

Variáveis opcionais (ecosif-auth)

Variável Como utilizar O que faz
ECOSIF_LOGSHOW true/false Habilita saída de logs adicionais.
LOG_FORMAT default/json Formato de log no runtime.
ECOSIF_LOGMODE_ROOT, ECOSIF_LOGMODE_SPRING, ECOSIF_LOGMODE_HIBERNATE_SQL, ECOSIF_LOGMODE_HIBERNATE ex.: INFO Níveis de log por categoria.
AUTH2_CLIENT_ID, AUTH2_SECRET credenciais OAuth2 Integração opcional com OAuth2 social/corporativo.
SPRING_AUTOCONFIGURE_EXCLUDE classe de auto-config Ajusta boot de OAuth2 quando necessário.

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

  1. Obter imagem Docker do registo.
  2. Configurar variáveis na task ECS; segredos via Secrets Manager.
  3. Subir o serviço ECS com Flyway ativo na primeira execução.
  4. Configurar health check: /ecosif-auth/actuator/health.
  5. Mapear /ecosif-auth e /ecosif-auth/{proxy+} no API Gateway.

7. ecosif-masterdata

7.1 Função e tecnologia

7.2 Variáveis de ambiente

Variável Como utilizar O que faz
ECOSIF_MASTERDATA_PORT 8080 Porta HTTP do serviço.
ECOSIF_MASTERDATA_CONTEXT_PATH /ecosif-masterdata Context path da API.
POSTGRES_* Endpoint e credenciais PostgreSQL Conexão JDBC.
AUTH_TOKEN_SECRET Mesmo valor do auth Validação JWT.
TOKEN_EXPIRATION Ex.: 86400000 Expiração de token.
ECOSIF_CORS URL frontend CORS do módulo.
HIBERNATE_DDL_AUTO validate Política de schema.

Variáveis opcionais (ecosif-masterdata)

Variável Como utilizar O que faz
ECOSIF_LOGSHOW true/false Ativa logs adicionais.
LOG_FORMAT default/json Formato de saída de logs.
ECOSIF_LOGMODE_ROOT, ECOSIF_LOGMODE_SPRING, ECOSIF_LOGMODE_HIBERNATE_SQL, ECOSIF_LOGMODE_HIBERNATE ex.: INFO Níveis de log por categoria.
AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_DEFAULT_REGION, AWS_S3_BUCKET quando necessário Integração opcional com S3.

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

  1. Obter imagem Docker do registo.
  2. Configurar variáveis de ambiente da task ECS.
  3. Subir serviço ECS após ecosif-auth disponível.
  4. Configurar health check /ecosif-masterdata/actuator/health.
  5. Mapear /ecosif-masterdata e /ecosif-masterdata/{proxy+}.

8. ecosif-moviments

8.1 Função e tecnologia

8.2 Variáveis de ambiente

Variável Como utilizar O que faz
ECOSIF_MOVIMENTS_PORT 8080 Porta HTTP do serviço.
ECOSIF_MOVIMENTS_CONTEXT_PATH /ecosif-moviments Context path da API.
POSTGRES_* Endpoint e credenciais PostgreSQL Conexão JDBC.
AUTH_TOKEN_SECRET Mesmo valor do auth Validação JWT.
ECOSIF_CORS URL frontend CORS do módulo.
HIBERNATE_DDL_AUTO validate Política de schema.
ECOSIF_FLYWAY_ENABLED true/false Habilita migração no arranque.
AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_DEFAULT_REGION, AWS_S3_BUCKET Quando houver integração de arquivos Integração S3/AWS.

Variáveis opcionais (ecosif-moviments)

Variável Como utilizar O que faz
TOKEN_EXPIRATION Ex.: 86400000 Expiração de token JWT no módulo.
ECOSIF_ENVIRONMENT dev/hml/qas/prd Identificação de ambiente na aplicação.
ECOSIF_LOGSHOW true/false Ativa logs extras.
LOG_FORMAT default/json Formato de logs.
ECOSIF_LOGMODE_ROOT, ECOSIF_LOGMODE_SPRING, ECOSIF_LOGMODE_HIBERNATE_SQL, ECOSIF_LOGMODE_HIBERNATE ex.: INFO Níveis de log por categoria.

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

  1. Obter imagem Docker do registo.
  2. Configurar variáveis de ambiente da task ECS.
  3. Subir serviço ECS após auth e masterdata.
  4. Configurar health check /ecosif-moviments/actuator/health.
  5. Mapear /ecosif-moviments e /ecosif-moviments/{proxy+}.

9. ecosif-querys

9.1 Função e tecnologia

9.2 Variáveis de ambiente

Variável Como utilizar O que faz
ECOSIF_QUERYS_PORT 8080 Porta HTTP do serviço.
ECOSIF_QUERYS_CONTEXT_PATH /ecosif-querys Context path da API.
POSTGRES_* Endpoint e credenciais PostgreSQL Conexão JDBC.
AUTH_TOKEN_SECRET Mesmo valor do auth Validação JWT.
ECOSIF_CORS URL frontend CORS do módulo.
HIBERNATE_DDL_AUTO validate Política de schema.

Variáveis opcionais (ecosif-querys)

Variável Como utilizar O que faz
TOKEN_EXPIRATION Ex.: 86400000 Expiração de token JWT no módulo.
ECOSIF_LOGSHOW true/false Ativa logs adicionais.
LOG_FORMAT default/json Formato de logs.
ECOSIF_LOGMODE_ROOT, ECOSIF_LOGMODE_SPRING, ECOSIF_LOGMODE_HIBERNATE_SQL, ECOSIF_LOGMODE_HIBERNATE ex.: INFO Níveis de log por categoria.
AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_DEFAULT_REGION, AWS_S3_BUCKET quando necessário Integração opcional com AWS/S3.

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

  1. Obter imagem Docker do registo.
  2. Configurar variáveis de ambiente na task ECS.
  3. Subir serviço ECS após moviments.
  4. Configurar health check /ecosif-querys/actuator/health.
  5. Mapear /ecosif-querys e /ecosif-querys/{proxy+}.

10. ecosif-reports

10.1 Função e tecnologia

10.2 Variáveis de ambiente

Variável Como utilizar O que faz
ECOSIF_REPORTS_PORT 8080 Porta HTTP do serviço.
ECOSIF_REPORTS_CONTEXT_PATH /ecosif-reports Context path da API.
POSTGRES_* Endpoint e credenciais PostgreSQL Conexão JDBC.
AUTH_TOKEN_SECRET Mesmo valor do auth Validação JWT.
ECOSIF_CORS URL frontend CORS do módulo.
HIBERNATE_DDL_AUTO validate Política de schema.
AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_DEFAULT_REGION, AWS_S3_BUCKET Quando houver bucket de relatórios Integração S3/AWS.

Variáveis opcionais (ecosif-reports)

Variável Como utilizar O que faz
TOKEN_EXPIRATION Ex.: 86400000 Expiração de token JWT no módulo.
ECOSIF_LOGSHOW true/false Ativa logs adicionais.
LOG_FORMAT default/json Formato de logs.
ECOSIF_LOGMODE_ROOT, ECOSIF_LOGMODE_SPRING, ECOSIF_LOGMODE_HIBERNATE_SQL, ECOSIF_LOGMODE_HIBERNATE ex.: INFO Níveis de log por categoria.

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

  1. Obter imagem Docker do registo.
  2. Configurar variáveis de ambiente na task ECS.
  3. Subir serviço ECS após querys.
  4. Configurar health check /ecosif-reports/actuator/health.
  5. Mapear /ecosif-reports e /ecosif-reports/{proxy+}.

11. ecosif-compliance

11.1 Função e tecnologia

11.2 Variáveis de ambiente

Variável Como utilizar O que faz
ECOSIF_COMPLIANCE_PORT 8021 (ou 8080) Porta HTTP do serviço.
ECOSIF_COMPLIANCE_CONTEXT /ecosif-compliance Context path da API.
ECOSIF_DB_SERVER, ECOSIF_DB_PORT, ECOSIF_DB_LOGIN, ECOSIF_DB_USER, ECOSIF_DB_PASSWORD Endpoint e credenciais banco Conexão do módulo compliance.
ECOSIF_CORS URL frontend CORS do módulo.
ECOSIF_RUNTIME_ENVIRONMENT dev/hml/qas/prd Ambiente de execução.
ECOSIF_LOGMODE_ROOT INFO Nível de log principal.
ECOSIF_DEBUG_MODE false Debug da aplicação.

Variáveis opcionais (ecosif-compliance)

Variável Como utilizar O que faz
ECOSIF_HOST_ADDRESS 0.0.0.0 Endereço de bind do serviço.
ECOSIF_SESSION_TIMEOUT ex.: 30 Timeout de sessão da aplicação.
POSTGRES_HOST, POSTGRES_PORT, POSTGRES_DB, POSTGRES_USER, POSTGRES_PASSWORD aliases de conexão Pode substituir ECOSIF_DB_* conforme entrypoint.

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

  1. Obter imagem Docker do registo.
  2. Configurar variáveis de ambiente na task ECS.
  3. Subir task/service do compliance.
  4. Configurar health check /health.
  5. Mapear /ecosif-compliance e /ecosif-compliance/{proxy+}.
  6. No frontend, definir ECOSIF_ANGULAR_API_COMPLIANCE_URL=/ecosif-compliance.

12. ecosif-automations (Lambda + SQS)

12.1 Função e tecnologia

12.2 Variáveis de ambiente

Variável Como utilizar O que faz
APP_ENV dev/hml/qas/prd Ambiente lógico do automations.
AWS_REGION, AWS_DEFAULT_REGION Ex.: us-west-1 Região de operação dos serviços AWS.
AWS_S3_BUCKET, AWS_S3_BUCKET_NAME Bucket de importação Origem/destino de arquivos da automação.
AWS_SQS_ENTRIES_QUEUE_URL URL da fila entries Encadeia processamento de entries.
AWS_SQS_CONSOLIDATION_QUEUE_URL URL da fila FIFO de consolidação Encadeia consolidação final.
AWS_SQS_CONSOLIDATION_DEFER_QUEUE_URL URL da fila defer Suporte à consolidação diferida.
ECOSIF_API_BASE_URL URL base interna das APIs Comunicação com módulos HTTP do ecossistema.
ECOSIF_API_URL_MODE alb (ex.) Modo de composição de URLs.
ECOSIF_DB_SECRET ARN de secret de banco Credenciais de BD por segredo.
ECOSIF_AUTOMATIONS_SERVICE_SECRET ARN de secret de serviço Segredo de autenticação interna do módulo.
CT32_MASTER_KEY CT32.LD Arquivo de referência obrigatório para importação.
CONSOLIDATION_DEFER_ENABLED false Ativa/desativa defer.
CONSOLIDATION_DEBOUNCE_SEC, CONSOLIDATION_MAX_WAIT_SEC 60 Janela de consolidação diferida.
CONSOLIDATION_WINDOW_TABLE, CONSOLIDATION_LOCK_TABLE nomes por ambiente Controle de janela e lock de consolidação.

Variáveis opcionais (ecosif-automations)

Variável Como utilizar O que faz
AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN usar quando não houver role IAM Credenciais explícitas para SDK AWS.
AWS_S3_ERROR_FILES_FOLDER, AWS_S3_IMPORTED_FILES_FOLDER, AWS_S3_REPORTS_DETAILS_FOLDER ajustar prefixes conforme operação Organização de arquivos e relatórios detalhados no bucket.
LAMBDA_RUNTIME, LAMBDA_TIMEOUT, LAMBDA_MEMORY_SIZE documentação operacional por ambiente Referência de runtime para padronização dos handlers.

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

  1. Baixar o pacote da release:
export ZIP_URL="https://files.disoft.com.br/ecosif/aws/ecosif-automations-0.7.05.202605280.zip"
export ZIP_FILE="ecosif-automations-0.7.05.202605280.zip"
curl -fL "$ZIP_URL" -o "$ZIP_FILE"
unzip -t "$ZIP_FILE"
  1. Criar filas SQS e DLQ:
export AWS_REGION=us-west-1
export ACCOUNT_ID=123456789012
export PROJECT=ecosif
export ENV=dev
export PREFIX="${PROJECT}-${ENV}-automations"

aws sqs create-queue --region "$AWS_REGION" --queue-name "${PREFIX}-entries-dlq"
aws sqs create-queue --region "$AWS_REGION" --queue-name "${PREFIX}-consolidation-dlq"
aws sqs create-queue --region "$AWS_REGION" --queue-name "${PREFIX}-consolidation-defer-dlq"
  1. Criar Lambdas:
aws lambda create-function \
  --region "$AWS_REGION" \
  --function-name "${PROJECT}-${ENV}-automations-import" \
  --runtime python3.11 \
  --handler src.handlers.import_handler.lambda_handler \
  --zip-file "fileb://${ZIP_FILE}" \
  --role "arn:aws:iam::${ACCOUNT_ID}:role/ecosif-${ENV}-lambda-execution-role" \
  --timeout 120 \
  --memory-size 512 \
  --environment file://import-env.json
  1. Repetir criação para entries e consolidation com os handlers corretos.
  2. Mapear filas para Lambdas:
aws lambda create-event-source-mapping \
  --region "$AWS_REGION" \
  --function-name "${PROJECT}-${ENV}-automations-entries" \
  --event-source-arn "<entries-queue-arn>" \
  --batch-size 1 \
  --enabled
  1. Repetir o mapeamento para consolidation.
  2. Configurar trigger S3 (opcional/recomendado):
aws lambda add-permission \
  --region "$AWS_REGION" \
  --function-name "${PROJECT}-${ENV}-automations-import" \
  --statement-id "allow-s3-invoke-import" \
  --action "lambda:InvokeFunction" \
  --principal s3.amazonaws.com \
  --source-arn "arn:aws:s3:::ecosif-${ENV}-import-${ACCOUNT_ID}"
  1. Validar funções e logs:
aws lambda get-function-configuration --region "$AWS_REGION" --function-name "${PROJECT}-${ENV}-automations-import"
aws logs tail "/aws/lambda/${PROJECT}-${ENV}-automations-import" --follow --region "$AWS_REGION"

13. Implementação na AWS (ECS, API Gateway, Lambda, SQS)

13.1 ECS + API Gateway (módulos HTTP)

13.2 Domínio e certificado

  1. Criar certificado ACM (validação DNS)
  2. Criar domínio customizado no API Gateway
  3. Associar API e stage
  4. Configurar DNS (Route53 ou externo)

13.3 Automations


14. Ordem sugerida de implantação

  1. Infra base: VPC, subnets, RDS, secrets
  2. ECS APIs: auth, masterdata, moviments, querys, reports, compliance
  3. ECS frontend: angular
  4. API Gateway + domínio customizado + certificado
  5. Automations: SQS + Lambdas + trigger S3
  6. Testes ponta a ponta

15. Checklist pós-implantação


NOTAS

Para detalhes finos por módulo, consultar os release notes individuais em releases/0.7.05.202605280/.

Fim do documento.