Modello
Architecture diagrams as code using the C4 model - version-controlled, automatically generated, and interactive.
L’ecosistema Goa comprende librerie complementari che rispondono a esigenze comuni nello sviluppo di microservizi. Questi strumenti sono progettati per funzionare perfettamente con Goa, ma possono essere utilizzati anche in modo indipendente.
| Libreria | Scopo | Caratteristiche principali |
|---|---|---|
| Model | Diagrammi di architettura | Diagrammi C4 come codice, controllo di versione, editor interattivo |
| Pulse | Eventi distribuiti | Streaming di eventi, pool di lavoratori, mappe replicate |
| Clue | Osservabilità | Tracing, logging, metriche, controlli di salute |
Model fornisce un DSL Go per descrivere l’architettura del software utilizzando il modello C4. Invece di disegnare diagrammi con strumenti grafici, si definisce l’architettura nel codice:
var _ = Design("My System", "System description", func() {
var System = SoftwareSystem("My System", "Does something useful")
Person("User", "A user of the system", func() {
Uses(System, "Uses")
})
Views(func() {
SystemContextView(System, "Context", "System context diagram", func() {
AddAll()
AutoLayout(RankLeftRight)
})
})
})
Benefici:
Per saperne di più: Documentazione del modello
Pulse fornisce primitive per la costruzione di sistemi distribuiti guidati dagli eventi. È indipendente dal trasporto e funziona con o senza servizi Goa:
// Publish events to a stream
stream.Add(ctx, "user.created", userEvent)
// Subscribe to events
reader.Subscribe(ctx, func(event *Event) error {
return processEvent(event)
})
**Casi d’uso
Per saperne di più: Documentazione Pulse
Clue fornisce strumentazione per i servizi Goa costruiti su OpenTelemetry. Copre i tre pilastri dell’osservabilità:
// Configure OpenTelemetry
cfg := clue.NewConfig(ctx, "myservice", "1.0.0", metricExporter, spanExporter)
clue.ConfigureOpenTelemetry(ctx, cfg)
// Context-based logging
log.Info(ctx, "processing request", log.KV{"user_id", userID})
// Health checks
checker := health.NewChecker(health.NewPinger("db", dbAddr))
Caratteristiche:
Per saperne di più: Documentazione Clue
| Guida | Descrizione | ~Tokens |
|---|---|---|
| Model | Diagrammi C4, DSL di riferimento, mdl CLI | ~2.500 |
| Pulse | Streaming, pool di lavoratori, mappe replicate | ~2.200 |
| Clue | Logging, tracing, metriche, controlli di salute | ~2.800 |
Sezione totale: ~7.500 gettoni
Scegliere la libreria che corrisponde alle proprie esigenze:
Tutte le librerie sono disponibili tramite go get:
go get goa.design/model
go get goa.design/pulse
go get goa.design/clue