Pular para o conteúdo principal

O que é AppCore

Imagine a mesma aplicação instalada em dois lugares. Em uma loja ela roda em um notebook e precisa continuar funcionando sem internet. Em outra instalação ela roda em cluster, com control plane, leases, Peer RPC e update supervisionado. O código de negócio não deveria ter duas arquiteturas.

AppCore existe para essa fronteira.

Ele não é web framework, banco de dados, ERP ou plataforma de negócio. Ele é um runtime host que torna decisões de infraestrutura explícitas, versionadas e testáveis.

O problema​

Backends comuns acumulam comportamento oculto do Runtime:

  • configuração mistura identidade, paths, secrets, rede e feature toggles;
  • retries entram nos handlers em vez das fronteiras de command;
  • jobs em background iniciam fora da supervisão de lifecycle;
  • writes e backups ficam implícitos no client de database escolhido;
  • liderança distribuída vira booleano em vez de lease com fencing token;
  • updates trocam arquivos antes que o processo novo prove health.

AppCore separa ownership:

ContratoDonoContémNão contém
Application Manifestaplicaçãoidentidade, compatibilidade, capabilities, requisitospaths, provider IDs, endpoints, secrets
Deployment Manifestinstalaçãomodo, providers, rede, paths, secret refs, watchdogregras de negócio, schemas, source
Runtime Manifestruntimeversão observada, node/core, health, plataformaoverrides do usuário
Código de negócioaplicaçãocommands, queries, handlers, state, decisionscomposição do runtime

O que roda quando uma aplicação AppCore inicia​

O código da aplicação usa App::prepare para validar manifests e reunir os registros de negócio. O executável de deployment selecionado então possui a composição:

Se os dois manifests não tiverem a mesma identidade, o bootstrap falha. Uma config removida para na update wall com NO MORE SUPPORTED PLEASE UPDATE. Um provider selecionado e ausente também falha, sem fallback silencioso.

Quando usar​

Use AppCore quando a aplicação precisa de:

  • deployments local-first ou cluster;
  • contratos explícitos de command e query;
  • storage durável e policy de backup;
  • endpoints de health e status pertencentes ao Runtime;
  • serviços supervisionados;
  • sync com validação de sequência e checkpoints;
  • Peer RPC ou relay de Gateway entre cores;
  • updates com autenticidade, staging, activation, health gate e rollback.

Quando não usar​

Evite quando um servidor HTTP stateless e um banco gerenciado bastam. AppCore intencionalmente não fornece:

  • ORM geral;
  • workflows de produto;
  • implementação OAuth;
  • vault gerenciado de produção;
  • terminação TLS inbound para todo deployment;
  • RAFT ou consenso multi-master;
  • resolução automática de conflitos de domínio.

Limitations​

  • AppCore oferece contratos de runtime; ele não escreve o modelo de negócio.
  • Deployments ainda precisam escolher providers, paths, secrets e process manager corretamente.
  • O runtime valida envelopes e manifests, mas não prova que handlers de domínio estão corretos.
  • A linha estável 1.0 prefere falha explícita a compatibilidade automática com formatos antigos.

Essas omissões são fronteiras de design. Elas mantêm a infraestrutura do Runtime reutilizável por aplicações que não compartilham o mesmo domínio de negócio. É também por isso que a documentação começa pelos manifests, e não por uma lista de crates.

Leia depois​

Próximo capítulo: contrato de três artefatos.