Modèle
Architecture diagrams as code using the C4 model - version-controlled, automatically generated, and interactive.
L’écosystème Goa comprend des bibliothèques complémentaires qui répondent à des besoins communs en matière de développement de microservices. Ces outils sont conçus pour fonctionner de manière transparente avec Goa mais peuvent également être utilisés indépendamment.
| Bibliothèque - Objectif - Fonctionnalités principales - Fonctionnalités principales - Fonctionnalités principales - Fonctionnalités principales - Fonctionnalités principales - Fonctionnalités principales | ||
|---|---|---|
| Model | Diagrammes d’architecture | Diagrammes C4 sous forme de code, contrôle de version, éditeur interactif |
| Pulse](pulse/) | Événements distribués | Flux d’événements, pools de travailleurs, cartes répliquées |
| Clue | Observabilité | Traçage, journalisation, métriques, bilans de santé |
Model fournit un DSL Go pour décrire l’architecture logicielle en utilisant le modèle C4. Au lieu de dessiner des diagrammes dans des outils graphiques, vous définissez votre architecture dans le code :
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)
})
})
})
Avantages:
En savoir plus: Documentation du modèle
Pulse fournit des primitives pour construire des systèmes distribués pilotés par les événements. Il est agnostique au niveau du transport et fonctionne avec ou sans les services 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)
})
Cas d’utilisation:
En savoir plus: Pulse Documentation
Clue fournit une instrumentation pour les services Goa construits sur OpenTelemetry. Il couvre les trois piliers de l’observabilité :
// 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))
Caractéristiques:
En savoir plus: Clue Documentation
| Guide d’utilisation de l’outil de recherche d’indices - Description de l’outil de recherche d’indices - ~Tokens - ~Tokens | ||
|---|---|---|
| Modèle | Diagrammes C4, référence DSL, CLI mdl | ~2,500 |
| Pulse | Streaming, worker pools, replicated maps | ~2,200 |
| Clue | Logging, tracing, metrics, health checks | ~2,800 |
Section totale: ~7 500 jetons
Choisissez la bibliothèque qui correspond à vos besoins :
Toutes les bibliothèques sont disponibles via go get :
go get goa.design/model
go get goa.design/pulse
go get goa.design/clue