Slide 1

Slide 1 text

5෼࿮ LT ͰΘ͔Δ(Θ͔Βͳ͍) 18/12/14 - The World Café - Classmethod, Inc. Dai Kurosawa / @ponde_m

Slide 2

Slide 2 text

Introduce

Slide 3

Slide 3 text

What is

Slide 4

Slide 4 text

What is gRPC ? • Google ͕ެ։ͨ͠ RPC ͷϑϨʔϜϫʔΫ • Protocol Buffers ͰαʔϏεͷΠϯλϑΣʔεΛఆ ٛͯ͠ Server, Client ͷίʔυΛࣗಈͰੜ੒Ͱ͖Δ • Protocol Buffers ͸σϑΥϧτͰͦΕҎ֎ͷσʔλϑΥʔϚοτ΋͋Δ • HTTP/2 Λ࢖༻ͯ͠௨৴, stream ͳͲ΋Ͱ͖Δ from: [What is gRPC?](https://grpc.io/docs/guides/index.html)

Slide 5

Slide 5 text

What is gRPC ? • Google ͕ެ։ͨ͠ RPC ͷϑϨʔϜϫʔΫ • Protocol Buffers ͰαʔϏεͷΠϯλϑΣʔεΛఆ ٛͯ͠ Server, Client ͷίʔυΛࣗಈͰੜ੒Ͱ͖Δ • Protocol Buffers ͸σϑΥϧτͰͦΕҎ֎ͷσʔλϑΥʔϚοτ΋͋Δ • HTTP/2 Λ࢖༻ͯ͠௨৴, stream ͳͲ΋Ͱ͖Δ from: [What is gRPC?](https://grpc.io/docs/guides/index.html)

Slide 6

Slide 6 text

Protocol Buffers ??


Slide 7

Slide 7 text

(͕࣌ؒͳ͍ͷͰ) ோΊΔ͚ͩͰ ͳΜͱͳ͘Θ͔Δ Protocol Buffers ͷ࢖͍ํ

Slide 8

Slide 8 text

How to use Protocol Buffers in gRPC from: [Go Quick Start](https://grpc.io/docs/quickstart/go.html)

Slide 9

Slide 9 text

How to use Protocol Buffers in gRPC from: [Go Quick Start](https://grpc.io/docs/quickstart/go.html) • protoc ͱ͍͏ίϚϯυͰίϯύΠϧ͢Δͱ֤ݴޠ ͷίʔυΛδΣωϨʔτͰ͖Δ • ରԠݴޠ͸͍ͬͺ͍ • from: [API Reference | Protocol Buffers]
 (https://developers.google.com/protocol-buffers/docs/reference/overview)

Slide 10

Slide 10 text

How to use Protocol Buffers in gRPC from: [Go Quick Start](https://grpc.io/docs/quickstart/go.html)

Slide 11

Slide 11 text

How to use Protocol Buffers in gRPC from: [Go Quick Start](https://grpc.io/docs/quickstart/go.html)

Slide 12

Slide 12 text

What is gRPC ? from: [What is gRPC?](https://grpc.io/docs/guides/index.html) • ਤʹ͢Δͱ͜Μͳײ͡

Slide 13

Slide 13 text

׬શʹཧղͨ͠ ʕ◔ϖ◔ʔ͜͜·Ͱ 2 ෼͘Β͍

Slide 14

Slide 14 text

Λ࢖͏ͱԿ͕خ͍͠ͷ ?

Slide 15

Slide 15 text

Advantage of gRPC • Single Source of Truth ͷ࣮ݱ • ΠϯλϑΣʔε͸શͯ protobufs ʹఆٛ͢Δ • protobufs = ׬શͳυΩϡϝϯτ • ܕ෇΋͞ΕΔ • ϧʔϧΛकΕ͹લํޓ׵, ޙํޓ׵ʹ΋ରԠͰ͖Δ
 (https://developers.google.com/protocol-buffers/docs/proto3#updating) • ͲͪΒ͔ͱ͍͑͹ protobufs Λ࢖͏͜ͱʹΑΔخ͠͞ • Protobufs ͔ΒίʔυΛδΣωϨʔτͯ͠։ൃΛߦ͏ • υΩϡϝϯτʹهࡌ࿙Ε͕͋ͬͯ…… Έ͍ͨͳͷ͔Βղ์͞ΕΔ • REST API ઃܭ͔Β΋ղ์

Slide 16

Slide 16 text

Advantage of gRPC • HTTP/2 ͔ΒಘΒΕΔԸܙ • ߴύϑΥʔϚϯε • HTTP/1 ͷςΩετϓϩτίϧ͔ΒόΠφϦϓϩτίϧʹ • సૹ͢Δσʔλྔ͕খ͘͞ͳΔ • ߴ଎ͳσʔλղੳ • 1ͭͷ TCP ઀ଓʹରͯ͠ଟॏϦΫΤετΛૹΔ͜ͱ͕Ͱ͖Δ • ίωΫγϣϯཱ֬ͷΦʔόϔου͕খ͘͞ͳΔ • ૒ํ޲ετϦʔϛϯά • GCP ͷ API ͱ͔ͩͱ gRPC ͕׆༻͞Ε͍ͯͨΓ͢Δ • [gRPC Λհͨ͠ Cloud Pub/Sub: ֓ཁ]
 (https://cloud.google.com/pubsub/grpc-overview?hl=ja)

Slide 17

Slide 17 text

Ͱ΋͍͍͜ͱ͹͔ΓͰ͸ ͳ͍ΜͰ͠ΐ͏ʁ

Slide 18

Slide 18 text

Disadvantage of gRPC • gRPC ͷ API ͸ REST ͷ API ͱͯ͠ίʔϧͰ͖ͳ͍ • curl ͢ΒͰ͖ͳ͍ • ϑϩϯτΤϯυ͔ΒݺͿʹ͸……? • gRPC ͸ HTTP/2 ͕લఏ • ϩʔυόϥϯγϯάͳͲΛߟ͑ͳ͍ͱ͍͚ͳ͍ • ALB ͷ಺෦௨৴͸ HTTP/2 ඇରԠ • CLB ͩͱ L4 ϨΠϠͷϩʔυόϥϯγϯάʹͳͬͯ͠·͏

Slide 19

Slide 19 text

grpc-gateway • HTTP/1.1 ͷ API ΛఏڙͰ͖ΔϦόʔεϓϩΩγ • protobufs ʹ option ΛՃ͑Δͱ REST ͱ gPRC ͷΫϥΠΞϯτΛ ஥հ͢Δ Golang ͷίʔυ͕ੜ੒͞ΕΔ • Swagger ΛδΣωϨʔτ͢Δ͜ͱ͕Ͱ͖Δ from: [grpc-ecosystem/grpc-gateway](https://github.com/grpc-ecosystem/grpc-gateway)

Slide 20

Slide 20 text

gRPC-Web • gRPC ͷΫϥΠΞϯτ͕ϒϥ΢βͰಈ͘ • protobufs ͔Β JavaScript ͷΫϥΠΞϯτΛδΣωϨʔτ • CNCF ͕ GA Λൃදͯͨ͠ from: [gRPC-Web is going GA](https://www.cncf.io/blog/2018/10/24/grpc-web-is-going-ga/)

Slide 21

Slide 21 text

gRPC-Web • ͓΍…… ʁ from: [gRPC-Web is going GA](https://www.cncf.io/blog/2018/10/24/grpc-web-is-going-ga/)

Slide 22

Slide 22 text

service proxy …… ?

Slide 23

Slide 23 text

gRPC-Web from: [Envoy and gRPC-Web: a fresh new alternative to REST]
 (https://blog.envoyproxy.io/envoy-and-grpc-web-a-fresh-new-alternative-to-rest-6504ce7eb880) • ݱ࣮͸͜͏ • Local Proxy ΛࠓޙͷϩʔυϚοϓͱͯ͠ݕ౼தΒ͍͠

Slide 24

Slide 24 text

gRPC-Web from: [ϑϩϯτΤϯυΤϯδχΞ΋஌͓͖͍ͬͯͨgRPC]
 (https://speakerdeck.com/suusan2go/hurontoendoenziniamozhi-tuteokitaigrpc?slide=25) • ͜ͷੈքʹͳͬͯ΄͍͠

Slide 25

Slide 25 text

gRPC Load Balancing • HTTP/2 ͸1ͭͷίωΫγϣϯͰෳ਺ͷϦΫΤετΛૹΔ • L4 ϨΠϠͰϩʔυόϥϯγϯάΛߦ͏ͱίωΫγϣϯ͕੾அ͞ΕΔ·Ͱಉ͡αʔό ʹϦΫΤετΛૹͬͯ͠·͏ • HTTP/2 ʹରԠͨ͠ proxy ͕ඞཁ from: [gRPC Load Balancing on Kubernetes without Tears]
 (https://kubernetes.io/blog/2018/11/07/grpc-load-balancing-on-kubernetes-without-tears/)

Slide 26

Slide 26 text

gRPC Load Balancing • ϦΫϧʔτ͞Μͷϒϩά͕ΊͬͪΌΑ͔ͬͨ from: [EnvoyͱAmazon ECS Service DiscoveryΛར༻ͨ͠gRPCͷෛՙ෼ࢄ]
 (https://tech.recruit-mp.co.jp/infrastructure/post-17098/)

Slide 27

Slide 27 text

·ͱΊ • gPRC ͸͍͍ͧ • Ͱ΋Կ΋ߟ͑ͣʹ࠾༻Ͱ͖Δ΋ͷͰ͸ͳ͘ɺ৭ʑ ߟྀ͠ͳ͚Ε͹ͳΒͳ͍఺͸ଟʑ͋ΔͷͰ͔ͬ͠ Γͱௐࠪ, ݕ౼্ͨ͠Ͱ࠾༻͠Α͏ • gRPC ͷࠓޙʹ͝ظ଴͍ͩ͘͞

Slide 28

Slide 28 text

Enjoy gRPC :)