Fase 54: Infraestrutura como Código e 1ª Instância
Duração: 4 semanas (28 dias úteis)
Prioridade: 🔴 P0
Onda: S0 — Fundação técnica
Depende de: FASE52, FASE53
Estimativa Total: 112 horas
Status: 🟡 Código entregue — config manual pendente (PILOT_STAGING_CONFIG_TODO.md)
Spec SDD: docs/specs/phases/FASE54-iac.spec.yaml
Handoff: Plano Operacional P3–P7
Objetivo
Provisionar a primeira instância gerenciada (território-piloto) via IaC: Terraform + Helm, com stack completo (API, PostgreSQL, storage, realtime, workers, PSP sandbox).
Repositórios (organização alvo)
| Repo | Stack | Responsabilidade |
|---|---|---|
arah.api |
.NET | API REST /v1, billing, carteira |
arah.app |
Flutter | App mobile |
arah.cockpit |
Web | Painel implementador |
arah.core |
serviço | Registro, federação, ledger |
arah.infra |
IaC | Terraform + Helm |
arah.portal |
Next.js | Site institucional |
Nota: monorepo atual (sraphaz/arah) evolui para esta organização gradualmente.
Pipeline: provisionar instância
- Solicitação no cockpit (futuro) ou
./scripts/provision/provision-pilot-instance.ps1 docker composepiloto ou staging (GHCR) — ver infrastructure/pilot/README.md- Registrar no Core (FASE53) — automático em
verify-pilot-instance.ps1 - Migrar schema + seed território (
Persistence__ApplyMigrations=true) - Health check verde → publicar no app
Scripts (scripts/provision/)
| Script | Função |
|---|---|
provision-pilot-instance.ps1 |
Sobe compose + verificação completa |
verify-pilot-instance.ps1 |
Health → JWT → Core → heartbeat → Online |
get-pilot-admin-token.ps1 |
JWT SystemAdmin (social login piloto) |
register-core-instance.ps1 |
Registro manual no Core |
backup-pilot-db.ps1 |
pg_dump inicial (RPO ≤ 15 min doc) |
verify-stripe-sandbox.ps1 |
Balance API Stripe (STRIPE__SECRETKEY) |
Variáveis de ambiente (piloto/staging)
| Variável | Uso |
|---|---|
Pilot__BootstrapAdminEnabled |
true — cria admin Postgres na 1ª subida |
JWT__SIGNINGKEY |
Assinatura JWT (≥32 chars em prod) |
STRIPE__SECRETKEY |
PSP sandbox (opcional no CI) |
Persistence__Provider |
Postgres no piloto |
Persistence__ApplyMigrations |
true — aplica migrações no start |
CI (deploy staging)
Workflow deploy-staging.yml: após health API+BFF, executa verify-pilot-instance.ps1 (passo FASE54).
Modos de hospedagem
| Modo | Quem opera infra | Caminho |
|---|---|---|
| Gerenciada | Plataforma | Recomendado — piloto |
| Soberana | Implementador | Onda S3 (FASE59) |
Critérios de aceite
- Compose piloto reproduz stack (
infrastructure/pilot/docker-compose.pilot.yml) - Script registra instância no Core (
scripts/provision/register-core-instance.ps1) - Verificação piloto (
scripts/provision/verify-pilot-instance.ps1) integrada ao deploy staging - Bootstrap SystemAdmin Postgres (
Pilot__BootstrapAdminEnabled) - Backup inicial documentado (
scripts/provision/backup-pilot-db.ps1, RPO ≤ 15 min) - JWT funcional em staging (verify-pilot-instance + CI)
- HTTPS opcional via Caddy (
docker compose --profile https) - PSP em sandbox conectado → ver PILOT_STAGING_CONFIG_TODO.md
Configuração manual (TODO ops)
Toda configuração externa (secrets GitHub, Stripe, backup agendado, fechar issue) está centralizada em docs/ops/PILOT_STAGING_CONFIG_TODO.md.