CocaineïŒèšå®å¯èœãªå šèœã«ã¹ã¿ã ã¢ããªã±ãŒã·ã§ã³çµ±åãããã¯ãŒã¯ãšã³ãžã³ïŒã¯ããªãŒãã³ãœãŒã¹PaaSã·ã¹ãã ïŒPlatform-as-a-ServiceïŒã§ãããæ¬è³ªçã«ã¢ããªãšã³ãžã³ã§ãããGoogle AppEngineãOpenShiftã CloudFoundryãŸãã¯Herokuã
ã¯ã©ãŠãã¯ãã¹ãŠã®ã€ã³ãã©ã¹ãã©ã¯ãã£ã®åé¡ã解決ããã³ã¹ããå©çã«å€ããæ°žé ã®åã³ãšå¹žçŠã§ããªãã®äººçãæ°žé ã«é£œåãããããšãã§ããããšã誰ããç¥ã£ãŠããŸãã ãããã®ç®æšã«å¯Ÿããå¯äžã®é害ã¯ãå®éã«ã¯é²ã§ãã IaaS ã PaaS ã SaaS ïŒ ãµãŒãã¹ãšããŠã¯äœã§ããïŒ ãã¹ãŠãæçµçã«è¯ããªãããã«ãã©ã®ãããªçš®é¡ã®ç¥ç§çãªæåãéžæããå¿ èŠããããŸããïŒ
ç§ãã¡ã¯ããããã®åé¡ã®èª¿æ»ã«å€ãã®æéãè²»ãããç§ãã¡ã®æèŠãã¢ã€ãã¢ãæŠå¿µãéžæããŠãããã«ã€ã³ã¹ããŒã«ãæ§æãæ£åžžã«äœ¿çšãããã¯ã©ãŠããã©ãããã©ãŒã ãæ§ç¯ããŸããã
ç©èª
ãã®ãã¯ãããžãŒã®èªçã®æŽå²ã¯ãHerokuãšå¯æ¥ã«é¢é£ããŠããŸãã æã ãã¯ã©ãŠããã¯ãããžãŒã¯ããã»ã©äººæ°ãââãªãã£ãããHerokuããã§ã«ãã£ãã®ã§ãç§ãã¡ã®ãããžã§ã¯ãã®åµèšè ã§ããAndrei Sibiryovã¯åœŒå¥³ã«èå³ãæã¡ãŸããã
åœæã®Herokuã¯ãRubyã ãããµããŒãããã¢ããªãšã³ãžã³ã§ããããã¢ã€ãã¢èªäœã¯é©æ°çã§ããã èããŠã¿ãŠãã ãããç¬èªã®ééã¢ããªã±ãŒã·ã§ã³ãäœæããŠã¯ã©ãŠãã«ã¢ããããŒãããã€ã³ãã©ã¹ãã©ã¯ãã£ã®åé¡ã«ã€ããŠãŸã£ããèããªãããã«ããããšãã§ããŸãã ããŒã¿ããŒã¹ãå¿ èŠã§ããïŒ åé¡ãããŸãã-ã¢ããªã³ããããŸãïŒ ãã°ãååŸããã«ã¯ïŒ åã³åé¡ãããŸããïŒ è² è·åæ£ã®åé¡ãéæ³ã®ããã«è§£æ±ºãããŸããã ãµã€ãã¯è¥ããŠçºå±äžã§ããïŒ ãŸãã圌ã¯ãªãœãŒã¹ãæã£ãŠããŸãã ãã®ãµã€ãã¯ãã§ã«äººæ°ããããŸããïŒ ãŸããã¯ã©ãŠãã¯åœŒãè² è·ã®äžã§ãèšåŒµãããçãæ®ãã®ã«åœ¹ç«ã¡ãŸãã ããã«ãGitã«åå ããããã«æããããæãæ©ãææããgitãä»ããŠè¿ éã«å±éããŸãã
ãã£ãããã§ããã ãããã«ããããããHerokuã®äœçœ®ä»ãã§ãã çŸå®ã«ã¯ããã¡ããããã¹ãŠãããæãã£ãã§ãã
圌ãã¯çŽ æŽãããã¢ã€ãã¢ãæã£ãŠããŠãå®è£ ã¯ãããŸããããå®éã«ãããäžè¬çã«ã©ã®ããã«æ©èœãããã説æããŠããŸããã§ããã ãåç¥ã®ããã«ãæªç¥ã®æ°ããäœããç解ãããå Žåã¯ãéçºè ã®ç«å Žã«èº«ã眮ããŠãã ããã ããªãã¯ãã³ãæ¬ é¥ãèŠãªããæžããŸããïŒ ãã®ãããã¯ã©ãŠãã¢ããªãšã³ãžã³ã®ãªãŒãã³ãœãŒã¹ãããžã§ã¯ããéå§ãããŸããã å°æ¥çã«ã¯ãå€åœã®éçºè ãåãããžãã¯ã«å°ãããå¯èœæ§ãé«ããšæããŸããããã«ãããOpenShiftãšCloudFoundryã®ãããªé¡äŒŒã®è£œåã®éçºãä¿é²ãããŸããã ãããã«ã€ããŠã¯å°ãåŸã§èª¬æããŸãã
ã³ã«ã€ã³ã¯ããšããšæ¥œããã¬ã¬ãŒãžãããžã§ã¯ãã§ããããYandexãå éšçšã«ãå€å10ãå€å100,000 RPSãã®è² è·ãåŠçã§ããèšåŒµããã¢ããªã±ãŒã·ã§ã³ãã©ãããã©ãŒã ãå¿ èŠãšãããšãã«ããã¹ãŠãå€ãããŸãããç®æšã äžæ¹ãJãBrowserã¯åãããŒãºã«è¿ã¥ããŠããããããžã§ã¯ããã¬ã¬ãŒãžããæãåºãæã§ããããšãæããã«ãªããŸããã
ãã°ããã®éã話ãããŠããã也ç¥ããçµ±èšãšè°è«ã®äœå°ã®ãªã声æã®äžçã«é£ã³èŸŒã¿ãŸãããã
Yandexãã³ã«ã€ã³ã䜿çšããå Žæ
Yandex.Browser-ãã©ãŠã¶ã®ããã¯ãšã³ãå šäœãã³ã«ã€ã³ãä»ããŠæ©èœããŸãã ããšãã°ããSmart LineãããQuick LinksãããFavorite Sitesãã Yandexã®å éšã€ã³ãã©ã¹ãã©ã¯ãã£ã
ãµããŒããããŠãããã©ââãããã©ãŒã
çŸåšãã³ã«ã€ã³ã¯æ¬¡ã®Linuxãã£ã¹ããªãã¥ãŒã·ã§ã³ã®ããã±ãŒãžããå±éã§ããŸãã
- Ubuntu 12.04ïŒPrecise PangolinïŒããã³ãã以å
- RHEL 6ããã³æŽŸçç©ã
æ®å¿µãªãããWindowsã®ãµããŒãã¯ãªããèšç»ããããŠããŸããããããã¯ãããšãã°CïŒãªã©ã®ãŠãŒã¶ãŒãä»ã®å Žæã§ã¹ãã³ããŠããã¯ã©ãŠããµãŒãã¹ã䜿çšã§ããªãããšãæå³ãããã®ã§ã¯ãããŸãã-é©åãªãã¬ãŒã ã¯ãŒã¯ãèšè¿°ããã ãã§ãïŒããã«ã€ããŠã¯åŸè¿°ããŸãïŒ ã
ãœãŒã¹ãããCocaineã¯ãboost 1.46+ããã³C ++ 11æšæºã¬ãã«GCC 4.4ããµããŒããã ïŒã€ãŸããã»ãšãã©ãªãïŒã³ã³ãã€ã©ãŒãåããã»ãŒãã¹ãŠã®* nixã·ã¹ãã ã§æ§ç¯ã§ããŸãã
ããŸããšããŠãã³ã«ã€ã³ã¯Mac OS Xã®ãœãŒã¹ããæ£åžžã«ãã«ããããŸããDockerãã¯ãããžãŒã®ãµããŒãïŒåŸè¿°ïŒã«ã¯ã3.8幎以äžã®Linuxã«ãŒãã«ãå¿ èŠã§ãã
ãªããããªã«ã³ã«ããŒãªã®ãïŒ
ã³ã«ã€ã³ãäž»èŠãªç«¶åä»ç€Ÿãšã©ã®ããã«ç°ãªããã詳ããèŠãŠã¿ãŸãããã
Herokuããå§ããŸãããã
Herokuã¯ãäž»ã«ç¬èªã®äŸ¡æ Œèšå®ããªã·ãŒãåãããªãŒãã³ãœãŒã¹ãã¯ãããžãŒã§ã¯ãããŸããã ããããæ瀺çãªåçåã«ãããHerokuã®ãµããŒããããã«åŒ·åãããåçä»ãã®åªããïŒçŸåšã®ïŒããã¥ã¡ã³ãããããŸãã æåããæã䟿å©ãªgitããŒã¹ã®ã¢ããªã±ãŒã·ã§ã³ãããã€ã¡ã³ãã·ã¹ãã ã¯ãã³ãŒãã®ã¯ãªãŒã³ã¢ããã匷å¶ããfakapã®å Žåã«ããŒã«ããã¯ãå¯èœã«ããŸãã
å€æ°ã®ã¢ããªã³ã«ãããããŸããŸãªããŒã¿ããŒã¹ããã£ãã·ã¥ããã¥ãŒãåæããã®ã³ã°ãªã©ã®ã¢ããªã±ãŒã·ã§ã³ã®ããŒãºã«ç°¡åã«å¯Ÿå¿ã§ããŸãã
èµ·åæã®ã¢ããªã±ãŒã·ã§ã³èªäœã¯ãdynoãšåŒã°ããããã»ã¹ã§äºãã«å®å šã«åé¢ãããŠããŸããdynoã¯ãè€æ°ã®ãµãŒããŒã§æ§æãããç¹å¥ãªdynoã°ãªããã«åæ£ãããŠããŸãã Dynoã¯è² è·ã«å¿ããŠå¿ èŠã«å¿ããŠèµ·åããååšããªãå Žåã¯åŒ·å¶çµäºãããŸãããããã£ãŠãHerokuã§ã¯ãè² è·åæ£ãšãã©ãŒã«ããã¬ã©ã³ã¹ãä¿èšŒãããŸãã
Rubyã®ã¿ã®åæãµããŒãã«ãããããããHerokuã¯çŸåšãJavaãClosureãNode.jsãScalaãPythonãããã³ïŒçªç¶ã®ïŒPHPãªã©ã®èšèªã§ã¢ããªã±ãŒã·ã§ã³ãäœæããæ©èœãæäŸããŸãã
CloudFoundryãšOpenShiftã®éçºã¯ãã³ã«ã€ã³ãšã»ãŒåæã«å§ãŸããŸããã ã©ã¡ãã倧äŒæ¥ïŒããããVMwareãšRedHatïŒãã匷åãªãµããŒããåããŠãããªãŒãã³ãœãŒã¹ãããžã§ã¯ãã§ãã CloudFoundryã¯ãçŸæç¹ã§ãã§ã«1ã€ã®åçãçã延ã³ãŠããŸãã ãã ããèšèªãµããŒãã¯JavaãScalaãGroovyãRubyãããã³JavaScriptã«éå®ãããŠããŸãã
OpenShiftã¯ããã«ããåªããŠããŸããPythonãPerlã«å ããŠãµããŒããããŠãããå¿ èŠãªèšèªãèªåã§ãµããŒãããæ©äŒããããŸãã æ®å¿µãªãããã¢ããªã±ãŒã·ã§ã³ã¯httpãä»ããŠã®ã¿çžäºã«éä¿¡ã§ãããããã¯ã©ãŠãã®ç¯å²ãå€å°å¶éãããŸãã
ã³ã«ã€ã³ã¯åæã«ããããšæ¯èŒããŠæå©ã§ãïŒ
- ããŸããŸãªèšèªïŒãã¬ãŒã ã¯ãŒã¯ïŒãžã®ã¢ããã¿ãŒã®ååšãã¯ã©ãŠãã§ã®äœæ¥ãå€§å¹ ã«ç°¡çŽ åããŸãã
- httpã ãã§ãªããã¢ããªã±ãŒã·ã§ã³éã®çžäºéä¿¡æ©èœãããã«ãããããšãã°ãç¬èªã®ã¯ã©ãŠãã³ã³ãã¥ãŒãã£ã³ã°ãã©ãããã©ãŒã ãæ§ç¯ã§ããŸãã
- ã¢ããªã±ãŒã·ã§ã³åé¢ã®åŒ·åãªãµããŒã-Dockerãã¯ãããžãŒã¯ãç§ãã¡ãé€ããOpenShiftã®ã¿ãå ¬åŒã«ãµããŒãããŠããŸãã
ç°¡åãªåäœåç
次ã«ãã¯ã©ãŠãã®å®éã®åäœãèŠãŠã¿ãŸããããåæã«ããœãªã¥ãŒã·ã§ã³ã®éžæã«åœ±é¿ãäžããçç±ã説æããŸãã
ã¯ã©ãŠãã¯ã€ã³ãã©ã¹ãã©ã¯ãã£ã®åé¡ã解決ããããã«èšèšãããŠããŸãã
ãããã®ã¿ã¹ã¯ã®1ã€ã¯ããã©ãŒã«ããã¬ã©ã³ã¹ã確ä¿ããããšã§ãã 1å°ã®ãã·ã³ã§ã®ã¿å®è¡ãããã¯ã©ãŠããã©ãããã©ãŒã ã«èª°ããæå¿ããããšã¯ãŸããããŸããã ãã®å Žåãã¯ã©ãŠãã¯ãã·ã³ãšãšãã«æ¶æ» ããŸãã ã³ã«ã€ã³ã®ã¯ã©ãŠãã¯ãã³ã«ã€ã³ã©ã³ã¿ã€ã ãµãŒããŒãã€ã³ã¹ããŒã«ãããŠãã1ã€ä»¥äžã®ç¬ç«ãããã·ã³ã§æ§æãããŠããŸãã å®éããã©ãããã©ãŒã ã®æå°æ©èœã«å¿ èŠãªã®ã¯ããã ãã§ãã
CloudFoundryãçµç±ãããã¯ã©ãŠãã®è«çéšåããšã«åå¥ã®ããã°ã©ã ãéå§ããããšã«ããŸããã ãããã£ãŠãããšãã°ãä»ã®ã¯ã©ãŠãã§HealthManagerãšåŒã°ãããã®-å®è¡äžã®ã¢ããªã±ãŒã·ã§ã³ã®å¯¿åœãç£èŠãã-ã¯ãåäžã®ãšã³ãã£ãã£ã«çµ±åãããŠããŸãã ãã®ãããªãœãªã¥ãŒã·ã§ã³ã¯ãäžæ¹ã§ã¯ããŒãã®ç®¡çãç°¡çŽ åããé害ãã€ã³ãã®æ°ãæžãããŸãããäžæ¹ã§ã¯ãã³ã«ã€ã³ã©ã³ã¿ã€ã ããèœã¡ããå ŽåãããŒãå šäœããã°ãããªã¹ãããåé€ãããŸãã ããããæéãšè² è·ã®ãã¹ãã«ããããã®ãããªãœãªã¥ãŒã·ã§ã³ã®éžæãæåããããšã瀺ãããŸããã
ã³ã«ã€ã³ã©ã³ã¿ã€ã ãå®è¡ãããã·ã³ã12å°ãããšããŸãã ãããããããã®è»ã¯ãäºãã«ã€ããŠäœãç¥ããŸããã ã¯ã©ãŠãããããžèšèšã¹ããŒã ãéžæããããã®ãªãã·ã§ã³ãæ€èšããéã2ã€ã®ãªãã·ã§ã³ãèæ ®ãããŸããã æåã®ã±ãŒã¹ã§ã¯ããã¹ãŠã®ããŒãã®IDãä¿èšŒãããŸããããŒããæ»ãã å ŽåãéèŠãªãã®ã¯äœãå€ãããŸããã ãããåæã«ãããžãã¯ãæ··åšããŠããŸãããªããªãã åºæ¬çã«2ã€ã®ãšã³ãã£ãã£ãé¢ä¿ããŸãã1ã€ç®ã¯ããŒãã®éçŽãšãã®ç®¡çã§ãã 2çªç®ã¯ããŒãã®ç®¡çã§ãã 2çªç®ã®å ŽåãããŒããéçŽããã³ã«ã€ã³ã©ã³ã¿ã€ã ããžãã¯ã¯ä»ã®ããŒãããå®å šã«åé¢ãããŠããŸããããã®ããŒãã¯ç¹å¥ãªæ¹æ³ã§æ§æããå¿ èŠããããŸãã æçµçã«ã2çªç®ã®ãªãã·ã§ã³ãéžæãããŸããã
ãŠãŒã¶ãŒã¯ãã¢ã¯ã»ã¹ãããµãŒãã¹ãŸãã¯ã¢ããªã±ãŒã·ã§ã³ã®å Žæã«ã€ããŠã¯äœãç¥ããŸãã-éçŽããŒãã®ã¢ãã¬ã¹ãšã¢ããªã±ãŒã·ã§ã³ã®ååã®ã¿ãç¥ãããŠããŸãã éç°èªèº«ããªã¯ãšã¹ãã«æé©ãªãã·ã³ãéžæãããªã¯ãšã¹ããå®è¡ããŸãã
ã¯ã©ãŠãã¢ããªãšã³ãžã³ã¯ãã¢ããªã±ãŒã·ã§ã³ã®å®è¡æ¹æ³ãããããªãå Žåããã®ããã«ã¯åŒã³åºãããŸããã å®éãã³ã«ã€ã³ã©ã³ã¿ã€ã ã¯äœãå®è¡ããããå®éã«æ°ã«ããŸããã å¯äžã®èŠä»¶ã¯ããã¡ã€ã«ãå®è¡å¯èœã§ããããšã§ãã ãã1ã€ã¯ããã®ã¢ããªã±ãŒã·ã§ã³ãã»ãŒããã«çµäºããããšã§ãã åçŽãªãã³ãã·ã§ã€ã¯ã¡ãã»ãŒãžã«è¿ä¿¡ããããšã¯ã§ããŸããããŸããååãšããŠãå€éšããã¢ããªã±ãŒã·ã§ã³ãå¶åŸ¡ããäžè¬çãªæ段ã¯ãããŸããã åäœããå Žåãããã¯ãããšãã°ããã³ã°ããªããšããæå³ã§ã¯ãããŸããã ãããŠãããã§ã¢ããªã±ãŒã·ã§ã³ïŒãŸãã¯ã¯ãŒã«ãŒïŒã®å¯¿åœãå¶åŸ¡ãããããã¯ã«è¿ã¥ããŸãã
å®è¡äžã®ã¢ããªã±ãŒã·ã§ã³ã¯äœããã®æ¹æ³ã§å¶åŸ¡ããå¿ èŠããããŸãã å®éãæå°éã®èŠä»¶ãå¿ èŠã§ããã¢ããªã±ãŒã·ã§ã³ã¯ãããŒãããŒãã³ãã³ãã䜿çšããŠãµãŒããŒãçããŠããããšããµãŒããŒã«éç¥ããçµäºã³ãã³ãã䜿çšããŠçŸããçµäºããå¿ èŠãããå ŽåããããŸãã ã¢ããªã±ãŒã·ã§ã³ã®å¿çãé·ãããªãå Žåãã¢ããªã±ãŒã·ã§ã³ã¯åæ¢ããŠãããšèŠãªãããSIGKILLãéä¿¡ãããŠçµäºããŸãã ã€ãŸããã¯ãŒã«ãŒã¯ç¹å¥ãªã·ã³ãã«ãªãããã³ã«ãå®è£ ããå¿ èŠããããŸã ã ã¢ããªã±ãŒã·ã§ã³éçºã®å©äŸ¿æ§ã®ããã«ã ãã¬ãŒã ã¯ãŒã¯ãšåŒã°ããããŸããŸãªèšèªçšã®ã¢ããã¿ãŒãäœæãããŸããã
5åéã®å±¥æŽ
ãã¬ãŒã ã¯ãŒã¯ã¯ãç¹å®ã®èšèªãã¯ã©ãŠããšéä¿¡ããããã®æããã€ãã£ããªæ¹æ³ãå®è£ ããç¹å¥ãªAPIã§ãã ããšãã°ãå éšãããã³ã«ã®å®è£ ã¯ãã¬ãŒã ã¯ãŒã¯ã®äžã«é ãããŠãããããã¯ã©ãŠããµãŒãã¹ãåŒã³åºããŠæäœããã®ã¯éåžžã«ç°¡åã§ãã ãŸããéåæåŒã³åºãã§ã®äœæ¥ãç°¡çŽ åããããŒã«ãå®è£ ãããŠããŸãã çŸæç¹ã§ã¯ããµããŒãã¯ãã§ã«å®è£ ãããŠããŸãã
- C ++
- Java
- Python
- ã«ããŒ
- Node.js
- è¡ã
ã³ã³ãœãŒã«ã€ã³ã¿ãŒãã§ãŒã¹ãšWebã®äž¡æ¹ãä»ããŠããã®ãã¹ãŠã®ã¯ã©ãŠãã管çããããŒã«ããããŸã ã ãããã®å®è£ ã¯ãå€ãã®ç¹ã§é¡äŒŒã®HerokuãŸãã¯CloudFoundryããŒã«ãšéåžžã«ãã䌌ãŠããŸããã¢ããªã±ãŒã·ã§ã³ã®ãããã€ãèµ·åãåæ¢ã管çãæ§æãããã³çµ±èšã®åéãšãã°ã®è¡šç€ºãå¯èœã§ãã ããã§äœãæ°ãããã®ãæãä»ãã®ã¯æ¬åœã«é£ããã§ãããAmazon EC2ããŒã«ã¯ã·ã³ãã«ããšäŸ¿å©ãã®ç¹ã§ç§ãã¡ã®äŸã§ãããç§ãã¡ã¯ãããç®æããŠåªåããŠããŸãã
建ç¯
äžæ©äžãã£ãŠãã¯ã©ãŠãã€ã³ãã©ã¹ãã©ã¯ãã£ãèŠãŠã¿ãŸãããã ã¯ã©ãŠããšã¯äœã§ããïŒ éåžžããªãœãŒã¹ãæäŸãããã·ã³ãããã€ããããŸãã ãããã®ãã·ã³ã¯ãäœããã®å¶åŸ¡èŠçŽ ã«ãã£ãŠäœããã®åœ¢ã§åäžã®ãšã³ãã£ãã£ã«æ¥ç¶ãããŠããŸãã æäŸãããå ±æãªãœãŒã¹ã¯ãããŸããŸãªãµãŒãã¹ãšãŠãŒã¶ãŒã¢ããªã±ãŒã·ã§ã³ãæŽçããããã«äœ¿çšãããŸãã äœã«ã䌌ãŠããŸãããïŒ
1ã€ã®ïŒéåžžïŒã³ã³ãã¥ãŒã¿ãŒã®ã€ã³ãã©ã¹ãã©ã¯ãã£ã管çãããã®ãªãœãŒã¹ããŠãŒã¶ãŒã«æäŸããããã°ã©ã ãå«ããœãããŠã§ã¢ã®ã«ããŽãªããããŸãã ã¢ãžã¥ãŒã«ã«ã¯æ確ãªåºåããããã³ã³ãããŒã«ãšã³ãã£ãã£ãããããŠãŒã¶ãŒã¹ããŒã¹ããããŸãã ãã¡ããã ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã«é¢ãããã®ã§ã ã ã¯ã©ãŠãã€ã³ãã©ã¹ãã©ã¯ãã£ã®å Žåãåæ§ã®ããšãããŠã¿ãŸãããïŒ
ãããã³ã«ã€ã³ã®äœãæ¹ã§ãã
ãã¹ãŠã®äžå¿ã«ããã®ã¯ã ãµãŒãã¹ ã ãã©ã€ããŒãããã³APIã®åºæ¬éå±€ãå«ãã³ã¢ã§ãã ãã®ãµãŒãã¹ã¯ãæ¬è³ªçã«C ++ã§èšè¿°ãããã©ã€ãã©ãªã§ãããã«ãŒãã«ã«æ¥ç¶ãããã¯ã©ãŠãã«ç¹å®ã®ãµãŒãã¹ãæäŸããŸãã ãµãŒãã¹ã¯ã³ã«ã€ã³ã©ã³ã¿ã€ã ãšåæã«èµ·åãããåäœäžã¯åžžã«åäžã®ã³ããŒå ã®å¥ã®ã¹ã¬ããã§å®è¡ãããŸãã
ã¡ã€ã³ãµãŒãã¹ã¯NodeãµãŒãã¹ã§ã ã¢ããªã±ãŒã·ã§ã³ã®éå§ãåæ¢ãããã³æäœãå¶åŸ¡ã§ããŸãã æåã«èµ·åãããã¢ããªã±ãŒã·ã§ã³ã«ã¯ã¯ãŒã«ãŒããããŸãã-ãã®ã¢ããªã±ãŒã·ã§ã³ã®ã€ã³ã¹ã¿ã³ã¹-ã¯ãã¢ããªã±ãŒã·ã§ã³ã®æç¹ã§çæãéå§ããã¢ããªã±ãŒã·ã§ã³ã®è² è·ãå¢ãããŸãã
åã¢ããªã±ãŒã·ã§ã³ã«ã¯ãã¯ãŒã«ãŒãšã¯ã©ã€ã¢ã³ãéã§ã¡ãã»ãŒãžãã¥ãŒããã£ã¹ããããããšã³ãžã³ãããããããã®ã¯ãŒã«ãŒã®æ°ã管çããã³åæ£ããŸãã
LocatorãµãŒãã¹ã䜿çšãããšãç¬ç«ããããŒããåäžã®ã¯ã©ã¹ã¿ãŒã«æ¥ç¶ããã¯ã©ãŠãå ã®ã¯ã©ã€ã¢ã³ãããèŠæ±ãããã¢ããªã±ãŒã·ã§ã³ãŸãã¯ãµãŒãã¹ãæ€çŽ¢ã§ããŸãã ããšãã°ãäžéšã®ã¢ããªã±ãŒã·ã§ã³ããã¬ãŒãµãŒãã¹ãèŠæ±ããå Žåããã±ãŒã¿ãŒã¯ã©ã®ãšã³ããã€ã³ãã«æäŸãããã決å®ããŸãã ãšã³ããã€ã³ããšãšãã«ããµãŒãã¹ã¡ãœãããã£ã¹ãããããŒãã«ãæäŸãããŸãã ããã«ã€ããŠèšãã°ã CORBAãThriftã® RPCã¡ã«ããºã ãšã¯ç°ãªãããµãŒãã¹ïŒããã³ã¢ããªã±ãŒã·ã§ã³ïŒ ã®ã€ã³ã¿ãŒãã§ã€ã¹ ïŒIDLïŒã®å¿ é ã®èšè¿°ãåãé€ãããšã«ããŸããã 代ããã«ãå解å床ã§ã¡ãœããã®ããŒãã«ãããŒããããšããã¬ãŒã ã¯ãŒã¯ã¯åèšèªããã€ãã£ãã«æäœããæ¹æ³ãå®è£ ããŸãã ããã«å¿ èŠãªã®ã¯ãèŠæ±ããããµãŒãã¹ã®ååãšãå Žåã«ãã£ãŠã¯ããŒãžã§ã³ã ãã§ãã
ããã®æ©æµãåããŸãããïŒ ééããªãã¯ãïŒ åã¢ããªã±ãŒã·ã§ã³ã®IDLãå®çŸ©ããå¿ èŠæ§ãæé€ããããšã«ãããRubyãPythonãªã©ã®åçèšèªã®éçºãå€§å¹ ã«ä¿é²ããŸããã ã¢ããªã±ãŒã·ã§ã³ã®APIãå€æŽãããå Žåããã¹ãŠã®ãã¬ãŒã ã¯ãŒã¯ã®ã¹ã¿ããæžãæããå¿ èŠã¯ãããŸãããåçã«åä»ããããèšèªã®å Žåãã¡ãœããã¯éåžžåçã«äœæãããŸãã
ãµãŒãã¹ã«ã€ããŠç¶ããŸã
ãã°ãèšé²ããæ段ã®ãªãã¯ã©ãŠããå°ãªããšã1ã€ããããšã¯ã»ãšãã©ãããŸãããããŒãå šäœããã®ãã°è»¢éã®åäžãã€ã³ãã§ããLoggerãµãŒãã¹ãšããŠå®è£ ããŠããŸãã
æåŸã«ã ã¹ãã¬ãŒãžãµãŒãã¹ã¯ãã¢ããªã±ãŒã·ã§ã³èªäœããããã§ã¹ãããããã¡ã€ã«ãããã³ã¢ããªã±ãŒã·ã§ã³èªäœãå«ãå¿ èŠãªãã®ä»ã®æ å ±ãªã©ãäœã§ãä¿åããããã®æœè±¡çãªã€ã³ã¿ãŒãã§ãŒã¹ã§ãã
ãµãŒãã¹ã¢ãŒããã¯ãã£ã¯æ¡åŒµãå¯èœã§ãããLinuxã«ãŒãã«ã¢ãžã¥ãŒã«ã«äŒŒãŠããŸãã ç¬èªã®ãµãŒãã¹ãèšè¿°ããããæ¢åã®éå±€ãå±éãããã§ããŸãã
ãã©ã€ããŒã¯ã¹ã¿ã³ãã¢ãã³ã§ããããã®ç®çã¯ã¯ã©ãŠãã«ãã£ãŠåŠçãããã€ãã³ããçæããããšã§ãã ããšãã°ããã®ãããªã€ãã³ãã¯ããã¡ã€ã«ãŸãã¯ãã£ã¬ã¯ããªã®å€æŽãã¿ã€ã ã¢ãŠãããŸãã¯ãã®ä»ã®ã€ãã³ãã§ãã ïŒãªãã·ã§ã³ãšããŠïŒADCçšã®ãã©ã€ããŒãäœæã§ããŸããããã«ãããä¿¡å·ãå°çãããšåŠçã®ããã«ãªã»ãããããŸãã
ã¢ããªã±ãŒã·ã§ã³ãšãµãŒãã¹ãHTTPãä»ããŠã®ã¿äºãã«ââéä¿¡ã§ããå€ãã®åæ§ã®PaaSãšã¯ç°ãªããã³ã«ã€ã³ã¯RPCã¡ã«ããºã ãä»ããŠãã€ããªHTTP / 2.0ã®ãããªãããã³ã«ãä»ããŠéä¿¡ããŸãã ããã«ãããããšãã°ããã¬ãŒã ã¯ãŒã¯ãæäŸããããŒã«ã䜿çšããŠãç°ãªãã¢ããªã±ãŒã·ã§ã³éã§çŽæ¥å¯Ÿè©±ããæ©äŒãåŸãããŸãã 詳现ã«ã€ããŠã¯ã ãã¡ããã芧ãã ãã ã ãã¡ãããHTTPã€ã³ã¿ãŒãã§ãŒã¹èªäœã¯ãŸã ããã«ãããŸãã åãã¬ãŒã ã¯ãŒã¯ã«ã¯ãHTTPã¢ããªã±ãŒã·ã§ã³ã®éçºãç°¡çŽ åãããã€ãã£ãããŒã«ãçšæãããŠããŸãã ããšãã°ãPythonã®å Žåããã©ã¹ã³ã®ãããªãã³ã¬ãŒã¿ãŒããããŸãã
å€éšã§ã¯ãHTTPã€ã³ã¿ãŒãã§ã€ã¹ïŒãã®ãªãã·ã§ã³ãæäŸãããŸããïŒã ãã§ãªããããšãã°ZeroMQãŸãã¯ç¬èªã®æ¡åŒµæ©èœãä»ããŠã¢ããªã±ãŒã·ã§ã³ã«ã¢ã¯ã»ã¹ããããšãã§ããŸãã
ã¹ã±ãŒãªã³ã°ãšåé¢
Cloudãã£ã¹ããªãã¥ãŒã·ã§ã³ãå®éã«ã©ã®ããã«å®è£ ãããè² è·ã®äžã§ã©ã®ããã«çããããšããŠããã®ãã詳ããèŠãŠã¿ãŸãããã
ã¯ã©ã¹ã¿ãŒãéå§ããããšãåã ã®ããŒãïŒã³ã«ã€ã³ã©ã³ã¿ã€ã ãå®è¡ããŠãããã·ã³ïŒã¯ãåãã·ã³ããã«ããã£ã¹ãã°ã«ãŒãã«ç»é²ããå éšLocatorãµãŒãã¹ã䜿çšããŠçžäºã«åŠç¿ããããã«ããããã¹ãŠã®ããŒããšMetalocatorã®å ¥åãã€ã³ãã§ããå¥ã®ããŒãéã®éä¿¡ãæŽçããŸãã¯ã©ãŠããšåºæ¬çãªè² è·åæ£ã®å®è¡ã å¥ã®ãã·ã³ã§æ°ããã¢ããªã±ãŒã·ã§ã³ã衚瀺ãããããæ¢åã®ã¢ããªã±ãŒã·ã§ã³ãå¢ããããããšãéå±ã¹ãã£ããŒã¯ããã«ãã®ããšãèªèããè² è·ãããã«åããŸãã
ãŸããã¯ã©ãŠãã¯åè¿°ã®ãšã³ãžã³ã䜿çšããŠãã¡ãã»ãŒãžãã¥ãŒãšè² è·å¶åŸ¡ãç£èŠããŸãã ã¢ããªã±ãŒã·ã§ã³ã®è² è·ãå¢å ãããšããã©ãããã©ãŒã ã¯ãããŒãã®è² è·ãšããŸããŸãªãã·ã³ã®ã¹ãããã®å¯çšæ§ã«é¢ããå éšçãªã¢ã€ãã¢ã«åºã¥ããŠããã®ã¢ããªã±ãŒã·ã§ã³ã®å¿ èŠãªæ°ã®ã€ã³ã¹ã¿ã³ã¹ãèªåçã«èµ·åããŸãã ãã®ç¶æ³ã®ã¹ãããã¯ããã·ã³ã®äœããã®çµ±åãªãœãŒã¹ãšããŠç解ãããŸãã
ã¢ããªã±ãŒã·ã§ã³ãçæããã³åé¢ããããã®ã·ã¹ãã ã¯ã IsolateãšåŒã°ããå¥ã®ãšã³ãã£ãã£ã«ãªããŸãã æšæºæ§æã§ã¯ãã¯ã©ãŠãã¯éåžžã®ããã»ã¹ã䜿çšããŠæ°ããã¢ããªã±ãŒã·ã§ã³ã€ã³ã¹ã¿ã³ã¹ãèµ·åããŸãã DockerãµããŒãããã©ã°ã€ã³ãšããŠã€ã³ã¹ããŒã«ãããŠããå Žåãã¯ã©ãŠãã¯æ°ããã¢ããªã±ãŒã·ã§ã³ãåå¥ã®éé¢ãããã³ã³ãããŒã§èµ·åããŸãã
åé¢ïŒ ç°¡åïŒ
Dockerã¯ãä»»æã®ã¢ããªã±ãŒã·ã§ã³ãã軜éã§ããŒã¿ãã«ã§èªå·±å®çµåã®ã³ã³ãããŒãäœæããããã®ã·ã³ãã«ã§å¹ççãªæ¹æ³ãæäŸãããªãŒãã³ãœãŒã¹ãã¯ãããžãŒã§ãã äœæãããã³ã³ããã¯ãéçºè ããã¹ã¿ãŒã®ã©ãããããããæ°åå°ã®ãµãŒããŒã®ã¯ã©ã¹ã¿ãŒãŸã§ãã»ãŒãã¹ãŠã®ç°å¢ã§åæ§ã«æ©èœããŸãã ããã«ãããããšãã°ãã¢ããªã±ãŒã·ã§ã³ããã€ããªã®äŸåé¢ä¿ãšãšãã«åé¢ããã©ã€ãã©ãªã®ä»ã®ããŒãžã§ã³ãåå ã§ã¯ã©ãŠãå ã§ã¢ããªã±ãŒã·ã§ã³ãç°ãªãåäœããããããŸã£ããèµ·åããªããšæãããšãé²ãããšãã§ããŸãã
Dockerãã¯ãããžãŒã¯ãéåžžã®Linuxã³ã³ããïŒLXCïŒã«åºã¥ããŠãããããŒã ã¹ããŒã¹ãšcgroupã䜿çšããŠãéé¢ãããç°å¢ã§ã¢ããªã±ãŒã·ã§ã³ãå®è¡ããæ©èœãæäŸããŸãã XenãKVMãªã©ã®å®å šä»®æ³åç°å¢ãšã¯ç°ãªããã³ã³ããã¯å ±éã®ã³ã¢ã䜿çšããããã€ã¹ããšãã¥ã¬ãŒãããæ©èœãæäŸããŸããããåæã«ãããã䜿çšãããšè¿œå ã®ãªãŒããŒããããçºçãããã»ãŒç¬æã«èµ·åããŸãã ã³ã³ããåèªäœã«å ããŠãDockerã¯ãã¢ããªã±ãŒã·ã§ã³ã€ã¡ãŒãžã®ãããã¯ãŒã¯æ§æãé åžãããã³å±éãç°¡çŽ åããããŒã«ãæäŸããŸãã ãã®ãããªããŒã«ã®1ã€ã¯ãè€æ°ã®ç¬ç«ããã¬ã€ã€ãŒããã¢ããªã±ãŒã·ã§ã³ã€ã¡ãŒãžãäœæããããšã§ãã
Cocaine'açšã®ã¢ããªã±ãŒã·ã§ã³ãéçºãããã€ããªäŸåé¢ä¿ïŒããšãã°ãC ++ãŸãã¯Pythonã®ã¢ããªã±ãŒã·ã§ã³ïŒãåŒãåºãå ŽåãDockerãã¯ãããžãŒã¯ãããã®ãã€ããªäŸåé¢ä¿ãåé¢ããã®ã«éåžžã«åœ¹ç«ã¡ãŸãã
è䟵é£æ§
ã¢ããªã±ãŒã·ã§ã³ãäœæãããµãŒããŒã«ã¢ããããŒãããæ§æããéåœã«ä»»ãããšããŸãã 1é±éåŸããããã©ã®ããã«æ©èœãããã確èªããæ²ããããšã«ããŸã£ããç°ãªãçç±ã§ã¢ããªã±ãŒã·ã§ã³ãããªãåã«ã¯ã©ãã·ã¥ããããšãçºèŠããŸãã
- ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãŸãã¯äŸåã©ã€ãã©ãªã®èªçºçãªæŽæ°ã
- ãã£ã¹ã¯ãã«ãã°;
- ã¢ããªã±ãŒã·ã§ã³ãããªãŒãºãŸãã¯ã¯ã©ãã·ã¥ããã
- ãµãŒããŒããŒããŠã§ã¢èªäœã®åé¡ã
ãããã®å¹æã¯ã ãœãããŠã§ã¢äŸµé£ ããšããŠç¥ãããŠããŸãã
ã³ã«ã€ã³ã¯äŸµé£ã«åŒ·ãæè¡ã§ãã åé¢ã·ã¹ãã ã¯ãèªçºçãªã©ã€ãã©ãªããã³OSã®æŽæ°ããã¢ããªã±ãŒã·ã§ã³ãä¿åããŸãã ã¢ããªã±ãŒã·ã§ã³ãã¯ã©ãã·ã¥ãŸãã¯ããªãŒãºããå Žåãã¯ã©ãŠãèªäœã«ãã£ãŠããŸãã¯ä»ã®ã¯ã©ãŠããã©ãããã©ãŒã ã§ãã«ã¹ãããŒãžã£ãŒãšåŒã°ããã·ã¹ãã ã«ãã£ãŠèªåçã«åèµ·åãããŸãã éèªäœã®åé¡ã¯ãé²èªäœã«ãã£ãŠå¹³æºåãããŸãã
ãã©ã°ã€ã³ãšãµãŒãã¹
ãã©ã°ã€ã³ãšãµãŒãã¹ã¯ããã©ãããã©ãŒã ã³ã¢ã®ã³ã³ããã¹ãã§æ¢ã«ç°¡åã«èª¬æãããŠããŸãã ãã©ã°ã€ã³ã¯ãã¢ãŒããã¯ãã£ã®æ¡åŒµã¢ãžã¥ãŒã«ã§ãã ããšãã°ãDockerã®ãµããŒãã¯ãã©ã°ã€ã³ã䜿çšããŠå®è£ ãããŸããã 圌ãã¯ã«åãããŠããŸãïŒ
- åé¢ -ã¢ããªã±ãŒã·ã§ã³åé¢ã·ã¹ãã
- ãã©ã€ã㌠-ã¢ããªã±ãŒã·ã§ã³ã®å€éšã€ãã³ããçæããã·ã¹ãã
- ã¹ãã¬ãŒãž -ã¹ãã¬ãŒãžã·ã¹ãã ã
- ãã®ã³ã° -ãã®ã³ã°ã·ã¹ãã ã
- ã²ãŒããŠã§ã€ -ãã©ã³ã¹ã·ã¹ãã
- ãµãŒãã¹ -ãã®ä»ã®ãŠãŒã¶ãŒãµãŒãã¹
ãã©ã°ã€ã³ã䜿çšããŠãã·ã¹ãã ã®äžèšã®éšåã®å®è£ ãå€æŽããæ§æãã¡ã€ã«ã®ã¿ãå€æŽã§ããŸãã ãã®ã³ã°ã·ã¹ãã ãSyslogããLogstashã«çœ®ãæãããã§ããïŒ æ§æå ã®3è¡ãå€æŽããŠããã³ãŒãã¯åããŸãŸã§ãã ãã¶ãããã©ã«ãã®ãã©ã³ã¹ã·ã¹ãã ã¯ããªãã«åãããããªãã¯IPVSã欲ããã§ããïŒ ç°¡åïŒ ããŠãããªã€ã³ã¹ããŒã«ããããã©ã°ã€ã³ãååã«ãªããäœãæ°ãããã®ãå®è£ ãããå Žåã¯ã©ãã§ããããïŒ ãŸããããããæžãããšã¯å®å šã«ç°¡åã§ããããªã¯ãšã¹ãã®ããŒã«ã«éåžžã«æºè¶³ããŠããŸãã
ãã©ã°ã€ã³ã®æåŸã®é ç®ã¯ãµãŒãã¹ã§ãã å³å¯ã«èšãã°ããµãŒãã¹ã¯ã€ã³ãã©ã¹ãã©ã¯ãã£ã®ããŸããŸãªéšåã®æœè±¡çãªããã³ããšã³ãã§ãã
ããšãã°ãäžè¬çãªå Žåãã»ãã¥ãªãã£äžã®çç±ããã¢ããªã±ãŒã·ã§ã³ãã³ã³ããã®å€ã«åºãããšã¯èš±å¯ãããŠããªãããã UrlFetchãµãŒãã¹ã䜿çšãããšãã¢ããªã±ãŒã·ã§ã³ã§httpãªã¯ãšã¹ããäœæãããããã®ãªã¯ãšã¹ããå¶åŸ¡ã§ããŸãã
Logstashãã©ã°ã€ã³ã䜿çšããŠãã¯ã©ã¹ã¿ãŒå šäœããã®ãã°ã®éçŽãåãElasticsearchã§ã®çµ±ååŠçãã€ã³ããã¯ã¹äœæãã¹ãã¬ãŒãžãæ§æãã Kibana ïŒYandexã§è¡ããŸãïŒã§ã®äŸ¿å©ãªè¡šç€ºãèšå®ã§ããŸãã
Ellipticsãã©ã°ã€ã³ã䜿çšãããšãåãååã®ã·ã¹ãã ã«ãã¹ãŠã®æ å ±ãä¿åã§ããŸãã å¥ã®æ¹æ³ãšããŠãMongoDBãã©ã°ã€ã³ãšElasticsearchãµãŒãã¹ãå®è£ ãããŠããããããã®ãã¯ãããžãŒãã¹ãã¬ãŒãžã·ã¹ãã ãšããŠäœ¿çšã§ããŸãã
ãããã«
ãã®çŽ¹ä»èšäºã§ã¯ãã³ã«ã€ã³ã¯ã©ãŠããã©ãããã©ãŒã ã«é¢ããäžé£ã®èšäºãéå§ããŸãã å°æ¥çã«ã¯ããã©ãããã©ãŒã ã®ã¢ãŒããã¯ãã£ããã®é·æãšçæïŒãã§ã«ããããååšããªãå ŽåïŒã¯ãããã«è©³çŽ°ã«æ€èšãããŸãã
ãœãŒã¹ãŸãã¯ããã±ãŒãžããç¬èªã®ã¯ã©ãŠããå±éããæ¹æ³ãšããããæ§æããæ¹æ³ã瀺ããŸãã ããã«ç¶ããŠãå®éã®ã¢ããªã±ãŒã·ã§ã³ã®äŸã䜿çšããŠèšè¿°ããããã¬ãŒã ã¯ãŒã¯ã®èª¬æãç¶ããŸãã ããã«ç¶ããŠããã§ã«èšè¿°ããããã©ã°ã€ã³ãšãµãŒãã¹ã®èª¬æãç¶ããç¬èªã®ãã©ã°ã€ã³ãŸãã¯ãµãŒãã¹ïŒãããã¯ãã®äž¡æ¹ïŒãèšè¿°ããäŸãèæ ®ãããŸãã çµè«ãšããŠãCocaine'ovyãããã³ã«ã®è©³çŽ°ãšãå¥ã®èšèªã®ãµããŒããè¿œå ããæ¹æ³ãã€ãŸãç¬èªã®ãã¬ãŒã ã¯ãŒã¯ãäœæããæ¹æ³ãæ€èšããŸãã
githubã§éçºããŠããŸãã æãé¢é£æ§ã®é«ãæ å ±ã¯ãã¹ãŠããããå ¥æã§ããŸã ã Wikiã»ã¯ã·ã§ã³ã«ã¯ããœãŒã¹ããã³ã«ã€ã³ãè¿ éã«ã¢ã»ã³ãã«ããæ¹æ³ã«é¢ããããã¥ã¡ã³ãããããå éšã®è©³çŽ°ã®èª¬æããããŸãã ãã®ãã©ãããã©ãŒã ã«èå³ãããå Žåã¯ãæ¢è£œã®æµ®æµªè ã®ç»åã䜿ã£ãŠå®éã«è©ŠããŠã¿ãŠãã ããã ã質åãããå Žåã¯ããåãåãããã ããã