gRPCãšã¯ïŒ
gRPC ã¯ãAPI ãèšèšããããã®åŸæ¥ã® RPC ã¢ãããŒãã®æŽæ°çã§ããgRPCã®é·æãšçæãç¥ãã«ã¯ããã¡ãããèªã¿ãã ããã

ã»ãšãã©ã®ãœãããŠã§ã¢ã¢ããªã±ãŒã·ã§ã³ã¯ãããã€ãã®çç±ã§ä»ã®ã³ãŒããšæ¥ç¶ã§ããå¿ èŠããããŸããããã¯ãçµ±åããæ°æ©èœã®è¿œå ãŸã§ãäœã§ãããã§ãããœãããŠã§ã¢ãä»ã®ã¢ããªã±ãŒã·ã§ã³ãšãªã³ã¯ã§ããããã«ããŸãä»ã®ããã°ã©ã ãšã®çµ±åã確å®ã«ããããã«ãéçºè 㯠APIã 䜿çšããŸããããããã»ãšãã©ã®ãœãããŠã§ã¢ã«Application Programming Interfaceãå¿ èŠãªçç±ã§ããAPIã¯ãã·ã¹ãã éã®æ©æž¡ãã®åœ¹å²ãæããããšã§ãå人ãããŸããŸãªWebãµãŒãã¹ã«ã¢ã¯ã»ã¹ããããšãå¯èœã«ããŸãããããã£ãŠããããžã§ã¯ãã«APIãæäŸããããã«é©åãªæè¡ãéžã¶ããšãéèŠã§ããã
ã¢ããªã±ãŒã·ã§ã³ããã©ãããã©ãŒã ããŠãŒã¶ãŒãšå ±æãããçµç¹ã¯ãAPIã䜿çšããå¿ èŠããããAPIãéçºããã¢ããªã±ãŒã·ã§ã³ã«æé©ãªãã®ã«ããããã«åŸ®èª¿æŽããæ¹æ³ã¯ãããããããããã°ã©ããAPIãèšèšããããã«äœ¿çšããŠããææ°ã®æ¹æ³ã®1ã€ãgRPCã§ããããã§ã¯ãgRPCãšã¯äœãããŸããã®é·æãšçæã«ã€ããŠèŠãŠãããŸãããã
gRPC ãšã¯ïŒ
gRPC ã¯Google Remote Procedure Call ã®ç¥ã§ããgRPC ã¯ãªãŒãã³ãœãŒã¹ã® RPC ãã¬ãŒã ã¯ãŒã¯ã§ãã¹ã±ãŒã©ãã«ã§è¿ é㪠API ãäœæããããã«äœ¿çšãããŸããgRPC ã¯ãGoogleãIBMã Netflix ãªã©ã®ãããã¯ã©ã¹ã®æè¡äŒæ¥ã§æ¡çšãããŠããŸããgRPCãã¬ãŒã ã¯ãŒã¯ã¯ãHTTP/2ããããã³ã«ãããã¡ãªã©ã®æå 端æè¡ã¹ã¿ãã¯ã«äŸåããæé©ãªAPIä¿è·ã髿§èœãªãªã¢ãŒãããã·ãŒãžã£ã³ãŒã«ãããã³ã¹ã±ãŒã©ããªãã£ãå®çŸããŠããŸãã

