gRPCを使ったメディアサービス
by
gree_tech
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
gRPCを使ったメディアサービス
Slide 2
Slide 2 text
Masahiro Higuchi / 樋口雅拓 ● グリーグループのリミア株式会社で、LIMIA という住まい領域のメ ディアを作っています。ゲーム会社ですが、最近はメディアに力を 入れています。 ● 機械学習のエンジニアですが、iOS, Android,JSなどもやっている何で も屋です。4歳の娘のパパ。twitter: @mahiguch1 ● https://limia.jp/ ● https://arine.jp/ ● https://aumo.jp/ ● https://www.mine-3m.com/mine/
Slide 3
Slide 3 text
背景と目的
Slide 4
Slide 4 text
LIMIAとは? ● メディアサービス ● 記事一覧を表示し、タップす ると記事詳細を閲覧できる。 ● 記事詳細の最下部に別の記事 への回遊導線が付いている
Slide 5
Slide 5 text
興味があること LIMIAに最も適したシステムは、何だろう? ● インフラ: Kubernetes/ECS/Lambda/EC2/CF/Firebase ● Backend FW: gin/Laravel/Django/Rails/gRPC/使わない ● アプリ: MVC/MVVM/VIPER/クリーンアーキテクチャ 選択肢が多すぎて、よくわからない! → とりあえず色々試してみよう。
Slide 6
Slide 6 text
今回試したこと ● インフラ: Kubernetes/ECS/Lambda/EC2/CF/Firebase ● Backend FW: gin/Laravel/Django/Rails/gRPC/使わない ● アプリ: MVC/MVVM/VIPER/クリーンアーキテクチャ gRPCを使って、KotlinでgRPC Serverとメディアアプリを作ってみました 。
Slide 7
Slide 7 text
gRPCの説明
Slide 8
Slide 8 text
gRPCとは? ● RPCを実現する通信方式の一つ ● Googleが作っている ● Protocol buffersという形式で データをシリアライズして送受 信している。
Slide 9
Slide 9 text
Protocol bufferとは? ● Request/Responseのフォーマットを 指定すると、それでシリアライズして くれる。 ● 通信部分のコードを自動生成してくれ るので、そこに時間を割かれるのを防 げる。 ● ただし、エラー定義は書けないので、 そこはコメントで書いておくなど、チ ーム内でルールを決めておく必要があ る。
Slide 10
Slide 10 text
では本題
Slide 11
Slide 11 text
今回作った検証アプリについて 記事の一覧を表示したい。画面には、記事画像、記事 タイトル、ユーザ名が表示されている。Modelとしては 、次のように持つ。 ● Article: Id, Title, ImageUrl, User ● User: Id, Name これをprotobufに定義し、gRPCで通信するとどうなる か試してみた。
Slide 12
Slide 12 text
User.proto / Article.proto
Slide 13
Slide 13 text
ArticleList.proto build.gradleに以下のような 記述をしておくと、コード の自動生成とそれを含めた buildを自動でやってくれる 。便利!
Slide 14
Slide 14 text
Android Client
Slide 15
Slide 15 text
Kotlin Server Server側は、Clientから呼び出したmethodをoverrideする形で実装する。 Client/Server共にかなりシンプルに実装できる。
Slide 16
Slide 16 text
Tips 予想外にサクッと書けてしまったので、Tipsが無かった。 強いて挙げれば、gRPCが自動生成したコードは、javax.annotation-apiを 使っている。これをgradleに書いて置かないとbuildが通らないので注意 。
Slide 17
Slide 17 text
まとめ ● 他のパターンを試した時より実装工数が少なかった。 ● 動作速度は体感で明らかに早い。 ● 動作速度を計測して、複数パターンの比較を行いたい。 ご静聴、ありがとうございました!