1. HOME
  2. ブログ
  3. IT技術
  4. gRPCをSpring Bootで利用する

gRPCをSpring Bootで利用する

はじめに

業務でSpringBootでREST APIの開発を行っていたのですが、マイクロサービス化するに当たりgRPCを利用して開発することになりました。そこで個人勉強として簡単なサービスを作ったので記録します。

SpringBootでgRPCを実装して、gRPCの4つの通信方式まで実際にやってみます。この記事の内容を上から行うとspring boot+gRPCで動く環境が作れます。

プロジェクトの作成

https://start.spring.io/ でプロジェクトを作成します。依存関係の追加は不要です。ProjectはMavenを選択してください。

ダウンロード&解凍を行い、pom.xml を修正します。

pom.xmlの修正

ダウンロードして解凍したプロジェクトにある、pom.xml を修正してgRPCとSpringBootを利用できるようにしていきます。

最初はgRPC対応です。dependencyを追加してライブライのダウンロードを行います。

pluginの追加

これでjavaでgPRCが使えるようになりました。次にspring bootで利用できるようにします。

これでpom.xmlは準備完了です。

protoファイルの作成

src/main配下にprotoフォルダを作成し、Greeter.protoファイルを作成して下記の内容を記述。

コメントを入れているのでわかるかと思いますが、複数のリクエスト/レスポンスの場合はstreamをつけることで可能です。

gRPCサーバ

gRPCのリクエストを受け付けるアプリケーションサーバを実装します。

src/main配下にsrviceフォルダを作成し、GreeterImpl.javaファイルを作成して下記の内容を記述。

これで準備完了です。次に実際にリクエストしてみます。

リクエストしてみる

gRPCを呼び出すためにgrpcurlをbrewでインストールします

インストールが完了したらサービスのメソッドを表示してみます。

-plaintext: TLSを利用していない場合に利用するオプション

localhost:6565: gRPCサーバーのホスト名とポート番号を指定します

com.example.Greeter: パッケージ名

メソッドを叩く

最初に軽く触れた4つの通信方式を実際に叩いて結果を見てみます。

SayHelloUnary: Unary RPC (単一リクエスト, 単一レスポンス)

SayHelloServerStreaming: Server streaming RPC (単一リクエスト, 複数レスポンス)

SayHelloClientStreaming: Client streaming RPC (複数リクエスト, 単一レスポンス)

SayHelloBidirectionalStreaming:Bidirectional streaming RPC (複数リクエスト, 複数レスポンス)

それぞれの通信方式の確認ができましたね!

まとめ

現状、私が業務をするうえで触った内容になります。今後は実業務で利用するバリーションやエラーハンドリングなどもさわりたい。ライブラリ入れるだけで実装できそうなのは確認した。

これだけではマイクロサービスへのメリットなどは一切感じることができてない。リアルタイムストリーミング通信をする際はgRPCのほうが実装が簡単だと思ったぐらい。もっと機能追加してgRPCとREST APIの違いなどを感じていきたい。

書いた人はこんな人

たかやん(エンジニア)
たかやん(エンジニア)
グンマー帝国から密出国してきてるブタ。
東京人多い...

関連記事

採用情報

\ あの有名サービスに参画!? /

バックエンドエンジニア

\ クリエイティブの最前線 /

フロントエンドエンジニア

\ 世界を変える…! /

Androidエンジニア

\ みんなが使うアプリを創る /

iOSエンジニア