Modelo
Architecture diagrams as code using the C4 model - version-controlled, automatically generated, and interactive.
El ecosistema Goa incluye librerías complementarias que cubren necesidades comunes en el desarrollo de microservicios. Estas herramientas están diseñadas para funcionar a la perfección con Goa, pero también se pueden utilizar de forma independiente.
| Librería | Propósito | Características Clave |
|---|---|---|
| Model | Diagramas de Arquitectura | Diagramas C4 como código, control de versiones, editor interactivo |
| Pulse | Eventos distribuidos | Flujo de eventos, grupos de trabajadores, mapas replicados |
| Clue | Observabilidad | Rastreo, registro, métricas, comprobaciones de salud |
Model proporciona un Go DSL para describir la arquitectura del software usando el C4 model. En lugar de dibujar diagramas en herramientas gráficas, usted define su arquitectura en código:
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)
})
})
})
**Ventajas
Más información: Documentación del modelo
Pulse proporciona primitivas para construir sistemas distribuidos basados en eventos. Es independiente del transporte y funciona con o sin servicios 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)
})
**Casos de uso
Más información: Documentación de Pulse
Clue proporciona instrumentación para servicios Goa construidos sobre OpenTelemetry. Cubre los tres pilares de la observabilidad:
// 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))
**Características
Más información: Documentación de Clue
| Guía | Descripción | ~Tokens |
|---|---|---|
| Modelo](model/) Diagramas C4, referencia DSL, mdl CLI | ~2,500 | Pulse |
| Pulse | Streaming, pools de trabajadores, mapas replicados | ~2.200 |
| Clue | Registro, rastreo, métricas, comprobaciones de salud | ~2.800 |
Sección total: ~7.500 tokens
Elija la biblioteca que se ajuste a sus necesidades:
Todas las bibliotecas están disponibles a través de go get:
go get goa.design/model
go get goa.design/pulse
go get goa.design/clue