RPCsãšã¯äœã§ããïŒ
RPC ãšRESTïŒ ïŒã¯ãæŽå²çã«APIãæ§ç¯ããããã®2ã€ã®å¥åã®ã¢ãããŒãã§ãã£ããããã«ãRepresentational State Transfer SOAPã GraphQL ã®ãããªãããã³ã«ããã®ç®çã®ããã«äœ¿çšãããŠããŸãããªã¢ãŒãããã·ãŒãžã£ã³ãŒã«ã¯ãç°ãªãããã€ã¹äžã§å®è¡ããããããããªãããããŒã«ã«ã§å®è¡ããããã®ããã«ãœãããŠã§ã¢ãæžãããšãã§ããŸãã
APIãèšèšããããã®ãã¬ãŒã ã¯ãŒã¯ãšããŠã¯ãæãæ £çšçãªãã®ã§ããRPC ã¯ãããåããã·ã³ãã«ã§å 容ã軜éãªãããAPI ãäœæããããã®çç£çãªææ³ã§ããgRPC ãµãŒãã¹ããã®éä¿¡ã¢ãŒããã¯ãã£ãæš¡å£ããŠããŸããRPC ã¯IDL -Interface Definition Language ã§ããŒã¿åãšåŒã³åºãããã¡ãœãããå¥çŽããŠããŸããRPCããæ¡çšãããgRPCãµãŒãã¹ã¯ãè¿å¹Žãéåžžã«äººæ°ããããŸãã
ãªãgRPCãµãŒãã¹ãéçºãããã®ã§ããããã
å€ãã®äŒæ¥ãçµ±åã®ããã®ãã£ãã«ãéæŸããã«ã€ãããã®ãããªãœãããŠã§ã¢ããªã³ã¯ããããšãå°é£ã«ãªã£ãŠããŠããŸããRPC APIã¯çµ±åããã®ãé£ãããé åžããã«ãå éšä»æ§ãé瀺ãããå¯èœæ§ããããããªã¹ã¯ãé«ãããŸããAPIã¯å€ãã®ããã°ã©ãã³ã°èšèªã§éçºããããã®åºç€ãšãªããã¬ãŒã ã¯ãŒã¯ãšå¯æ¥ã«çµã³ã€ããŠããŸãã
ãã®åé¡ã解決ããAPIãžã®ã¢ã¯ã»ã¹æ§ãé«ããã®ãã2000幎ã«ç»å Žãã REST API ã ãå ·äœçã«ã¯ãGET ãPUT ã POST ãªã©ã®æšæºç㪠HTTP æè¡ã䜿ã£ãŠãã¢ã»ãããä»ããŠéæ¥çã«æ å ±ãååŸããäžè²«ããæ¹æ³ããŠãŒã¶ãŒã«æäŸããŸãããRPC ãšREST API ã®äž»ãªéãã¯ãRPC ã§ã¯ãããã»ã¹ã«å¯Ÿå¿ããŠããããæ§ã ãªã·ã¹ãã ã«ãããããã»ã¹ãã©ã®ãããªãã®ã§ããããããäºæž¬ããããšã¯å®¹æã§ã¯ãªãã
REST API ã¯ãå€ãã®ã¢ããªã±ãŒã·ã§ã³ãæ±ãããã®æ¡åŒµãã©ãŒããããæäŸããªãããã倧éã®ã¡ã¿ããŒã¿ãçæãããããã¹ãã¬ãŒãã§è»œéã®RPC ãå®å šã«çœ®ãæããããšã¯ã§ããŸããã§ããããã®çµæãæçµçã«Facebookã®GraphQL ãGoogleã®gRPCãµãŒãã¹ãç»å Žããããšã«ãªã£ãã®ã§ãã
Googleã¯2015幎ã«ãæ§ã ãªææ³ã§äœããã倿°ã®ãã€ã¯ããµãŒãã¹ã¢ãŒããã¯ãã£ãæ¥ç¶ããããã®RPCãã¬ãŒã ã¯ãŒã¯ã®è¿œå ãšããŠgRPCãæ§ç¯ããŸããã gRPCã¯ããšããšGoogleã®ã³ã¢ã€ã³ãã©ãšå¯æ¥ã«é¢ä¿ããŠããŸããããæçµçã«ã¯ãªãŒãã³ãœãŒã¹åãããäžè¬ãŠãŒã¶ãŒã«ããå©çšãæšæºåãããŸããã
gRPCã®ã³ã³ã»ããã®æŠèŠ
JSONãXMLããã髿§èœã§ãAPIã®æŽåæ§ãé«ããšããæå 端æè¡ã®æŽ»çšããgRPCã®èªçãšæ®åã«å¯äžããŠããŸããgRPCã®æŠå¿µãšããŠç¥ã£ãŠããã¹ããã®ãããã€ã玹ä»ããŸãã
ãããã³ã«ã»ãããã¡
Protobuf ãšããŠç¥ããããããã³ã«ã»ãããã¡ã¯ãã¢ããªã±ãŒã·ã§ã³ã®å®çŸ©ãšã¯ã©ã€ã¢ã³ãã»ã©ã€ãã©ãªã®ã³ãŒãçæãèªåçã«è¡ãããšã容æã«ããã·ãªã¢ã©ã€ãºãŸãã¯ãã·ãªã¢ã©ã€ãºã®æšæºã§ããææ°çã§ããproto3 ã¯ãããã·ã³ãã«ã«äœ¿çšã§ããgRPC ã®ææ°æ©èœãæäŸããŸãã
.Proto ãã¡ã€ã«ã¯ãgRPC ãµãŒãã¹ãšãgRPC ã¯ã©ã€ã¢ã³ããšãµãŒãã¡ãã»ãŒãžéã®éä¿¡ãå¯èœã«ããŸãã.proto ãã¡ã€ã«ã¯ãå®è¡æã«Protobuf ã³ã³ãã€ã© -protoc ã«ãã£ãŠã¡ã¢ãªã«ããŒããããŸãããã®ã³ã³ãã€ã©ã¯ããã€ããªããŒã¿ãã·ãªã¢ã©ã€ãºããã·ãªã¢ã©ã€ãºããããã«ã¡ã¢ãªå æ§é ãæ¡çšãã gRPC ã¯ã©ã€ã¢ã³ããš gRPC ãµãŒãã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããŸããåéä¿¡ã¯ãgRPC ã®ã³ãŒãçæã«ç¶ããŠããŠãŒã¶ãšãª ã¢ãŒããµãŒãã¹éã§éåä¿¡ãããŸãã
ããŒã¿ããã€ããªåœ¢åŒã«å€æãããæå·åãããä¿¡å·ãå°ãããªããããProtobuf ã«ããè§£æã¯ gRPC ã®CPU ã®äœ¿çšé»åãå°ãªããªããŸãããã®ãããæºåž¯é»è©±ã®ãããªCPU ã®åŒ±ãã³ã³ãã¥ãŒã¿ã§ããgRPC ã䜿ãã°ããéãã¡ãã»ãŒãžãéä¿¡ãããŸãã
HTTP/2
gRPC ãµãŒãã¹ã¯ãHTTP/1.1 ã®å¶éã®å°ãªãããŒãžã§ã³ã§ãã HTTP/2 ã§æ§ç¯ãããŠããŸããå€ã HTTP ãããã³ã«ã§ãåäœããŸãããHTTP/2 㯠gRPC ã®ããã«ããã€ãã®é«åºŠãªæ©èœãåããŠããŸããããã«ã¯ãã€ããªãã¬ãŒã ã¬ã€ã€ãŒãå«ãŸããHTTP/2ã®åã¯ãšãªãšè¿ä¿¡ãããå°ããªã¡ãã»ãŒãžã«åå²ãããã€ããªåœ¢åŒã§ãã¬ãŒã åããããšã§ã¡ãã»ãŒãžã®é ä¿¡ãæ¹åããŸããããã«ãgRPCã¯ãã¯ã©ã€ã¢ã³ããšgRPCãµãŒããŒããã®åæ¹åå šäºéã¹ããªãŒãã³ã°ã«ããè€æ°ã®ãªã¯ãšã¹ããšã¬ã¹ãã³ã¹ããµããŒãããŸãã
HTTP/2ã¯ãé£è¡äžã®ãã±ããããããã¡ãªã³ã°ããããã«å¿ èŠãªRAM ãæ£ç¢ºã«å¶åŸ¡ããããšãã§ãããããŒå¶åŸ¡æ¹åŒãåããŠããŸãããŸããgRPCãµãŒãã¹ã®ããããŒå§çž®ãå¯èœã§ããHTTP/2 ã§ã¯ãããããå«ããŠãã¹ãŠãéä¿¡åã«æå·åããã髿§èœãªãªã¢ãŒãããã·ãŒãžã£ã³ãŒã«ãæäŸããŸããgRPC 㯠HTTP/2 ã§éåæãšåæã®äž¡æ¹ã®åŠçãæäŸããããŸããŸãªå¯Ÿè©±åããã³ã¹ããªãŒã åã® RPC ã®å®è¡ãå¯èœã«ããŸãã
ãããã®HTTP/2ã®ç¹åŸŽãçãããgRPCãµãŒãã¹ã¯ããå°ãªããªãœãŒã¹ã§å©çšã§ãããããã¯ã©ãŠãããŒã¹ã¢ããªã±ãŒã·ã§ã³ãšgRPCãµãŒãã¹éã®å¿çæéã®ççž®ããã¢ãã€ã«ããã€ã¹ã§åäœããgRPCã¯ã©ã€ã¢ã³ãã®ããããªãŒã©ã€ãã®å»¶é·ã«ã€ãªãããŸãã
ã¹ããªãŒãã³ã°
gRPC ããµããŒãããéèŠãªã¢ã€ãã¢ã¯ãåäžã®ãªã¯ãšã¹ãå ã§è€æ°ã®ããã»ã¹ãå®è¡ã§ããã¹ããªãŒãã³ã°ã§ããgRPC 㯠HTTP/2 ã®å€éåæ©èœã«ãã£ãŠãããå®çŸãã1 ã€ã®TCP -Transmission Control Protocol - æ¥ç¶ã§è€æ°ã®å¿çãŸãã¯ãªã¯ãšã¹ããåæã«éä¿¡ãŸãã¯åä¿¡ããããšãå¯èœã«ãªããŸããäž»ãªã¹ããªãŒãã³ã°åœ¢åŒã¯ããµãŒãã¹ããªãŒãã³ã° RPCãã¯ã©ã€ã¢ã³ãã¹ããªãŒãã³ã°RPCsãããã³åæ¹åã¹ããªãŒãã³ã°RPCs ã§ãã
ãã£ã³ãã«
HTTP/2ã¹ããªãŒã ã1ã€ã®ãªã¯ãšã¹ãæ¥ç¶ã§å€æ°ã®åæã¹ããªãŒã ãèš±å¯ããã®ãšã¯å¯Ÿç §çã«ãgRPCã®ãã£ã³ãã«ã¯è€æ°ã®ãªã¯ãšã¹ãã«ãŸãããè€æ°ã®é£ç¶ããã¹ããªãŒã ããµããŒãããŸãããã£ãã«ã¯ãã¯ã©ã€ã¢ã³ãã¹ã¿ããæ§ç¯ããç¹å®ã® IP ãšããŒãã«ãã gRPC ãµãŒãã«ãªã³ã¯ããã¡ã«ããºã ãæäŸããããã«æ¡çšãããŸãã
gRPCã¢ãŒããã¯ãã£
gRPC ã¢ãŒããã¯ãã£ã¯ gRPC ã¯ã©ã€ã¢ã³ããš gRPC ãµãŒãããæ§æãããŸããå šãŠã® gRPC ã¯ã©ã€ã¢ã³ããµãŒãã¹ã¯ã¹ã¿ããŸãã¯èªåçæããããã¡ã€ã«ãå«ãã§ãããããã¯ã¢ã¯ãã£ããªãªã¢ãŒãããã»ã¹ãå«ãã€ã³ã¿ãã§ãŒã¹ã«é¡äŒŒããŠããŸããgRPCã¯ã©ã€ã¢ã³ãã¯ãgRPCãµãŒãã®ã¡ãã»ãŒãžã«è»¢éãããåŒæ°ãå«ãã¹ã¿ãã«å¯ŸããŠããŒã«ã«ããã·ãŒãžã£ã³ãŒã«ãéå§ããŸããgRPCã¯ã©ã€ã¢ã³ãã®ã¹ã¿ãã¯ãProtobuf ããŒã·ã£ãªã³ã°æé ãçšããŠåŒæ°ãã·ãªã¢ã©ã€ãºããåŸãããŒã«ã«ã³ã³ãã¥ãŒã¿äžã®ããŒã«ã«ã¯ã©ã€ã¢ã³ãæéãŠãããã«ã¯ãšãªãéä¿¡ããŸãã
OSã¯HTTP/2ãããã³ã«ãçšããŠé æ¹ã®ãµãŒããŒã³ã³ãã¥ãŒã¿ãšéä¿¡ããããµãŒããŒã®OSã¯ã¡ãã»ãŒãžãåãåãããµãŒããŒã¹ã¿ãããã»ã¹ãåŒã³åºãããµãŒããŒã¹ã¿ãããã»ã¹ã¯ãåä¿¡ãããã©ã¡ãŒã¿ãŒããã³ãŒãããåŸãProtobuf ã䜿çšããŠé©åãªãªãã¬ãŒã·ã§ã³ãåŒã³åºãããã®åŸãã¯ã©ã€ã¢ã³ãã®ãã©ã³ã¹ããŒãå±€ã¯ããµãŒãã¹ã¿ãããæå·åãããå¿çãåä¿¡ãããgRPCã¯ã©ã€ã¢ã³ãã¹ã¿ããå¿çã¡ãã»ãŒãžãåãåããæäŸãããåŒæ°ãã¢ã³ã©ããããåŸãå®è¡ã¯åŒã³åºãå ã«æ»ãããŸãã
gRPCã®é·æ
gRPC ã¯ä»ã® API èšèšã¡ã«ããºã ã«æ¯ã¹ãããã€ãã®å©ç¹ããããŸãããŸããgRPC ã¯RPC ã®æ§é ãæ¹è¯ããŠããŸãã以äžã¯ãgRPC ãµãŒãã¹ã®æãé¡èãªå©ç¹ã§ãã
- 髿§èœãªãªã¢ãŒãããã·ãŒãžã£ã³ãŒã«
Protobuf ãš HTTP/2 ã䜿çšããããšã§ãgRPC ãµãŒãã¹ã¯ REST+JSON ã€ã³ã¿ã©ã¯ã·ã§ã³ã®æå€§ 10 åã®ãã€ããã©ãŒãã³ã¹ãš API ãããã¯ã·ã§ã³ãæäŸããŸãããµãŒããŒããã·ã¥ããã«ããã¬ã¯ã·ã³ã°ãããããŒå§çž®ã®äœ¿çšã«ãããHTTP/2ã¯gRPCãµãŒãã¹ã«é«æ§èœãªã©ã³ãã³ã°ãæäŸããŸããå€éåã«ãã£ãŠè¡é ã®é å»¶ããªããäžæ¹ã§ããµãŒããŒããã·ã¥ã«ãã£ãŠãHTTP/2ã¯å¿ èŠãªåã«ãµãŒããŒããã¯ã©ã€ã¢ã³ãã«è³æãããã·ã¥ããããšãã§ããŸããã¡ãã»ãŒãžã¯ HTTP/2 ã«ãã£ãŠãã广çã«å§çž®ããããã®çµæ gRPC ãµãŒãã¹ã§ããéãèªã¿èŸŒã¿ãå®çŸããŸãã
- ã¹ããªãŒãã³ã°
ã¹ããªãŒãã³ã°gRPCãµãŒãã¹ã®ãµãŒãã¹èšè¿°ã«ã¯ãã¯ã©ã€ã¢ã³ããŸãã¯ãµãŒããŒåŽã®ã¹ããªãŒãã³ã°ã®ååãæ¢ã«å«ãŸããŠããŸãããã®çµæãgRPCã¯ã©ã€ã¢ã³ããã¹ããªãŒãã³ã°ã»ãµãŒãã¹ã®æ§ç¯ãéåžžã«å®¹æã«ãªããŸãã
- ã³ãŒãçæ
gRPC ã¯ã©ã€ã¢ã³ãããã³ gRPC ãµãŒããã ã°ã©ã ã®ã³ãŒãçæã¯ãgRPC web ã¢ãããŒãã® éèŠãªã³ã³ããŒãã³ãã§ãã.proto ãã¡ã€ã«ããã®ã³ãŒãçæã®ããã«ãgRPC ã¢ãžã¥ãŒã«ã¯.protoc ã³ã³ãã€ã©ãæ¡çšããŠããŸããProtobuf 圢åŒã¯ãgRPC ã®ã³ãŒãçæãéããŠå¶åŸ¡ãããããŒã¿åœ¢åŒãšã¢ããªã±ãŒã·ã§ã³ãšã³ããã€ã³ãã®äž¡æ¹ãå®çŸ©ããããã«äœ¿çšãããŸããã¯ã©ã€ã¢ã³ãåŽã®ãããã¯ãŒã¯ã¹ã¿ãããµãŒãåŽã®ã¹ã±ã«ãã³ãäœæããããšãã§ããgRPCãµãŒãã¹ã«ãããæ§ã ãªãµãŒãã¹ãå©çšããããã°ã©ã ã®èšèšã«å¿ èŠãªæéãççž®ããããšãã§ããŸãã
- çžäºéçšæ§
JavaãRuby.ãC# ãªã©ãæ°å€ãã®ã·ã¹ãã ã ããã°ã©ãã³ã°èšèªããããŸãã GoC# ãªã©ãæ°å€ãã®ã·ã¹ãã ãšããã°ã©ãã³ã°èšèªããgRPC ã®ãªãœãŒã¹ãšã©ã€ãã©ãªã«ãã£ãŠãµããŒããããŠããŸãããããã®ããã°ã©ãã³ã°èšèªã«ãããéçºè 㯠gRPC ã®å®å šãªã¯ãã¹ãã©ãããã©ãŒã äºææ§ãå©çšããªãããããã©ãŒãã³ ããªã¢ããªã±ãŒã·ã§ã³ãäœæããããšãã§ããŸããããã¯ãProtobuf ãã€ããªé ç·åœ¢åŒãšãã»ãŒãã¹ãŠã®ã·ã¹ãã ã«å¯Ÿãã广çãªã³ãŒãçæã®ãããã§ãã
- ã»ãã¥ãªãã£
gRPCã¯ããµãŒããŒãšgRPCã¯ã©ã€ã¢ã³ãéã®ããŒã¿æå·åããã³èªèšŒã«SSL/TLSãæ¡çšããããšãæšå¥šããŠãããTLSãšã³ãããŒãšã³ãæå·åã»ãã·ã§ã³äžã§HTTP/2ãçšããŠAPIã»ãã¥ãªãã£ã確ä¿ããŠããŸãã
- çç£æ§ãšãŠãŒã¶ããªãã£
gRPC ã¯RPC ã®å®å šãªä»£æ¿ã§ãããããå¹ åºãã·ã¹ãã ãèšèªã§åé¡ãªãåäœããŸãããŸã gRPC ã«ã¯åªããããŒã«ããããå¿ èŠãªå®å ã³ãŒãã®å€ãã¯æåã§çæãããŸããgRPC ã䜿çšããããšã§å€§å¹ ã«æéãç¯çŽã§ããããããšã³ãžãã¢ã¯ã³ã¢æ©èœã«ããéäžããããšãã§ããŸãã
gRPC ã®çæ
gRPCã®æ¬ ç¹ãããã解決ãããããšãæåŸ ããããšã¯ã§ããŸãããçŸåšããã®äœ¿çšã«ã¯ããã€ãã®åé¡ããããŸããgRPCã®çæãšããŠã¯ã以äžã®ãããªãã®ããããŸãã
- æç床ã®äœã
æè¡ã®çºå±ã¯ãæ¡çšã®å€§ããªéå£ãšãªãåŸãŸãããã㯠gRPC ã䜿çšããéã«ãæããã§ããGraphQLgRPC ã®åæ¥è ã®äžã€ã§ãããæ ªåŒäŒç€Ÿãšãã»ãã£ã»ãã£ã»ãã³ã¢ã¯ãStackOverflow ã§ 14k 以äžã®ã¯ãšãªãæã£ãŠããŸãããgRPC ã¯çŸåš 4k ãå°ãäžåãã ãã§ããgRPC ã³ãã¥ããã£ã¯ãHTTP/2 ããããã³ ã«ãããã¡ã«å¯Ÿããããã°ã©ãã®æ¯æŽã Google 以 å€ã«ã¯ããŸããªãããããã¹ããã©ã¯ãã£ã¹ãè§£ 決çãæåäŸã«é¢ããç¥èã«æ¬ ããŠããŸããããããgRPCã³ãã¥ããã£ãæ¡å€§ããæ°ããéçºè ãåŒã蟌ãã«ã€ããŠãããã¯æçµçã«é²åããã§ãããã
- éããããã©ãŠã¶ã®ãµããŒã
çŸåšã®gRPC Webãã©ãŠã¶ã¯HTTP/2ãã¬ãŒã ãåŠçã§ããªãããããã©ãŠã¶ããgRPCãµãŒãã¹ã广çã«åŒã³åºãããšãã§ããŸããããã®çµæãgRPCã§ãããã·ãå©çšããå¿ èŠããããŸãããããã«ã¯ããã€ãã®æ¬ ç¹ããããŸãã
- 人éã«ã¯èªããªã
XML ã JSON ãšã¯ç°ãªããProtobuf ãã¡ã€ã«ã¯ããŒã¿ããã€ããªåœ¢åŒã«å§çž®ãããŠããããã人éãèªãããšã¯ã§ããŸãããéçºè ã¯ããã€ããŒãã®è©äŸ¡ããã©ãã«ã·ã¥ãŒãã£ã³ã°ãæåã¯ãšãªã®äœæã«ãserver reflection protocol ã gRPC command prompt ãªã©ã®è¿œå ããŒã«ã䜿çšããå¿ èŠããããŸãã
- æ·±ãåŠç¿æ²ç·
RESTãGraphQLãäž»ã«JSONã䜿çšããã®ãšã¯å¯Ÿç §çã«ããããã³ã«ã»ãããã¡ã«æ £ããHTTP/2ã®æ©æŠã«å¯ŸåŠããæ¹æ³ãçºèŠããã®ã«æéããããã ããã
AppMaster ã¯ã©ã®ããã«åœ¹ç«ã€ã®ãïŒ

