Prima progetta, poi vinci.

Goa fornisce un approccio olistico per lo sviluppo di remote API e microservizi in Go.

 

Genera codice

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.

Design Based

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.

Potente context

I vari request handler sono corredati da uno specifico endpoint context che espone sia lo stato della richiesta attraverso campi convenienti, che lo stato della risposta grazie a metodi che scrivono la risposta stessa al client.

Il Life Cycle dello sviluppo dei Servizi

Progetta

La creazione di un servizio con Goa parte dal design. Il DSL di Goa ti permette di descrivere le global properties, i tipi e gli endpoints che caratterizzano la tua API. La documentazione del package apidsl fornisce un veloce referimento a tutte le funzionalitá presenti nel DSL.

Implementa

Una volta che il design della API è completato, goagen genera le corrispondenti strutture dati, il codice di validazione e gli handlers. Gli handlers sono definiti come metodi di una interfaccia Go. Implementare questi metodi pertanto è semplice come implementare l'interfaccia che ti viene generata automaticamente.

Estendi

La parte migliore del DSL di Goa è che il suo engine è completamente disaccoppiato. I Plugin possono implementare delle DSL personalizzate per estendere i concetti descritti nel design. I Plugins possono anche generare output arbitrari.

Getting Started

1 Implementa un semplice servizio Goa con la Getting Started Guide.

2 Impara di più sul Goa DSL.

3 Consulta gli esempi e il servizio goa-cellar.

4 Unisciti al nostro canale Slack (puoi iscriverti qui).

Per saperne di più

Just Generate Everything with goa

Just Generate Everything with goa

Kevin Keuning – Chicago Ultimate Golang, October 2016

goa for Microservices

goa for Microservices

Alexandre Bourget – Golang Montréal, August 2016

Go Time

Go Time #7: goa The Framework for Building Microservices

Raphael Simon – Interview, July 2016

goa GopherCon slides

Building Microservices From Design (slides)

Raphael Simon – GopherCon, July 2016

goa video

Generate All The Things

Brian Ketelsen – Tempa Go Meetup, March 2016