Documentação Operacional — ecosif-database

Público-alvo: DevOps / SRE
Módulo: ecosif-database (biblioteca JAR)


1. Natureza Operacional do Módulo

O ecosif-database é uma biblioteca (JAR). Ele não é implantado nem executado como processo próprio. As variáveis de ambiente, requisitos de infraestrutura e estratégia de logs aplicam-se aos serviços que dependem desta biblioteca (ecosif-auth, ecosif-masterdata, etc.), pois o application.yml e o logback-spring.xml são empacotados no JAR e utilizados quando o classpath do consumidor os incorpora ou sobrescreve.


2. Variáveis de Ambiente

Extraídas do application.yml e do logback-spring.xml. Devem ser definidas no ambiente de execução dos serviços que consomem a biblioteca.

2.1 Banco de Dados (PostgreSQL)

Variável Obrigatória Descrição Exemplo
ECOSIF_DB_SERVER Sim Host do PostgreSQL localhost ou db.ecosif.internal
ECOSIF_DB_PORT Sim Porta do PostgreSQL 5432
ECOSIF_DB_LOGIN Sim Nome do banco de dados ecosif
ECOSIF_DB_USER Sim Usuário do banco ecosif_app
ECOSIF_DB_PASSWORD Sim Senha do usuário (secret)

Uso no application.yml:

spring:
  datasource:
    url: "jdbc:postgresql://${ECOSIF_DB_SERVER}:${ECOSIF_DB_PORT}/${ECOSIF_DB_LOGIN}"
    username: ${ECOSIF_DB_USER}
    password: ${ECOSIF_DB_PASSWORD}

2.2 Hibernate / JPA

Variável Obrigatória Descrição Valores típicos
HIBERTENATE_MODE Sim* Comportamento DDL do Hibernate validate, update, create, create-drop, none

* Em produção recomenda-se validate. Em desenvolvimento pode ser update.

2.3 Autenticação e Segurança

Variável Obrigatória Descrição Observação
AUTH_TOKEN_SECRET Conforme serviço Chave secreta para geração/validação de JWT Usado por serviços que implementam auth
TOKEN_EXPIRATION Conforme serviço Tempo de expiração do token (ms) Ex.: 86400000 (24h)
AUTH2_CLIENTID Conforme uso OAuth2 Client ID (ex.: Google) OAuth2 client
AUTH2_SECRET Conforme uso OAuth2 Client Secret OAuth2 client

2.4 Logs

Variável Obrigatória Descrição Valores / Padrão
ECOSIF_LOGSHOW Não Exibir SQL no log (JPA) true / false (padrão: false)
ECOSIF_LOGMODE_SPRING Não Nível de log Spring Padrão: INFO
ECOSIF_LOGMODE_HIBERNATE_SQL Não Nível de log SQL Hibernate Padrão: INFO (yml) / WARN (logback)
ECOSIF_LOGMODE_HIBERNATE Não Nível de log Hibernate (descriptor/transaction) Padrão: INFO
ECOSIF_LOGMODE_DATABASE Não Nível do logger io.ecosif.database Padrão: INFO
ECOSIF_LOGMODE_HIBERNATE_SQL Não Nível dos loggers SQL no logback Padrão: WARN
ECOSIF_LOGMODE_ROOT Não Nível root do logback Padrão: INFO

Nota: Todas as variáveis de ambiente devem ser definidas em MAIÚSCULAS (ex.: ECOSIF_LOGMODE_ROOT, ECOSIF_LOGMODE_DATABASE, ECOSIF_LOGMODE_HIBERNATE_SQL).


3. Requisitos de Infraestrutura

3.1 Onde a Biblioteca é Usada

A biblioteca não tem processo, porta nem health check próprios. Os requisitos abaixo aplicam-se aos serviços que a utilizam (ecosif-auth, ecosif-masterdata, ecosif-moviments, ecosif-querys, ecosif-reports, ecosif-compliance).

3.2 Recursos Comuns aos Serviços Consumidores

Recurso Requisito
Banco de dados PostgreSQL 12+ (recomendado 15+), acessível na rede dos serviços
Portas Definidas por cada serviço (ex.: 8080, 8081); esta lib não abre porta
Rede Conectividade dos pods/instâncias dos serviços até o PostgreSQL
Secrets ECOSIF_DB_*, AUTH_TOKEN_SECRET, e opcionalmente OAuth2, via vault, Secrets Manager ou variáveis de ambiente

3.3 Dependências entre Módulos


4. Estratégia de Logs (logback-spring.xml)

A biblioteca inclui logback-spring.xml. Em cenários em que o serviço consumidor não define seu próprio logback, ou inclui este como recurso, o comportamento abaixo se aplica.

4.1 Perfis Spring

Perfil Comportamento
Não prod (!prod) Logs em CONSOLE (stdout).
prod Logs em arquivo + arquivo de erros.

4.2 Desenvolvimento / Não Prod

4.3 Produção (perfil prod)

Appender Arquivo Política de rotação Tamanho máximo por arquivo Retenção Tamanho total (apenas FILE)
FILE logs/ecosif-database.log SizeAndTimeBased 100MB 30 dias 3GB
ERROR_FILE logs/ecosif-database-error.log SizeAndTimeBased 50MB 90 dias -

4.4 Loggers Específicos

Logger Variável de nível Padrão
io.ecosif.database ECOSIF_LOGMODE_DATABASE INFO
org.hibernate.SQL ECOSIF_LOGMODE_HIBERNATE_SQL WARN
org.hibernate.type.descriptor.sql.BasicBinder ECOSIF_LOGMODE_HIBERNATE_SQL WARN
Root ECOSIF_LOGMODE_ROOT INFO

4.5 Resumo para SRE


5. Build e Distribuição da Biblioteca

Para detalhes de uso da biblioteca por desenvolvedores, veja ../architecture/modelo_e_consumo.md. Para visão de negócio, veja ../user/visao_geral.md.