Vai al contenuto

deploy as code · workflow durevoli DBOS

Il tuo processo di deploy, sotto controllo.#

Definisci cosa rilasciare. Controlla come arriva in produzione.

Manent è un motore di deploy open source che coordina workflow durevoli, verifica degli artefatti, rollout progressivi e governance dei rilasci su VM, Kubernetes e piattaforme cloud.

~/myapp — manent
$ manent deploy -f release.yml
deploy enqueued: 7c0e… (manent logs -f 7c0e…)
$ manent logs -f 7c0e…
14:03:10 INFO  [secrets]    secrets verified
14:03:12 INFO  [artifacts]  sha256=2d27fbdf… verified
14:03:12 INFO  [qa]         QA passed
14:03:15 INFO  [deploy]     release 1.4.0 activated on 3 targets
14:03:15 INFO  [activation] live
✔ SUCCESS  myapp/prod  1.4.0  kind=promotion
Durevoleriprende dall'ultimo step
Idempotentemai due volte lo stesso deploy
Governatopromozioni · approvazioni · freeze
Osservabilemetriche · tracce · log · DORA

Il deploy si descrive in un file dichiarativo, il descrittore. Il client manent lo legge in YAML e lo invia all'API di manent-server, che lo accoda; un worker lo esegue come workflow durevole DBOS.

release.yml
apiVersion: manent/v1
application: myapp
environment: test
artifact:
  type: application
  name: myapp
  version: 1.2.3
  source: https://artifacts.example.com/myapp/myapp-1.2.3.tar.gz

Cosa offre#

  • Workflow durevoli


    Ogni step è registrato da DBOS: se un worker si interrompe, il deploy riprende dall'ultimo step completato e non esegue due volte ciò che è già stato fatto.

    Architettura

  • Pipeline configurabile


    Segreti, artefatti, QA, deploy, test post deploy e attivazione. Gli step obbligatori non si possono saltare; quelli opzionali si attivano dal descrittore.

    Pipeline e step

  • Plugin di deploy


    Il deploy vero e proprio è delegato a plugin: remote-copy per file via SSH, container per Docker e Podman su VM, kubernetes per i cluster, ecs, lambda, cloudrun, appservice e containerapps per i servizi cloud gestiti di AWS, Google Cloud e Azure, jboss per JBoss EAP e WildFly, windows per IIS, servizi Windows, attività pianificate e pacchetti MSI. Se ne scrivono di nuovi, anche come binari separati via gRPC.

    Scrivere un plugin

  • Interfaccia web


    Deploy, ondate e log in tempo reale, approvazioni, inventario con promozioni e rollback, freeze e metriche DORA, con i permessi dell'API. Incorporata nel server, accessibile, in inglese e italiano.

    Interfaccia web

  • Configurazione per ambiente


    Target, plugin e parametri di ogni ambiente possono stare in Consul. Il descrittore indica solo cosa rilasciare.

    Configurazione di ambiente

  • Pianificazione


    Deploy a un orario preciso o ricorrenti (cron), sulla stessa coda e con gli stessi limiti di concorrenza dei deploy immediati.

    Deploy pianificati

  • Dry-run e callback


    Simula un deploy verificando segreti, artefatto e target senza modificarli. Notifica l'esito di ogni step a endpoint HTTP esterni.

    Dry-run

  • Sicurezza e audit


    Utenti OIDC e token per la CI, permessi per applicazione e ambiente, audit con catena di hash, segreti da Vault e limiti su ciò che un descrittore può chiedere.

    Accesso e audit

  • Rollback automatico


    Se un deploy fallisce, riporta l'ambiente alla release precedente. Le policy stabiliscono per quali tipi di artefatto è possibile.

    Rollback

  • Governance dei rilasci


    Inventario di cosa è in esercizio, promozione obbligatoria tra ambienti, approvazioni, finestre di freeze e rollback manuale.

    Governance

  • Chat e change management


    Notifiche di deploy e approvazioni in Slack e Teams, approvazioni con i pulsanti di Slack, ticket di change in ServiceNow o Jira aperti e chiusi con ogni deploy.

    Integrazioni

  • Rilasci a ondate


    Canary, poi una region e un'AZ alla volta, con tempo di osservazione e health gate su sonde, Prometheus e Alertmanager. Ogni region eseguita dai suoi worker.

    Rilasci a ondate

  • Pronto per l'esercizio


    Metriche Prometheus, tracing OpenTelemetry, log di ogni deploy e metriche DORA. Recovery dei worker persi, drain, retention, immagini container, chart Helm e rilasci firmati.

    Osservabilità

Il percorso di un rilascio#

flowchart LR
    CI["La CI costruisce e testa<br/>l'artefatto"] --> D["Descrittore<br/>cosa rilasciare"]
    D --> G{"Governance<br/>promozione · approvazioni · freeze"}
    G --> W["Workflow durevole<br/>segreti → artefatto → QA → deploy → test"]
    W --> S["Strategia<br/>tutti insieme · ondate · percentuale"]
    S --> T["Target<br/>VM · Kubernetes · cloud · Windows"]
    W -.->|"errore"| R["Rollback automatico"]

Ogni fase viene registrata: il ciclo di vita di un deploy spiega ogni stato, e le tipologie di deploy tutti i modi in cui un rilascio può partire e raggiungere i target.

L'interfaccia web#

Il server serve anche un'interfaccia web, con gli stessi permessi dell'API: segui deploy e ondate in tempo reale, approva, promuovi e torna indietro, guarda cosa gira dove. Gli screenshot vengono da un ambiente demo con cinque applicazioni, tre ambienti e quattro settimane di storico; la guida all'interfaccia web descrive ogni vista.

Deploy
Deploy: ogni deploy, promozione e rollback, con stato, richiedente e durata.
Rilascio a ondate
Rilascio a ondate: approvazione, canary, poi una zona di disponibilità alla volta su due region.
Rollback automatico
Rollback automatico: un health check fallito in eu-central-1 riporta indietro tutte le ondate.
Inventario
Inventario: la release in esercizio per ogni applicazione e ambiente, con promozione e rollback.
Attività
Attività: deploy in corso, in attesa, in coda e pianificati, e i worker che li eseguono.
Metriche
Metriche: metriche DORA calcolate dallo storico dei deploy.

Da dove iniziare#

  • Tutorial


    Sette passi pratici, dal primo deploy via SSH a Kubernetes, rilasci canary, pipeline di CI e produzione.

  • Concetti


    Cosa è e cosa non è manent, il modello, le tipologie di deploy, il ciclo di vita e i livelli di configurazione.

  • Integrazioni


    Configurazioni passo passo per Slack, Teams, ServiceNow, Jira, GitHub, GitLab, Terraform, Vault, Consul, OIDC, Prometheus e altro.

  • Riferimento


    Descrittore, CLI, API HTTP, manent-server e manent.yml.

  • Operazioni


    Installazione, scalabilità, recovery, aggiornamenti, osservabilità e sicurezza per il team di piattaforma.

  • Plugin


    I plugin incorporati per ogni piattaforma, e come scriverne di propri, anche come binari separati.