はじめにデザインを。そして成功を。

goa は Go でマイクロサービスを構築する総体的なアプローチです。

 

コード生成

goa はリフレクションや単調なコーディングの必要性を軽減するためコード生成に依存します。
goagen ツールはコード、ドキュメント、クライアントを含むさまざまな成果物に加え、プラグインを通してカスタム成果物も生成します。最終結果はクリーンで簡潔なアプリケーションコードです。

デザインに基づく

goa デザイン言語は柔軟で、あなたの API がどのように動くのか、あなたのやりたいように決めることができます。デザインは、動作とドキュメントの両方から信頼できる唯一の情報源です。 Go の DSL である goa デザイン言語はカスタマイズし易く、できあがったデザインは簡単に共有できます。

パワフルなコンテキスト

リクエストハンドラは、エンドポイント固有のコンテキストを手渡されます。それは、リクエスト状態を扱いやすいフィールドとして、レスポンス状態を応答書き込みのメソッドとして触れられるようにします。

API デザインのライフサイクル

デザイン

goa でのサービス開発はデザインから始まります。 goa DSL はサービス API を作り上げるためのグローバルなプロパティ、タイプ、エンドポイントを記述できるようにします。 apidsl パッケージのドキュメントはすべての DSL 関数のクイックリファレンスを提供します。

実装する

いったんデザインができたら goagen は対応するデータ構造やバリデーションコードとハンドラを生成します。ハンドラはインタフェースのメソッドとして定義されます。サービスの実装は生成されるインタフェースの実装のようにシンプルです。

拡張する

goa DSL においてもっとも素晴らしいのはそのエンジンが完全に分離されている点です。プラグインはデザインに記述されるコンセプトを拡張するためにカスタム DSL を実装することができます。また、プラグインは任意の成果物も生成できます。

はじめに

1 はじめのガイドでシンプルな goa サービスを実装してみましょう。

2 goa の DSL についてさらに学びましょう。

3 examplesgoa-cellar のサービスを参照してみましょう。

4 slack channel に参加しましょう (ここでサインアップできます)。

もっと学ぶ

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