éçºè ã«ãšã£ãŠãã¢ããªã±ãŒã·ã§ã³ã®ãããã€ã¯åžžã«é çã®çš®ã§ããã Windows COMã®æ代ã«å¶ç¶ã³ãŒãã£ã³ã°ãè¡ã£ãOldfagsã¯ããããããDLL HellããèŠããŠããŸããããã¯ãéçºè ãã·ã¹ãã 管çè ã«ãšã£ãŠæ¬åœã®æªå€¢ã§ãã ããããäœå¹Žãçµã¡ãŸããããæ¥ã å¢å ããæ°ãããã¯ãããžãŒã®æµãã¯ããã°ãã°æ··ä¹±ãšäžç¢ºå®æ§ãçã¿åºããŸãã
ãœãããŠã§ã¢éçºã®ã»ãšãã©ãã¹ãŠã®å Žåãéçºç°å¢ã¯ã¢ããªã±ãŒã·ã§ã³ãå®éã«åäœããç°å¢ãšã¯å€§ããç°ãªããŸãã ç°ãªãã³ã³ãã¥ãŒã¿ãŒãç°ãªãããã«æ§æãããŠãããšããäºå®ã¯æçœã§äºæž¬å¯èœã§ããããããã®ã³ã³ãã¥ãŒã¿ãŒäžã®ã¢ããªã±ãŒã·ã§ã³ã®ç°ãªãåäœã¯åãå ¥ããããŸããã
èšèŒãããŠããé£ãããèãããšãã³ã³ãããã¯ãããžãŒã¯å®éã«å±éã®é©åœãšãªããDockerãªã©ã®éçºã«ãã人æ°ãççºçã«æé·ããŸããã ã³ã³ããã¯äœãããŸããïŒ ãã¹ãŠã®å¿ èŠãªäŸåé¢ä¿ãšãšãã«ãã¢ããªã±ãŒã·ã§ã³ããŠãŒã¶ãŒã©ã³ã¿ã€ã ã§æ£åžžã«å®è¡ããããã«å¿ èŠãªæ§æã§ãœãããŠã§ã¢ãå±éã§ããŸãã ãããã£ãŠãã³ã³ããåãããã€ã¡ãŒãžã«ããããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã®é«äŸ¡ãªãšãã¥ã¬ãŒã·ã§ã³ãåé¿ããªããããããã±ãŒãžåããããæçµã©ã³ã¿ã€ã ãéçºç°å¢ãšã»ãŒåäžã«ããããšãã§ããŸãã
ãã®çµæãéåžžã«è»œéãªããã±ãŒãžãäœæãããå€ãã®å Žåãããã€ãã®ã¢ããªã±ãŒã·ã§ã³åºæã®ããã»ã¹ã®ã¿ãå®è¡ãããŸãã ãã®ãããªããã±ãŒãžã¯ãããŸããŸãªã€ã³ã¹ã¿ã³ã¹ã§ç°¡åã«é åžãå±éãå®è¡ã§ããŸãã äžèšãèŠçŽãããšãã³ã³ããã¯ç°ãªããœãããŠã§ã¢ç°å¢ã§ã®ã¢ããªã±ãŒã·ã§ã³ã®åãåäœãä¿èšŒããŸãã
ãã®èšäºã¯ãããã€ãã®éèŠãªã³ã³ãã管çããŒã«ã®ç°¡åãªæŠèŠã§ãã ã³ã³ãããã¯ãããžã䜿çšããäºå®ãããå Žåã¯ãå°ãªããšããã®äžé£ã®ã¢ããªã±ãŒã·ã§ã³ã«æ £ããå¿ èŠããããŸãã
ããã¯è©³çŽ°ãªã¬ãã¥ãŒã§ã¯ãªããæ¯èŒãè©äŸ¡ãè¡ããŸããã ã³ã³ãã管çããŒã«ãæ¢çŽ¢ããéã®åºçºç¹ãšèããŠãã ããã 以äžã¯ããããªã詳现ãªèª¿æ»ã®ããã®ããŒã«ã®éžæã«åœ¹ç«ã€ããšãé¡ã£ãŠãçããªã¹ããšæŠèŠã§ãã
Docker
Dockerã¯æã人æ°ã®ãããã©ãããã©ãŒã ã®1ã€ã§ãã ã³ã³ãããŒãã¯ãããžãŒã®æè¿ã®äººæ°ã®é«ãŸãã®çç±ã¯ãDockerã§ããå¯èœæ§ããããŸãïŒãã¯ãããžãŒèªäœã¯ããã»ã©æ°ãããªãã10幎以äžååšããŠããŸãïŒã
Dockerã¯ãã³ã³ããã¢ããªã±ãŒã·ã§ã³ããããã€ããã³å®è¡ããããã®æ©èœãæäŸããŸãã ã³ã³ããã¯ä»®æ³ãã·ã³ã«äŒŒãŠããŸãããOSãããé«ãã¬ãã«ã§å®è£ ãããåé¢åºŠã¯äœããªã£ãŠããŸãã å¿ èŠãªãã¹ãŠã®ãœãããŠã§ã¢ã§ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã å šäœãããã¯ãã代ããã«ãã³ã³ããã¯ã¢ããªã±ãŒã·ã§ã³ãšãã®çŽæ¥ã®äŸåé¢ä¿ã®ã¿ãããã¯ããŸãã ããã¯ãDockerã«ãã£ãŠå®è£ ãããåºæ¬çãªæŠå¿µã§ãã
Docker圢åŒã¯éåžžã®ããã±ãŒãžãšäŒŒãŠããŸãããããã±ãŒãžãã¹ã¿ã³ãã¢ãã³ã§ãããåããã¹ãïŒãŸãã¯ç°ãªããã¹ãïŒã§è€æ°ã®ã³ããŒãå®è¡ã§ããç¹ãç°ãªããŸãã ãã®ã¢ãããŒãã¯ããªãœãŒã¹ã®äœ¿çšãæ倧åããçç£æ§ãåäžãããã¢ããªã±ãŒã·ã§ã³ã®ãµã€ãºãçž®å°ããŸãã åæã«ãDockerã¯é«åºŠãªåé¢ãæäŸãããã·ã³ãå·ã€ããããšãªããã³ã³ãããŒèªäœã®å éšã®ã¢ããªã±ãŒã·ã§ã³ã®åé¡ãå¶éããŸãã
ã¯ãã«ããã¹
Dockerã¯ãåäžã®ãã¹ãã§ã³ã³ãããŒãæäœããã®ã«æé©ã§ããã®ç®çã«å¿ èŠãªãã¹ãŠã®æ©èœãæäŸããŸãã ããããä»æ¥ã®åæ£ãµãŒãã¹ã®çŸå®ã§ã¯ãéèŠãªã¿ã¹ã¯ã¯ããµãŒããŒäžããã³è€éãªã€ã³ãã©ã¹ãã©ã¯ãã£å ã®ãªãœãŒã¹ãšã¯ãŒã¯ããŒãã管çããããšã§ãã
ãã®ãããªããŒã«ã®1ã€ãGoogle Kubernetesã§ãã ãã®çããã®ãªã·ã£èªã¯ãç¥äºããŸãã¯ãææ®å®ããšèš³ãããŠããŸãã ååã瀺ãããã«ãKubernetesã¯ãå€ãã®ããŒãã§ã³ã³ãããŒãç·šæïŒç·šæïŒãããšãã倧å€ãªä»äºãåŒãåããå¹ åºã䟿å©ãªæ©èœãæäŸããŸãã
ãµãŒãã¹çºèŠ
æè¿ãã³ã³ãããµãŒãã¹ã®ãšã³ã·ã¹ãã ã¯ãMicroservicesã¢ãŒããã¯ãã£ã¹ã¿ã€ã«ã®äººæ°ã®é«ãŸããšãšãã«æé·ããŸããã Microservices Architectureã®èåŸã«ããèãæ¹ã¯ãéãã¢ããªã·ãã¯ã¢ããªã±ãŒã·ã§ã³ããåæ£ã·ã¹ãã ã§çžäºæ¥ç¶ãããå°ããªïŒåïŒèªåŸãµãŒãã¹ã«åå²ããããšã§ãã ãŸãããã®ãããªã·ã¹ãã ã§ã¯ãµãŒãã¹ã®æ°ãäœåºŠãå¢å ãããããã¢ããªã±ãŒã·ã§ã³ãããªãã¹ã³ãããããŒããæåã§å²ãåœãŠãŠèæ ®ããããšã¯æå³ããããŸããã ã³ã³ããã®å±éåŸã«ããŒããèªåçã«å²ãåœãŠãæ¹ãè³¢æã§ãã ãŸãããã®ã¢ãããŒãã¯ããŒãéã®ç«¶åã®åé¡ã解決ããŸãããé©åãªãµãŒãã¹ãèŠã€ããŠä»ã®ãµãŒãã¹ã«æäŸããããšãäžå¯èœã«ããŸãã
ãã®åé¡ã®è§£æ±ºçã¯ãService Discoveryãã¯ãããžãŒã§ãã ãµãŒãã¹ãã£ã¹ã«ããªã¯æ¬¡ã®ããã«æ©èœããŸãããµãŒãã¹ã®éå§æã«ãã¬ãžã¹ããªã¯åæ£ããŒ/å€ãIPã¢ãã¬ã¹ãšããŒãçªå·ã§ç»é²ããŸããä»ã®ãµãŒãã¹ã¯ç°¡åã«ç®çã®ãµãŒãã¹ãèŠã€ããŠåŒã³åºãããšãã§ããŸãã
ã¹ã±ãžã¥ãŒã©ãŒïŒã¹ã±ãžã¥ãŒã©ãŒïŒ
KubernetesãæäŸãããã1ã€ã®éèŠãªæ©èœã¯ãã¹ã±ãžã¥ãŒãªã³ã°ã§ãã ã¹ã±ãžã¥ãŒã©ã¯ãã³ã³ããåãããã¢ããªã±ãŒã·ã§ã³ãèµ·åããã¿ã¹ã¯ãåŒãåããå©çšå¯èœãªãªãœãŒã¹ãçŸåšã®ã¿ã¹ã¯ããªã¯ãšã¹ããèæ ®ããŸãã ã€ãŸããã¹ã±ãžã¥ãŒã©ã¯ã¹ã±ãŒãªã³ã°ãå®è¡ããã¿ã¹ã¯ãç°ãªããã¹ãã«åå²ãåœãŠããåé¡ãçºçããå Žåã«èœåéã§ã¯ãŒã¯ããŒãã移åããŸãã
å€ãã®äŸ¿å©ãªæ©èœãšå€§ããªã³ãã¥ããã£ã®ãããã§ãKubernetesã®äººæ°ã¯æè¿æ¥éã«é«ãŸã£ãŠããŸãã
Coreos
CoreOSã¯ãã³ã³ããã¢ããªã±ãŒã·ã§ã³ã®å±éãšå®è¡ã«å¿ èŠãªæ©èœãåããLinuxããŒã¹ã®ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã§ãã æ¯èŒçå°ããªè² è·åæ£æ©èœã«ãããããããCoreOSã¯åäžãµãŒããŒç°å¢ãšã¯ã©ã¹ã¿ãŒã³ã³ãã¥ãŒãã£ã³ã°ç°å¢ã®äž¡æ¹ã«é©ããŠããŸãã
CoreOSã¯ãã³ã³ãããæäœããçµã¿èŸŒã¿æ©èœãšããããªãã¯ã¯ã©ãŠãã¢ããªã±ãŒã·ã§ã³ãæäœããããã®é©å¿æ©èœã«ãããä»ã®äžè¬çãªLinuxãã£ã¹ããªãã¥ãŒã·ã§ã³ã®æ·±å»ãªç«¶äºçžæã®ããã§ãã
CoreOSã¯ãDockerãæœè±¡åã®è¿œå ã¬ãã«ãšããŠãããã³ã³ã³ãããŒã®æšæºåœ¢åŒãšããŠäœ¿çšããããšããå§ãŸããŸããããåŸã«ãªãªãŒã¹ãããç¬èªã®ã³ã³ãããŒãšã³ãžã³RocketïŒrkt-èªã¿ç¶ããŸãïŒããµããŒãããŸãã
CoreOSã¯ãªãŒãã³ãœãŒã¹ã§ãããTectonicãšåŒã°ããåçšããŒãžã§ã³ã®ã·ã¹ãã ãå©çšã§ããŸãã ãã¯ãããã¯ã¯ãããªãŒãã¢ã ãã§ããããã®å€§ããªå©ç¹ã¯ãã³ã³ãããªãŒã±ã¹ãã¬ãŒã·ã§ã³çšã®Kubernetesãã£ã¹ããªãã¥ãŒã·ã§ã³ã§ãã
Etcd
CoreOSã®Etcdã¯ããªãŒãã³ãœãŒã¹ã®è»œéãªåæ£ããŒ/å€ãªããžããªã§ãã Etcdã¯ããµãŒããŒã¯ã©ã¹ã¿ãŒã«ããŒã¿ãä¿åããããã®ä¿¡é Œã§ããããŒã«ãã¢ããªã±ãŒã·ã§ã³ã«æäŸããå€ã®å€åã«é©åã«å¯Ÿå¿ã§ããããã«ããŸãã Kubernetesã¯ããã¹ãŠã®ã¯ã©ã¹ã¿ãŒããŒããæ§æããŒã¿ã®èªã¿åã/æžã蟌ã¿ãè¡ãããšãã§ããäžå€®ãªããžããªãšããŠããŸããµãŒãã¹ã®çºèŠïŒService DiscoveryïŒããã³ãªãŒããŒã®éžæã®å¶åŸ¡ïŒLeader ElectionïŒãšããŠäœ¿çšããŸãã
rkt
rktã¯ãLinuxã¯ã©ã¹ã¿ãŒçšã®ã³ã³ãããŒç®¡çãã©ãããã©ãŒã ã§ãã ç¬èªã®OSã®èšèšãšDockerãšã®å¯Ÿè©±ã®çµéšã«åºã¥ããŠãCoreOSã¯ãã³ã³ããã¢ããªã±ãŒã·ã§ã³ãåé¢ããŠäœæãæ€èšŒãå®è¡ããããã®ããŒã«ãéçºããŸããã
Dockerã®ä»£æ¿ãšããŠã®rktã¯ãã»ãŒ1幎åŸã«ãªãªãŒã¹ããããã以æ¥äººæ°ãéããŠããŸãã Rktã¯ãå°ãªããšã2ã€ã®çç±ã§dockerã®æ¹åãšèŠãªãããšãã§ããŸãã
-眲åã®æ€èšŒãšç¹æš©ã®åé¢ãããã©ã«ãã§äœ¿çšãããããã»ãã¥ãªãã£ã匷åãããŠããŸãã
-移æ€æ§ãæäŸïŒDockerã€ã¡ãŒãžãå®è¡ããæ©èœã«å ããŠãrktã¯ãApp Container ImagesïŒACIïŒ-ãªãŒãã³ãªApp Container SpecificationïŒappcïŒã§æå®ããã圢åŒã®ã€ã¡ãŒãžãå®è¡ããããã«èšèšãããŠããŸãã
ã¡ãœã¹
Apache Mesosã¯ãåæ£ã³ã³ãã¥ãŒãã£ã³ã°ã·ã¹ãã çšã®ã«ãŒãã«ã§ãããLinuxã«ãŒãã«ãšåãåçã«åºã¥ããŠæ§ç¯ãããŠããŸãããæœè±¡åã¬ãã«ãç°ãªããŸãã ãã®äž»ãªç®æšã¯ãè€æ°ã®ç©çãã·ã³ãŸãã¯ä»®æ³ãã·ã³ã®ã³ã³ãã¥ãŒãã£ã³ã°ãªãœãŒã¹ãé«ã¬ãã«ã®åé¢ã§çµ±åãã1ã€ã®å€§ããªãªãœãŒã¹ããŒã«ã®ããã«äžå€®ç®¡çãµãŒãã¹ã§å©çšã§ããããã«ããããšã§ãã ç°¡åã«èšããšãMesosã䜿çšãããšããµãŒããŒã¯ã©ã¹ã¿ãŒãåäžã®ã³ã³ãã¥ãŒãã£ã³ã°ãã¯ãŒãšããŠäœ¿çšã§ããŸãã
Mesosã¯ãåãã·ã³ã®ãªãœãŒã¹ã®å¯çšæ§ã枬å®ããã³ã¬ããŒããããšãŒãžã§ã³ãããã¹ãããããšã«ãããã¿ã¹ã¯ã®å®è¡ãèšç»ããã³ç·šæããã¿ã¹ã¯ã®å®äºã確èªã§ããŸãã ãããã£ãŠãã¿ã¹ã¯ã¯è€æ°ã®ãµãŒããŒã§åæã«å®è¡ããããã®å©çšå¯èœãªãªãœãŒã¹ã¯åäžã®ããŒã«ïŒããããMesosãã¬ãŒã ã¯ãŒã¯ïŒãšèŠãªãããŸãã
é äº
Consulã¯å€ãã®æäœãå«ãåæ£ã·ã¹ãã ã§ããããã®äž»ãªäŸ¡å€ã¯ãµãŒãã¹ãã£ã¹ã«ããªãŒæ©èœïŒãµãŒãã¹ãã£ã¹ã«ããªãŒïŒãšããŒ/ããªã¥ãŒã¹ãã¬ãŒãžã®æäŸã§ãã
Consulã§ã¯ããµãŒãã¹æ€åºããŒã«ãšããŠãã¢ããªã±ãŒã·ã§ã³ãAPIãªã©ã®ãµãŒãã¹ãæäŸããã¯ã©ã€ã¢ã³ããšããŠç»é²ã§ããŸãã ä»ã®ã·ã¹ãã ã¯ãConsulã«çŽæ¥ã¢ã¯ã»ã¹ããŠå©çšå¯èœãªãµãŒãã¹ãèŠã€ããããšãã§ããŸãã ãã«ãã€ã³ãã«ã¹ãã§ãã¯ã¯ãè åšãçºçãããšãã«ã¢ã¯ã·ã§ã³ãå®è¡ããæ©èœãæäŸããŸããããšãã°ããã¹ãã«å€±æããããŒãããã®ãã©ãã£ãã¯ã®åãå ¥ããæåŠããŸãã
ããŒ/å€ã¹ãã¢ãšããŠãConsulã¯ã¢ããªã±ãŒã·ã§ã³ã«ãããŒãå šäœã«æ§æããŒã¿ãä¿åããetcdãšåæ§ã«ãã®ããŒã¿ã®å€æŽã«å¿çããæ©èœãæäŸããŸãã ããã«ãConsulã¯ãããã€ãã®ããŒã¿ã»ã³ã¿ãŒããŽã·ããããŒã«ã«åºã¥ãããå æ¬çãªãã«ã¹ãã§ãã¯ã·ã¹ãã ãç¬èªã®ãµãŒãã¹æ€çŽ¢ããŒã«ãããã³ç£èŠãµãŒãã¹çšã®Webã€ã³ã¿ãŒãã§ã€ã¹ããã€ãã£ããµããŒãããŠããŸãã
Googleã³ã³ãããšã³ãžã³
Google Container EngineïŒGKEïŒã¯ãDockerã³ã³ãããŒçšã®ã¯ã©ã¹ã¿ãŒãããŒãžã£ãŒããã³ãªãŒã±ã¹ãã¬ãŒã·ã§ã³ã·ã¹ãã ã§ãã Googleã®KubernetesããŒã¹ã®ãã£ã³ããŒã³ã§äœæããããªãŒãã³ãœãŒã¹ã·ã¹ãã ã¯ã次ã®ç®çã«äœ¿çšã§ããŸãã
- ã³ã³ããã¯ã©ã¹ã¿ã®äœæããµã€ãºå€æŽããããã°
- èªåã¹ã±ãŒãªã³ã°ã¢ããªã±ãŒã·ã§ã³
- ãããã®äœæãšç®¡ç
Kubernetesãšæ¯èŒããŠãGoogle Container Engineã¯éçºè ãšã·ã¹ãã 管çè ã«è¿œå ã®ãµãŒãã¹ã»ãããæäŸããŸãã ããšãã°ãããŒããã©ã³ã·ã³ã°ãã¡ããªãã¯ãã©ããã³ã°ãããã³ãã®ã³ã°ã¯ãã¹ãŠGKEã«ãã£ãŠæäŸãããŸãã
AWS ECS
Amazonã®Google GKEã¯EC2 Container ServiceïŒECSïŒã«äŒŒãŠããŸãã ãããã®ãµãŒãã¹ã®ã»ãšãã©ãšåæ§ã«ãECSã¯DockerããµããŒãããAmazon EC2ã€ã³ã¹ã¿ã³ã¹ã§ã³ã³ãããŒåãããã¢ããªã±ãŒã·ã§ã³ãå®è¡ã§ããŸãã
GKEãšåæ§ã«ãECSã¯ãã³ã³ãããŒã®å±éãã¹ã±ãžã¥ãŒãªã³ã°ãèªåã¹ã±ãŒãªã³ã°ãè² è·åæ£ãã¯ã©ã¹ã¿ãŒã¬ãã«ã®ãªãœãŒã¹ç£èŠãAWSãµãŒãã¹ã¹ã¿ãã¯ã®æ®ãã®éšåãšã®ã·ãŒã ã¬ã¹ãªçžäºäœçšãªã©ãå€ãã®äŸ¿å©ãªæ©èœãåããã¢ã¯ãã£ãã«ç®¡çããããµãŒãã¹ã§ãã ECSã¯VPCïŒAmazon Virtual Private CloudïŒã§ã®ã¿åäœããŸããããµãŒãã¹èªäœã¯ç¡æã§ãããããAmazonã®ãªãœãŒã¹ãéåžžæéã§äœ¿çšããã ãã§ãæ¯æãããã ããŸãã
åºåãšããŠã ãããã¯åãªãä»®æ³ãµãŒããŒã§ã¯ãããŸããïŒ ãããã¯ãå°çšãã©ã€ããåããVPSïŒKVMïŒã§ãããå°çšãµãŒããŒãããæªããªãããšã¯ãããŸããã ãªã©ã³ããšç±³åœã§å°çšãã©ã€ãã䜿çšããŠVPSïŒKVMïŒãäœæããŸããïŒVPSïŒKVMïŒããã®æ§æ-E5-2650v4ïŒ6ã³ã¢ïŒ/ 10GB DDR4 / 240GB SSDãŸãã¯4TB HDD / 1Gbps 10TBãæé¡29ãã«ããïŒ ãRAID1ãšRAID10ã®ãªãã·ã§ã³ãå©çšå¯èœã§ãïŒ ãæ°ããã¿ã€ãã®ä»®æ³ãµãŒããŒã泚æããæ©äŒããèŠéããªãããã¹ãŠã®ãªãœãŒã¹ã¯ããªãå°çšã§ãããããçç£çãªããŒããŠã§ã¢ã§äŸ¡æ Œã¯ã¯ããã«äœããªããŸãïŒ
ã€ã³ãã©ã¹ãã©ã¯ãã£ãæ§ç¯ããæ¹æ³ ã¯ã©ã¹Rã¯ã1ç±³ãã«ã§9,000ãŠãŒãã®Dell R730xd E5-2650 v4ãµãŒããŒã䜿çšããŠããŸããïŒ Dell R730xdã¯2åå®ãã§ããïŒ ãªã©ã³ããšç±³åœã§249ãã«ããIntel Dodeca-Core Xeon E5-2650v4 128GB DDR4 6x480GB SSD 1Gbps 100 TVã2å°æã£ãŠããã ãã§ãïŒ