Web アプリケーションでマイクロサービス間通信に gRPC を採用するケースが増えています。
長年開発・運用されている、とある SaaS プロダクトでは、当初 Ruby で .proto ファイルから gRPC クライアントを生成する際、標準的な protoc コマンドベースの grpc_tools_ruby_protoc gem を使用し、生成手順を Makefile で管理していました。
しかし、システムの成長とともに複数の gRPC クライアント生成を管理する必要が生じ、Makefile が肥大化・複雑化し、新規追加・メンテナンスが困難になりました。
この課題を解決するため、YAML ベースで proto ファイル間の依存関係を管理できる Buf を導入し、より効率的かつ簡潔な gRPC クライアント管理を実現しました。
また、Ruby で生成されるコードの依存関係記述が Ruby on Rails のオートロードと相性が悪く、シェルスクリプトのワンライナーを使用していました。こちらをメンテナンス性向上のため Ruby の Rake タスクに変換するなどの運用改善も行いました。
本セッションでは、従来の protoc コマンドベースの管理から Buf への移行プロセスを実体験に基づいて紹介します。
移行時の互換性担保やチーム運用面での工夫、導入後の効果について具体的な事例とともにお話しします。
Buf について知り、proto ファイルからのコード生成における新たな選択肢を探求してみませんか?