Design first.
Design first.
Goa si appoggia alla generazione automatica di codice per
alleviare il bisogno delle reflection o del codice ripetitivo.
Il tool goa genera vari artefatti tra cui codice, documentazione
clients e perfino output personalizzati attraverso i plugin.
Il risultato finale è un codice applicativo
pulito e conciso.
Il linguaggio di design di Goa è flessibile e sta fuori dal contesto applicativo – Tu decidi come la tua API funziona. Il design è l'unica fonte di veritá dalla cui costruzione sono derivati sia il comportamente che la documentazione. Il linguaggio di design di Goa è, essendo una DSL in GO, è facile da customizzare e i design risultanti sono facili da condividere.
Goa genera codice che segue le best practice ed è particolarmente adatto per costruire architetture di sistemi basati su microservizi. Il codice è organizzato in modo che problemi specifici di trasporto dati non vadano a impattare sulla logica di business.
Il Life Cycle dello sviluppo dei Servizi
La creazione di un servizio con Goa parte dal design. Il DSL di Goa ti permette di descrivere i cosiddetti "service methods", cosí come le sue strutture dati di input e output. Il DSL ti permette anche di definire come costruire e serializzare le tue strutture dati a partire da e attraverso protocolli specifici, come HTTP Body, HTTP Headers o messaggi gRPC.
Il tool Goa legge i tuoi design e produce tutto il codice necessario a costruire i vari servizi e un client tool. Il codice generato include i vari transport layers e la validazione dei vari input. L'implementazione di un servizio è quindi semplice come implementare delle interfacce Go, non importa quale protocollo di trasporto il servizio decide di adottare e seguire. In particolare Goa rende banale implementare un servizio che accetta sia richieste HTTP che gRPC.
La parte migliore del DSL di Goa è che il suo motore di valutazione è completamente disaccoppiato. I Plugin possono anche implementare dei DSL personalizzati per estendere i concetti descritti nel design. I Plugins possono anche generare output arbitrari o modificare quello generato dai generatori pre-costruiti nel tool. In particolar modo, il plugin go-kit rende possibile generare dei servizi compatibili con Go kit, i quali possono trarre vantaggio dal toolkit per necessita operative e infrastrutturali.
Getting Started
1 Impara le basi con la nostra Getting Started Guide.
2 Impara di più sul Goa DSL.
3 Consulta i vari esempi.
4 Unisciti al nostro canale Slack (puoi iscriverti qui).