2017幎ã¯DevOpsã«ãšã£ãŠéèŠãªå¹Žã§ããããšã³ã·ã¹ãã å ã®ãã¬ãŒã€ãŒã®æ°ãå€§å¹ ã«å¢å ããCNCFã䜿çšãããããžã§ã¯ãã®æ°ã3åã«ãªããŸããã 1幎å ãèŠæ®ããŠãã€ãããŒã·ã§ã³ãšåžå Žã®å€åãããã«å éãããšäºæ³ããŠããŸãã 以äžã§ã¯ã2018幎ã®ãã€ã¯ããµãŒãã¹ã®åéã®ååã調ã¹ãŸããããµãŒãã¹ãã³ãã«ïŒãããããã¡ãã·ã¥ãïŒãã€ãã³ãé§ååã¢ãŒããã¯ãã£ããã€ãã£ãã³ã³ããã»ãã¥ãªãã£ãGraphQLãããã³Chaosãšã³ãžãã¢ãªã³ã°ã§ãã
1.ãµãŒãã¹ãã³ãã«ã人æ°ã§ãïŒ
ãµãŒãã¹ãã³ãã«ãŸãã¯ãã¡ãã·ã¥ãããµãŒãã¹éã®éä¿¡ãæ¹åããããã®å°çšã€ã³ãã©ã¹ãã©ã¯ãã£ã¬ã€ã€ãŒã¯ãçŸåšã¯ã©ãŠãã³ã³ããã¹ãã§æãè°è«ãããŠããŸãã ã³ã³ãããããäžè¬çã«ãªãã«ã€ããŠããµãŒãã¹ããããžã¯ããåçã«ãªãããããã¯ãŒã¯æ©èœã®æ¹åãå¿ èŠã«ãªããŸãã ãµãŒãã¹ãã³ãã«ã¯ããµãŒãã¹ã®æ€åºãã«ãŒãã£ã³ã°ãè² è·åæ£ããã«ã¹ãã§ãã¯ãããã³å¯èŠ³æž¬æ§ãéããŠãã©ãã£ãã¯ã管çããã®ã«åœ¹ç«ã¡ãŸãã ãµãŒãã¹ãã³ãã«ã¯ãã³ã³ããã®æºãããªãè€éããæããããšããŸãã
æããã«ãHAProxyãtraefikãNGINXãªã©ã®ããŒããã©ã³ãµãŒãããŒã¿ãã¬ãŒã³ãšããŠåæ§ç¯ããã衚瀺ãããããã«ãªã£ãããããµãŒãã¹ã°ãªããã¯ãŸããŸãæ®åããŠããŸãã 倧èŠæš¡ãªå±éã¯ãŸã èŠãŠããŸããããå®çšŒåç°å¢ã®ã©ã€ããµãŒããŒã§æ¢ã«ãã³ãã«ã䜿çšããŠããäŒæ¥ã«ã€ããŠã¯ç¥ã£ãŠããŸãã ããã«ããµãŒãã¹ãã³ãã«ã¯ãã€ã¯ããµãŒãã¹ãŸãã¯Kubernetesç°å¢å°çšã§ã¯ãªãããµãŒããŒã®ãªãVMç°å¢ã§ã䜿çšã§ããŸãã ããšãã°ãåœç«çç©å·¥åŠæ å ±ã»ã³ã¿ãŒïŒNCBIïŒã«ã¯ã³ã³ããã¯ãããŸãããããªã³ã«ãŒãã䜿çšãããŠããŸãã
ãµãŒãã¹ãªã³ã¯ã¯ãã«ãªã¹ãšã³ãžãã¢ãªã³ã°ã«ã䜿çšã§ããŸããããã¯ããä¹±æµç¶æ ã«èããã·ã¹ãã ã®èœåã«å¯Ÿããä¿¡é Œæ§ãé«ããããã«èšèšãããåæ£ã·ã¹ãã ã§ã®å®éšã®èŠåŸãã§ãã ãµãŒãã¹ãã³ãã«ã¯ãåããŒãã§å®è¡ãããããŒã¢ã³ãã€ã³ã¹ããŒã«ãã代ããã«ãç°å¢ã«é 延ãšæ··ä¹±ã®ãªããžã§ã¯ããå°å ¥ã§ããŸãã
IstioãšBuoyant's Linkerdã¯ãã«ãªã¹ãšã³ãžãã¢ãªã³ã°ã«ãããæ倧ã®ååŒã§ãã Buoyantã¯ãæšå¹Ž12æã«Kubernetesã®ãªãŒãã³ãœãŒã¹ãµãŒãã¹ãã³ãã«ã§ããConduit v0.1ããªãªãŒã¹ããããšã«æ³šæããŠãã ããã
2.ã¯ã©ã€ãã³ã°ã€ãã³ãé§ååã¢ãŒããã¯ãã£
ããžãã¹ã®ä¿ææ§ã®å¿ èŠæ§ãé«ãŸãã«ã€ããŠã1ã€ã®ãµãŒãã¹ãã€ãã³ãããã£ã¹ããããããã®ã€ãã³ãã«ç¶ã1ã€ä»¥äžã®ãªãã¶ãŒããŒã³ã³ãããå¿çããŠãç¥èãªãã§éåæã«ããžãã¯ãããªã¬ãŒããããã·ã¥ãŸãã¯ã€ãã³ãããŒã¹ã®ã¢ãŒããã¯ãã£ãžã®åããèŠããå§ããŸããã€ãã³ãã®ãããã¥ãŒãµãŒã«ããå¿çã®äºå®ã èŠæ±é§ååã¢ãŒããã¯ãã£ãšã¯ç°ãªããã€ãã³ãé§ååã·ã¹ãã ã§ã¯ãéå§ã³ã³ããã§ã®æ©èœããã»ã¹ãšãã©ã³ã¶ã¯ã·ã§ã³ã®ããŒãã¯ãåã³ã³ããã§ã®ãªã¢ãŒãããã»ã¹ã®å¯çšæ§ãšçµäºãšã¯ç¡é¢ä¿ã§ãã ããã®è¿œå ã®å©ç¹ã¯ãéçºè ãããããã®ãµãŒãã¹ãããç¬ç«ããŠéçºã§ããããšã§ãã
éçºè ã¯ã€ãã³ããçæããããã®ã³ã³ããåãããç°å¢ãäœæã§ããŸããããµãŒãã¹ãšããŠã®æ©èœïŒFaaSïŒã¯åºæ¬çã«ãã®å質ãå®çŸããŸãã FaaSã¢ãŒããã¯ãã£ã§ã¯ãé¢æ°ã¯ããã¹ããšããŠããŒã¿ããŒã¹ã«ä¿åãããã€ãã³ãã«ãã£ãŠããªã¬ãŒãããŸãã é¢æ°ãåŒã³åºããåŸãAPIã³ã³ãããŒã©ãŒã¯ã¡ãã»ãŒãžãåä¿¡ããããŒããã©ã³ãµãŒãä»ããŠã¡ãã»ãŒãžãã¹ã«éä¿¡ããŸããã¡ãã»ãŒãžãã¹ã¯ã¡ãã»ãŒãžãèšç»ããã³ã³ãããŒåŒã³åºãã«æäŸããããã«ãã¥ãŒã«å ¥ããŸãã å®è¡åŸãçµæã¯ããŒââã¿ããŒã¹ã«ä¿åãããçµæããŠãŒã¶ãŒã«éä¿¡ãããé¢æ°ã¯å床åŒã³åºããããŸã§å»æ¢ãããŸãã
FaaSã®å©ç¹ã¯æ¬¡ã®ãšããã§ãã1ïŒã³ãŒããèšè¿°ããŠãããµãŒãã¹ãéå§ãããŸã§ã®æéãççž®ããŸããäœæãŸãã¯ãœãŒã¹ã³ãŒããè¶ ããã¢ãŒãã£ãã¡ã¯ãããªãããã§ãã ãã ããFaaSã¯å®å šã«åé¡ããªãããã§ã¯ãããŸããã FaaSã§ã¯ãµãŒãã¹ã®ãã¹ãŠã®éšåãåé¢ããå¿ èŠããããããæ€åºã管çãæŽçãããã³å¶åŸ¡ãå°é£ãªå€ãã®æ©èœãååšããå¯èœæ§ããããŸãã æåŸã«ãäŸåé¢ä¿ãå«ãå®å šãªå¯èŠæ§ããªããšãFaaSã·ã¹ãã ã®ãããã°ãé£ãããç¡éã«ãŒããçºçããå¯èœæ§ããããŸãã
FaaSã¯çŸåšãé·ãåŒã³åºããã¡ã¢ãªã«ããŒãããã倧éã®ããŒã¿ãããã³äžå®ã®ããã©ãŒãã³ã¹ãå¿ èŠãšããããã»ã¹ã«ã¯ããŸãé©ããŠããŸããã éçºè ã¯ããã¯ã°ã©ãŠã³ããžã§ããäžæçãªã€ãã³ãã«FaaSã䜿çšããŸãããã¹ãã¬ãŒãžã¬ã€ã€ãŒãæ¹åããããã©ãããã©ãŒã ãããå¹ççã«ãªãã«ã€ããŠããŠãŒã¹ã±ãŒã¹ã¯æéãšãšãã«æ¡å€§ãããšèããŠããŸãã
2017幎ã®ç§ã«ãCloud Native Computing FoundationïŒCNCFïŒã¯550人以äžã«ã€ã³ã¿ãã¥ãŒããŸããã31ïŒ ããµãŒããŒã¬ã¹ãã¯ãããžãŒã䜿çšãã28ïŒ ãä»åŸ18ãæé䜿çšããäºå®ã§ãã 調æ»ã¯ãã©ã®ç¹å®ã®ãµãŒããŒãã©ãããã©ãŒã ã䜿çšãããŠããããšãã質åã«ãã£ãŠæ·±ãŸããŸããã ãµãŒããŒã¬ã¹ãã¯ãããžãŒã䜿çšããŠãã169人ã®ãã¡ã77ïŒ ãAWS Lambdaã䜿çšããŠãããšçããŸããã Lambdaã¯ãµãŒããŒã¬ã¹ãã©ãããã©ãŒã ããªãŒããããããããŸããããåšèŸºã«ã¯èå³æ·±ãæ©äŒããããããããŸããã ãããã®å¢çã®èšç®ã¯ãIoTããã³AR / VRã«ãšã£ãŠç¹ã«éèŠã§ãã
3.ã»ãã¥ãªãã£ããŒãºã¯å€åããŠããŸã
ã³ã³ããã«ããã±ãŒãžåãããã¢ããªã±ãŒã·ã§ã³ã¯ãã«ãŒãã«ã«ã¢ã¯ã»ã¹ãããããããã©ã«ãã§ã¯ã»ãšãã©ã®å Žåå®å šã§ãã VMç°å¢ã§ã¯ãå¯äžã®èŠç¹ã¯ä»®æ³ããã€ã¹ãã©ã€ããŒã§ãã ã³ã³ããç°å¢ã«ç§»è¡ãããšãOSã«ã¯ã·ã¹ãã ã³ãŒã«ãšã»ãã³ãã£ãã¯ãªæå³ããããŸãã ã¯ããã«æ¿ããã³ãã¥ãã±ãŒã·ã§ã³ã®ããã§ãã 以åã¯ããªãã¬ãŒã¿ã¯ãšãŒãžã§ã³ããä»®æ³ãã·ã³ã«è»¢éããããšã§ãããã®æ©èœã®äžéšãååŸã§ããŸããããããã¯å°é£ã§ããã ã³ã³ããã¯ããåªããå¯èŠæ§ãæäŸããã³ã³ããç°å¢ã§ã®çµ±åã¯VMç°å¢ãšæ¯ã¹ãŠç°¡åã§ãã
äžèšã念é ã«çœ®ããŠãã451 Research Surveyãã§ã¯ãã³ã³ãããåãå ¥ããããã®å®å šæ§ãæ倧ã®é害ã§ãããšããå ±åãèŠã€ããããšãã§ããŸãã è匱æ§ã¯å ã ãã³ã³ããç°å¢ã«ãããäž»èŠãªã»ãã¥ãªãã£åé¡ã§ããã å ¬å ±ã¬ãžã¹ããªã§ããã«äœ¿çšã§ããã³ã³ããã€ã¡ãŒãžã®æ°ãå¢ããŠããããããããã«è匱æ§ããªãããšã確èªããããšãéèŠã«ãªããŸããã æéãçµã€ã«ã€ããŠãç»åã®ã¹ãã£ã³ãšèªèšŒã¯å¿ éåã«ãªããŸããã
ãã€ããŒãã€ã¶ãŒãã¢ã¯ã»ã¹ããã³å¶åŸ¡ãã€ã³ããšããŠæ©èœããä»®æ³åç°å¢ãšã¯ç°ãªããã«ãŒãã«ã«ãŒãã¢ã¯ã»ã¹ãæã€ã³ã³ãããŒã¯ãæçµçã«ã«ãŒãã«äžã®ãã¹ãŠã®ã³ã³ãããŒã«ã¢ã¯ã»ã¹ã§ããŸãã 次ã«ãçµç¹ã¯ã³ã³ããããã¹ããšå¯Ÿè©±ããã©ã®ã³ã³ãããç¹å®ã®ã¢ã¯ã·ã§ã³ãŸãã¯ã·ã¹ãã ã³ãŒã«ãå®è¡ã§ãããã確èªããå¿ èŠããããŸãã ã°ã«ãŒããšåå空éã®é©åãªæ§æã確ä¿ããããã«ãã¹ãã匷åããããšãã»ãã¥ãªãã£ã«ãšã£ãŠéèŠã§ãã
æåŸã«ãåŸæ¥ã®ãã¡ã€ã¢ãŠã©ãŒã«ã¯ããããã¯ãŒã¯ãããŒãèš±å¯ããããã«IPã¢ãã¬ã¹ã«ãŒã«ã«äŸåããŠããŸãã åçãªãŒã±ã¹ãã¬ãŒã¿ãŒã¯IPã¢ãã¬ã¹ãåå©çšããããããã®æ¹æ³ã¯ã³ã³ãããŒç°å¢ã«ã¯é©çšãããŸããã ãªã¢ã«ã¿ã€ã ã®æ€åºãšå¿çã¯ãå®çšŒåç°å¢ã«äžå¯æ¬ ã§ãããã³ã³ãããŒç°å¢ã«ã€ã³ããªã³ãïŒæçŽïŒããåäœã®ããŒã¹ã©ã€ã³ã®è©³çŽ°ãªå³ãæ§ç¯ããããšã§å®çŸããããããç°åžžãªåäœãç°¡åã«æ€åºããŠæ»æè ãæåããŸãã 451ã¬ããŒãã¯ã調æ»ããäŒæ¥ã®52ïŒ ãçç£ã§ã³ã³ããã䜿çšããŠããããšãææããŠããŸãã
4. RESTããGraphQLãžã®ç§»è¡
2012幎ã«Facebookã«ãã£ãŠäœæããã2015幎ã«ãªãŒãã³ãœãŒã¹ãšããŠå ¬éãããGraphQLã¯ãèšèªãšã¯ãšãªã®å®è¡ã§ããAPIä»æ§ã§ãã GraphQLã¿ã€ãã·ã¹ãã ã«ãããéçºè ã¯ããŒã¿ã¹ããŒããå®çŸ©ã§ããŸãã æ¢åã®ãªã¯ãšã¹ããã¯ã©ã€ã¢ã³ãã¢ããªã±ãŒã·ã§ã³ã®åæ§ç¯ãæãªãããšãªããæ°ãããã£ãŒã«ããè¿œå ãããããã£ãŒã«ããã¯ãªã¢ïŒéæšå¥šïŒãããã§ããŸãã GraphQLã¯ãç¹å®ã®ããŒã¿ããŒã¹ãã¹ãã¬ãŒãžãšã³ãžã³ã«é¢é£ä»ããããŠããªããšããç¹ã§åŒ·åã§ãã
GraphQLãµãŒããŒã¯ããµãŒãã¹æ©èœã®å šç¯å²ãè¡šãåäžã®HTTPãšã³ããã€ã³ããšããŠæ©èœããŸãã ïŒRESTã®ãããªãšã³ããã€ã³ãã§ã¯ãªãïŒã¿ã€ããšãã£ãŒã«ãã®èŠ³ç¹ãããªãœãŒã¹éã®é¢ä¿ãå®çŸ©ããããšã«ãããGraphQLã¯ããããã£éã®ãªã³ã¯ããã©ãããšãã§ããããããµãŒãã¹ã¯åäžã®ã¯ãšãªã䜿çšããŠè€æ°ã®ãªãœãŒã¹ããããŒã¿ãåä¿¡ã§ããŸãã ããã«ãREST APIã§ã¯ã1ã€ã®èŠæ±ã«å¯ŸããŠè€æ°ã®URLãããŒãããå¿ èŠãããããããã¯ãŒã¯ã®è² è·ãå¢å€§ããèŠæ±ãé ããªããŸãã ãããæ°ãæžå°ãããšãGraphQLã¯åããŒã¿ã¯ãšãªã«å¿ èŠãªãªãœãŒã¹ã®éãåæžããŸãã è¿ãããããŒã¿ã¯éåžžãJSONã§ãã©ãŒããããããŸãã
RESTãããGraphQLã䜿çšããããšã«ã¯ãè¿œå ã®å©ç¹ããããŸãã ãŸããã¯ã©ã€ã¢ã³ããšãµãŒããŒã¯ãã¢ã³ãã£ãã§ãããããå¥ã ã«ç¶æã§ããŸãã RESTãšã¯ç°ãªããGraphQLã¯ã¯ã©ã€ã¢ã³ããšãµãŒããŒéã®éä¿¡ã«åæ§ã®èšèªã䜿çšããããããããã°ã容æã«ãªããŸãã ã¯ãšãªãã©ãŒã ã¯ããµãŒããŒããååŸããããŒã¿ã®ãã©ãŒã ãšå®å šã«äžè²«ããŠãããããGraphQLã¯ãSQLãGremlinãªã©ã®ä»ã®èšèªã«æ¯ã¹ãŠéåžžã«å¹ççãã€å¹æçã§ãã èŠæ±ã«ã¯å¿çã®åœ¢åŒãåæ ããããããåå·®ãæ€åºã§ããæ£ãã解決ãããªããã£ãŒã«ããå®çŸ©ã§ããŸãã ã¯ãšãªã¯ããã·ã³ãã«ã§ãããããããã»ã¹å šäœã§ããå®å®ããŠããŸãã ãã®ä»æ§ã¯ãå€éšAPIããµããŒãããããã«æãäžè¬çã§ãããå éšAPIã«ã䜿çšãããŠããããšãããããŸãã
GraphQLãŠãŒã¶ãŒã«ã¯ãAmplitudeãCredit KarmaãKLMãNY TimesãTwitchãYelpãªã©ãå«ãŸããŸãã11æãAmazonã¯GraphQLãµããŒããå«ãAWS AppSyncãèµ·åããŠãGraphQLã®äººæ°ã確èªããŸããã GraphQLãgRPCããã³ä»£æ¿Twitchã®Twirp RPCãã¬ãŒã ã¯ãŒã¯ã®ã³ã³ããã¹ãã§ã©ã®ããã«é²åããããèŠãã®ã¯èå³æ·±ãã§ãããã
5.ã«ãªã¹ã¯ããæåã«ãªã£ãŠããŸãã
Netflixã§æåã«æ®åããåŸã«AmazonãGoogleãMicrosoftãFacebookã§æ®åãã圌ãã¯ãçç£ã®åé¡ã«ââèããèœåã®ä¿¡é Œæ§ãé«ããã·ã¹ãã ãäœæããããã«Chaosãå®éšããŸããã éå»10幎ã«ããã£ãŠãã«ãªã¹ãšã³ãžãã¢ãªã³ã°ã¯æ£åœãªãã¯ãããžãŒã«é²åããŠããŸããã Chaos Monkeysã§å§ãŸããå®çšŒåç°å¢ã§ãµãŒãã¹ããªãã«ããŠãéå®³æ³šå ¥ãã¹ãïŒFITïŒã®ç¯å²ãæ¡å€§ãã倧èŠæš¡ç°å¢ã«é©ããChaos Kongãå°å ¥ããŸããã
è¡šé¢çã«ã¯ãã«ãªã¹ãšã³ãžãã¢ãªã³ã°ã¯åãªãæ³šå ¥ã®tleéšã«éããªãããã§ãã ã·ã¹ãã ãããã³ã°ã¯æ¥œããããšããããŸãããå¿ ãããçç£çã§ãããšã¯éãããæçšãªæ å ±ãæäŸã§ãããšã¯éããŸããã ã«ãªã¹æè¡ã¯ãã€ã³ãžã§ã¯ã·ã§ã³ã®å€±æã ãã§ãªãããã©ãã£ãã¯ã®æ¥äžæããªã¯ãšã¹ãã®ç°åžžãªçµã¿åãããªã©ãæ¢åã®åé¡ãç¹å®ããããã®å¹ åºãç¯å²ãå ·äœåããŸãã ç¹å®ã®åææ¡ä»¶ã確èªããããšã«å ããŠã圌ã¯æ°ããã·ã¹ãã ããããã£ãèå¥ããå¿ èŠããããŸãã ã·ã¹ãã ã®åŒ±ç¹ãç¹å®ããããšã«ãããããŒã ã¯å埩åãåäžããããã¬ãã£ããªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãé²ãããšãã§ããŸãã
ãã¥ãŒã©ã«ãããã¯ãŒã¯ããã£ãŒãã©ãŒãã³ã°ãªã©ã®æ°ãããã¯ãããžãŒã¯éåžžã«è€éã§ãããããäœããã©ã®ããã«æ©èœãããã決å®ããããšã¯ããããæ©èœããããšã蚌æãããããéèŠã§ã¯ãªããªãå ŽåããããŸãã ã«ãªã¹ãã¯ããã¯ã¯ãã·ã¹ãã ã®æŽåæ§ããã§ãã¯ããŠäžå®å®æ§ãæ€åºããããšã«ããããã®åé¡ã®è§£æ±ºã«åœ¹ç«ã¡ãŸãã ãšã³ãžãã¢ã¯ããŸããŸãè€éåããã·ã¹ãã ã®ä¿¡é Œæ§ãé«ããããã«åªåãããããããã¯ããã«åãå ¥ãããããã©ã¯ãã£ã¹ã«ãªãå¯èœæ§ããããŸãã
ã«ãªã¹ãšã³ãžãã¢ãªã³ã°ãããäžè¬çã«ãªããšãæ¢åã®ãªãŒãã³ãœãŒã¹ãããžã§ã¯ããåçšãªãã¡ãŒããŸãã¯åè¿°ã®ããã«ãµãŒãã¹ãã³ãã«ãéããŠå®è£ ããããšãã圢ããšãããšãã§ããŸãã