Encore.goは、Goでバックエンド開発を行うためのオープンソースフレームワークで、公式には「Batteries included Go framework for building distributed systems」(必要なものが揃った、分散システム構築用Goフレームワーク)と説明されています。Gin・Echo・Fiber・Chiなどが単なるHTTPルーターであるのに対し、Encore.goはAPI定義に加えサービス、データベース、Pub/Sub、Cron、Secretsといったインフラ面もまとめて扱えるのが特徴です。コメントアノテーション形式でAPIを定義でき、main関数を書かずにEncoreが起動コードを自動生成します。
encore runコマンドでアプリとローカルインフラを同時起動でき、Local Development Dashboardが自動生成のAPIドキュメント・トレース・アーキテクチャ図を提供します。PostgreSQLはマイグレーションファイルから自動でローカルDBがプロビジョニングされる点も特徴です。筆者はwrk(HTTP負荷テストツール)を用いた簡易ベンチマークも実施しており、Requests/secはFiber v2が223,123(相対値1.00)、Echoが158,312(0.71)、net/httpが157,656(0.71)、Ginが143,411(0.64)、Chiが132,480(0.59)という結果でした。ただしencore runは開発用ダッシュボードとトレーシング込みのため、素のHTTPルーターとの直接比較はできないと注記しています。
出典が伝えている要点
- Encore.goはGoでバックエンド開発を行うためのオープンソースフレームワークである
- Encore.goの公式説明は「Batteries included Go framework for building distributed systems」である
- Gin、Echo、Fiber、Chiは単なるHTTPルーターであるのに対し、Encore.goはAPI、サービス、データベース、Pub/Sub、Cron、Secretsをまとめて扱う
- Encore.goではコメントアノテーション(例: //encore:api public path=/hello/:name)でAPIを定義する
- Encore.goでは自分でmain関数を書かずにEncoreが起動コードを自動生成する
- Encore.goではサービスはGoパッケージとして定義され、パッケージ名がサービス名になる
- encore runコマンドでアプリとローカルインフラを同時に起動できる
- Local Development Dashboardが自動生成されたAPIドキュメント、トレース、アーキテクチャ図を提供する
- PostgreSQLはマイグレーションファイルから自動的にローカルDBがプロビジョニングされる
- 設定とSecrets管理にはCUE形式の設定ファイルが使われ、コンパイル時にSecret設定が検証される
- 筆者が同一環境でwrkを用いた簡易ベンチマークを実施し、Requests/secはFiber v2が223,123(相対値1.00)、Echoが158,312(0.71)、net/httpが157,656(0.71)、Ginが143,411(0.64)、Chiが132,480(0.59)だった
- 記事はencore runが開発用ダッシュボードとトレーシング込みであるため素のHTTPルーターと直接比較できないと注記している
原文より
Batteries included Go framework for building distributed systems
出典: zenn.dev