はじめにデザインを。

GoaGo でリモート API やマイクロサービスを構築する総体的なアプローチを提供します。

 

コード生成

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

デザインに基づく

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

内臓のベストプラクティス

Goaは、ベストプラクティスに従ってマイクロサービスベースのシステムアーキテクチャ構築に適したコードを生成します。コードはレイヤーとして整理されているため、トランスポート固有の懸念事項がビジネスロジックに漏れたりすることはありません。

サービス開発のライフサイクル

デザイン

Goa でのサービス開発はデザインから始まります。 Goa DSLを使用すると、サービスメソッドとその入力および出力データ構造を記述できます。また DSLでは、HTTP ボディ、HTTP ヘッダ、gRPC メッセージなどトランスポート固有のデータからデータ構造を構築したりシリアライズする方法を定義することもできます。

実装する

Goa ツールは、サービス設計を読み取りサービスとクライアントツールの構築に必要なすべてのコードを生成します。生成されたコードには、トランスポート層と入力バリデーションが含まれます。したがって、サービスの実装はサービスがリッスンしているトランスポートに関係なく、生成された Go インターフェースを実装するのと同じくらい簡単です。特に Goa では HTTP リクエストと gRPC リクエストの両方を受け入れるサービスを簡単に実装することができます。

拡張する

Goa DSL においてもっとも素晴らしいのはそのエンジンが完全に分離されている点です。プラグインはデザインに記述されるコンセプトを拡張するためにカスタム DSL を実装することができます。プラグインは、任意の出力を生成したり、組み込みのコードジェネレータによって生成された出力を変更したりすることもできます。特に、 go-kit プラグインを使用すると、運用およびインフラストラクチャのニーズに合わせてツールキットを利用できる Go kit 準拠のサービスを生成できます。

はじめに

1 はじめのガイドで基本について学びましょう

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

3 examples を参照してみましょう。

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