プロダクト向き API ??

今回の実現技術スタック

グレースフルシャットダウン

golang の場合, プロセスとしてサーバーを立ち上げる事になる(PHP のように 1 プロセス 1 処理ではない)都合があるため, 終了時に処理中のものがあるか検知して「処理中がある」場合, その処理の終了を待ってからサーバーを落とす必要がある。 net/http パッケージには golang 1.8 から組み込み対応が入ったもので http.Shutdown を呼ぶことで実現可能。echo でやる場合でも同様に対応可能で, 公式にサンプルがある。

https://echo.labstack.com/cookbook/graceful-shutdown

OpenAPI3 → Interface Adapters レイヤーの自動生成

クリーンアーキテクチャで言うところの Controllers のような概念のあるレイヤー。

リクエストを受け取り, レスポンスを返す Adapters レイヤーの自動生成。 gRPC の場合, サーバー的にはこの辺りが楽。

OpenAPI は公式に golang のサーバーを作るものがあるものの, 現時点では v3 に対応していなかったり, 課題が多い。OpenAPI に対応していて生成対象を選べて柔軟に扱えるのは例えば以下。

https://github.com/deepmap/oapi-codegen

-generate オプションから自動生成対象を選択可能。 server を指定した時扱われる framework が echo 。types 指定で, リクエスト型, レスポンス型まで自動生成できる。