ããŒã³ãŒã çæã¯ã人ã ã®ããã°ã©ãã³ã°ã«å¯ŸããèŠæ¹ãå€ãã€ã€ãããããŒã³ãŒãçæã«ãã£ãŠã人ã 㯠ã³ãŒãçæã§ ããéããœãããŠã§ã¢ãåŠã³ãäœæããããšãã§ããããã«ãªããŸããAppMasterã®ãããªããŒã³ãŒãçæãã©ãããã©ãŒã ã䜿ãã°ãã¢ããªã±ãŒã·ã§ã³ã®ã³ãŒãçæã¯ããã·ã³ãã«ã«ãªããŸããã³ãŒãçæã¯ä¿è·ãããŠãããäœæãããã³ãŒãã¯ããªãã ãã«åž°å±ãããããæææš©ã®åé¡ããããŸãããAppMasterã䜿çšããããšã§ãã¯ã©ã€ã¢ã³ãããã³ãµãŒãã»ã¢ããªã±ãŒã·ã§ã³ãããéããããç°¡åã«äœæããããšãã§ããŸãã
AppMasterã®ã³ãŒãçæäžèŠã®ãã©ãããã©ãŒã ã«ãããéçºè ã¯gRPCãããã³ã«ã䜿çšããŠãããã¯ãšã³ãã®ãã€ã¯ããµãŒãã¹ã»ã¢ãŒããã¯ãã£éã§ãªã¯ãšã¹ããè¡ãããšãã§ããŸããæ¥å¹Žã¯ãgRPC WebãšgRPC Mobileã¢ããªã±ãŒã·ã§ã³ã®äž¡æ¹ãžã®APIãå«ããããšã§ãgRPCãµããŒããæ¡åŒµããäºå®ã§ãã
ãŸãšã
gRPC ãµãŒãã¹ã«ã¯ãäŒæ¥ãéçºè ã«ãšã£ãŠé åçãªããã€ãã®å©ç¹ããããŸãããæçµçã«ãREST ã SOAP ã®ãããªä»ã®ãµãŒãã¹ã§ã¯ãªã gRPC ãµãŒãã¹ã䜿çšãããã©ããã¯ãã¢ããªã±ãŒã·ã§ã³ã«äŸåããŸãããããœãããŠã§ã¢ã¯ gRPC ã䜿çšããããšã§é«ãããã©ãŒãã³ã¹ãåŸãããšãã§ããŸãããä»ã®ãœãããŠã§ã¢ã¯ãã®ä»£çšåã«é©ããŠãããããããŸãããgRPC ãµãŒãã¹ã®æ¬ ç¹ãšå©ç¹ãçè§£ããäžã§ãèªåã«ãšã£ãŠæå¹ãã©ããã倿ããå¿ èŠããããŸãã


