REFERENCE ARCHITECTURE

Startup MVP — first production deploy

Minimum viable stack for a small team: Gateway, Compute, Datastore, and Insight — expand into full patterns as traffic and compliance grow.

FoundationalPlan: Starter / ProResilience: single-zone

Diagram

Use cases

  • SaaS beta
  • Agency client site
  • Internal dashboard

Components

LayerRoleProduct
EdgePublic DNS + TLS terminationGateway
ApplicationMonolith container (web/api)Compute
PersistenceRelational stateDatastore
OperationsMetrics and alertsInsight

Products

When to use

  • First customer-facing product with a custom domain and SSL.
  • Internal tools for teams under 10 people.
  • Proof-of-concept that must leave localhost this week.

When to avoid

  • Payment card data in scope (PCI) — add Sentinel and HA Datastore first.
  • Expected traffic spikes without Autoscale — upgrade to e-commerce pattern.

Design notes

Start narrow

One Compute service (web+api monolith), one Postgres Datastore, Gateway for DNS/TLS. Archive can wait until you store uploads.

Insight from day one

Even MVPs benefit from error-rate alerts — wire Insight before launch, not after the first outage.

Blueprint

Use this JSON as a starting point when creating a project via the Tesserra API or console. Replace image URLs, domains, and resource references with your values.

json
{
  "nome": "MVP Acme",
  "modo": "simples",
  "ambiente": "prod",
  "recursos": [
    {
      "tipo": "compute",
      "nome": "app",
      "config": {
        "subtipo": "web",
        "imagem": "ghcr.io/acme/app:latest",
        "porta": 3000,
        "replicas_min": 1,
        "replicas_max": 2
      }
    },
    {
      "tipo": "datastore",
      "nome": "db",
      "config": {
        "engine": "postgres",
        "versao": "16",
        "tamanho_gb": 10
      }
    },
    {
      "tipo": "gateway",
      "nome": "dns",
      "config": {
        "dominio": "app.acme.io",
        "tls": true,
        "alvo_recurso_id": "app"
      }
    },
    {
      "tipo": "insight",
      "nome": "obs",
      "config": {
        "retencao_dias": 7,
        "alertas": true
      }
    }
  ]
}
Documentation · Tesserra