ã°ãŒã°ã«ã»ã¯ã©ãŠãã»ãžã£ãã³ã¯6æ20æ¥ããªã³ã©ã€ã³ã§ã³ã³ããã«é¢ããã¡ãã£ã¢åãã®å匷äŒãéå¬ããããªããä»åã¯ç¬¬1åç®ãšãªãã7æäžã«ç¬¬2åç®ãäºå®ããŠããã
åé ãã°ãŒã°ã«ã»ã¯ã©ãŠãã»ãžã£ãã³ æè¡éšé·(ã€ã³ãã©ãã¢ããªã±ãŒã·ã§ã³éçº)ã®å®åçšè²Žæ°ã¯ããªãä»ã³ã³ããã®å¿ èŠæ§ã«è¿«ãããŠããã®ãã«ã€ããŠèª¬æãããåæ°ã«ãããšãVUCA(äžç¢ºå®æ§)ã®æä»£ã«ãããŠã¯å€åã«å¯Ÿå¿ããããã«çŽ æ©ãããããŸããŸãªæ©èœã«å¯ŸããåæäžŠè¡ã®éçºãæ±ããããŠãããšãããå ããŠãæ¥æ¬ã®ITæ¥çã«ãããŠã¯äººæäžè¶³ã«äŒŽããæ°ããã·ã¹ãã ã»ãµãŒãã¹ã«å¯ŸããŠãå°ãªã人å¡ã§éçšã§ããäœå¶ãå¿ èŠã«ãªã£ãŠãããšææããã
-

ã°ãŒã°ã«ã»ã¯ã©ãŠãã»ãžã£ãã³ æè¡éšé·(ã€ã³ãã©ãã¢ããªã±ãŒã·ã§ã³éçº)ã®å®åçšè²Žæ°
å®åæ°ã¯ãã³ã³ããã¯ãã€ã¯ããµãŒãã¹ãDevOpsãCI/CD(ç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³/ç¶ç¶çããªããªãŒ)ã®é åã«ãé¢é£æ§ãããããããããã³ã³ãããšã¯ã¢ããªã±ãŒã·ã§ã³ãšããã®äŸåæ§(ã¢ããªå®è¡ã«å¿ èŠãªã©ã€ãã©ãªãã©ã³ã¿ã€ã ãªã©)ã1ã€ã®ãŠããããšããŠããã±ãŒãžã³ã°ããå®è¡ããæè¡ã§ãããDockerãæãããšãå€ãããšè©±ãã
ã³ã³ããæè¡ãDockerããæã€3ã€ã®ç¹åŸŽ
ãããŠãåæ°ã¯ãDockerãåæãšããã°ãBuild / Ship / Run AnywhereããšããŠ1åå©çšããã°ã©ãã§ãå®è¡ã§ãã廿£å®¹ææ§ãæããã³ãŒãã§ã®å®çŸ©ãé«éãªèµ·åãã§ãããã³ã³ãããã¢ããªã±ãŒã·ã§ã³å®è¡ç°å¢ã®äž»æµãšãªã£ãæè¡çç¹åŸŽãšããŠã¯ã軜éãªä»®æ³åããã³ãŒãã«ããã€ã¡ãŒãžæ§ç¯ããæšæºåãããHTTP APIã«ããã€ã¡ãŒãžé åžãã®3ç¹ãæããããããšèª¬ãã
軜éãªä»®æ³åã«ã€ããŠã¯ãã³ã³ããã®åã«ãã¢ã¡ã¿ã«ãä»®æ³ãã·ã³(VM)ãšããæè¡ã®å€é·ããããäž¡æè¡ã®ç°ãªãç¹ã¯ããŒããŠã§ã¢å ±æã®æç¡ã ã£ãããVMãšã³ã³ããã®å Žåã¯OSå ±æã®æç¡ã«ãããã³ã³ããã¯OSãå ±æãããããèµ·åæéãçããã€ã¡ãŒãžã®ãµã€ãºãå°ãããšãã£ãã¡ãªãããããã
ã³ãŒãã«ããã€ã¡ãŒãžæ§ç¯ã«é¢ããŠã¯ãVMã®å Žåã¯OSãã€ã³ã¹ããŒã«ããŠã³ãã³ããå©ããŠããã±ãŒãžãã€ã³ã¹ããŒã«ããã³ã³ãã£ã°ã¬ãŒã·ã§ã³ãã¡ã€ã«ã®æžãæããªã©ãçµãŠãå®è¡ããŠãããããããã³ã³ããã¯ããŒã¹ã€ã¡ãŒãžã®æå®(ã©ã³ã¿ã€ã ã®éžæ)ãäŸåã©ã€ãã©ãªã®ã€ã³ã¹ããŒã«ãå¿ èŠãªã³ãŒãããã€ããªã®ã³ããŒãªã©ãDockerfileã«æžã蟌ãã°ç°å¢ã®æ§ç¯ãèªååã§ããã
å®åæ°ã¯ãVMäœæãäŸåé¢ä¿ã®ã€ã³ã¹ããŒã«ããã«ãããã¢ããªã®é 眮ãã¢ããªèªåæ©èœãªã©ã®èšå®ãDockerfileã«èšè¿°ããŠããã«ãã®ã³ãã³ããå®è¡ããã°ã³ãŒãã«ãããã£ãŠç°å¢ãæ§ç¯ã§ããããšè©±ãã
å®çŸ©ãããDockerfileã§ããã³ã³ããã€ã¡ãŒãžã¯ã³ã³ããã¬ãžã¹ããªããHTTP APIã«ããé åžãããããšãããã©ã®ãããªèšèªã»ããã±ãŒãžãå©çšããŠããããã€æ¹æ³ã¯åäžã§ãããã¹ã±ãŒã«ããéãã³ã³ããã¬ãžã¹ããªããã€ã¡ãŒãžãããŠã³ããŒãããŠå®è¡ã§ããã
ãã®ãããªç¹åŸŽãæã€ã³ã³ããã ãæ±ºããŠæ°ããæè¡ã§ã¯ãªããããã®ãŒãã°1979幎ã«çºè¡šãããUNIXç³»ã®ã³ãã³ããchrootãã«ãã®æºæ³ãããã
2000幎ã«ãFreeBSD jailãã2005幎ã«ãOpenVZãããããŠ2006幎ã«Googleãéçºãããcgroupsãã§ãã¬ãŒã¯ã¹ã«ãŒãèµ·ããçŸåšã®ã³ã³ããã®åºç€æè¡ãæé·ããã¡ã¢ãªãCPUãªã©ã®ãªãœãŒã¹ãããã»ã¹ã°ã«ãŒãåäœã§å¶éã§ããããã«ãªã£ãããã®åŸã2008幎ã«ãlxcãã2013幎ã«Dockerã2014幎ã«ãKubernetesããšç¶ããŠããã
åæ°ã¯ãcgroups以éã¯ãDockerã§å€§ããªãã¬ãŒã¯ã¹ã«ãŒãèµ·ããéçºè ã«ããå§åçãªæ¯æãåãããéçºè ã䜿ããããã³ã³ããæè¡ãšããŠçãæã«æãå±ãæè¡ãšããŠæé·ããŠããããã¡ã€ã«ã®å€æŽå±¥æŽãGitã©ã€ã¯ãªå€æŽç®¡çãå¯èœãšãã倿Žãåããããããªã£ãããšè¿°ã¹ãŠããã
ã³ã³ããã®ç®¡çé¢ã®èª²é¡ã解決ãããKubernetesã
ãã ãäžæ¹ã§è€æ°ã®ããŒãã«å¯Ÿããã³ã³ããã®ãããã€ãããŒããã³ã³ããã®é害çºçæãã¢ããªã±ãŒã·ã§ã³ã®ã¢ããã°ã¬ãŒããªã©ç®¡çé¢ã§ã®èª²é¡ãããã
ããã§ã管çé¢ã®èª²é¡ã解決ãããã®ãšããŠç»å Žããã®ãã³ã³ãããªãŒã±ã¹ãã¬ãŒã·ã§ã³ãè¡ãKubernetesã ã2003幎ã«Googleãéçºããå éšã§éçšããŠããã¯ã©ã¹ã¿ãããŒãžã£ãBorgããããŒã¹ãšããŠãããå¿ èŠãªãªãœãŒã¹ãå¿ èŠãªåã ãå©çšããèªåŸå埩ããã€ã³ãã©ãšãªã£ãŠããã
å®åæ°ã¯ãKubernetesã¯YAMLãšãããã¡ã€ã«åœ¢åŒã§ã³ãŒããèšè¿°ãããDockerã¯ã³ã³ããã®äžã®ã¢ããªã±ãŒã·ã§ã³ã®ä»çµã¿ãã³ã³ãã£ã°ã¬ãŒã·ã§ã³ãªã©ãèšå®ãããããããKubernetesã¯YAMLã§èšå®ãããã®ãã³ã³ããã®å€åŽã«ãããã¢ããªã±ãŒã·ã§ã³éçºè ã¯ãªãœãŒã¹æ°ã䜿çšããã³ã³ãããããŒããã©ã³ãµãæå®ããã ãã§åäœããããã®ãããã€ã³ãã©ã¹ãã©ã¯ãã£ãã³ãŒãã§èšå®ã§ããããã«ãªã£ãŠããããšåŒ·èª¿ããã
ãŸããã¯ãŒã¯ããŒãã®CPUãã¡ã¢ãªã®æ¶è²»éãªã©ã«å¿ããŠãèªåçã«Pod(Kuberneteså ã§äœæã»ç®¡çå¯èœãªã³ã³ãã¥ãŒãã£ã³ã°ã®æå°åäœ)æ°ã墿žãããæ©èœãšããŠãHorizontal Pod AutoscalerããåãããåããŒã«ã¯CPUãã¡ã¢ãªä»¥å€ã«ãã«ã¹ã¿ã ææšãå€éšææšãçšãããªãŒãå©0ryããµããŒãããè€æ°ã®ã¡ããªã¯ã¹ãå©çšããå Žåã¯åã¡ããªã¯ã¹ã§ç®åºãããã¬ããªã«ã®ãã¡ãæå€§å€ãéžæãããšãããã®ã ã
åæ°ã¯ãYAMLã§ã€ã³ãã©ã¹ãã©ã¯ãã£ãæ§ç¯ã§ãããšãããŒããã©ã³ãµãªã©ã®ãããã¯ãŒã¯æ©èœãããªãŒãã¹ã±ãŒã«æ©èœãšãã£ãã¢ããªã±ãŒã·ã§ã³æ åœè ãå¿ èŠãªã€ã³ãã©ãèªãæ§æããããšãå¯èœãšããŠããããŸããã€ã³ãã©ç®¡çè ã¯åã ã®ãµãŒãã¹ã®æ§æç®¡çã®å¿ èŠããªããªãããã©ãããã©ãŒã ã¬ãã«ã§ã®æ§æç®¡çã«éäžã§ããããã®ãããã¢ããªéçºè ãYAMLã§å®çŸ©ã§ããåçšã¬ãã«ã®ã¢ããªã±ãŒã·ã§ã³å®è¡ç°å¢ãKubernetesã¯ãããããŠããããšã®èŠè§£ã瀺ããã
çŸåšãGmailãYouTbeãæ€çŽ¢ãã¯ãããGoogleã®å šãµãŒãã¹ã¯ã³ã³ããã§å®è¡ããŠãããé±ããã40å以äžã®ã³ã³ãããç«ã¡äžããŠãããšããã
ã³ã³ããã§è§£æ±ºã§ãããŠãŒã¹ã±ãŒã¹ãšããŠã¯ã©ã€ãã©ãªãããŒã«ããµãŒããªã©ãäžç·ã«ã€ã¡ãŒãžåãããã®ã»ãã®ã¢ããªãOSã®ã©ã€ãã©ãªã«åœ±é¿ãäžããªãããã®ãããã¢ããªéçºè ãã³ãŒãã£ã³ã°ããã€ã³ãã©ç®¡çè ã管çãããšãã責任åé¢ãå¯èœã«ãªãããšãããæå³ããªãåé¡ãçºçãã¥ãããªããšã®ããšã ã
ããã«ãã³ã³ããã®ããŒã¿ããªãã£ã掻ãããŠãéçºã»ã¹ããŒãžã³ã°ã»æ¬çªã§åãã€ã¡ãŒãžãå©çšã§ããç°å¢å·®åãèµ·ãã«ãããªã£ãŠããã»ããããŒãèªäœãè€éãªèšå®ã®å¿ èŠããªããããŒãžã§ã³ç®¡çã«ããåŸ©å æ§ãæããã
å ããŠãç¬ç«ããéé¢ç°å¢ããªãœãŒã¹å¶éãå¯èœãªãããåäžã·ã¹ãã (ãã¹ã)äžã§ç°ãªãçš®é¡ã®ã¢ããªã±ãŒã·ã§ã³ãå®å šã«å®è¡ã§ããã
ã¢ããªã·ãã¯ãªã¢ããªã±ãŒã·ã§ã³ãè² è·åæ£ãå¯èœãªé©åœãªå€§ããã®ã³ã³ããã«åå²ããŠãKubernetesã¯ã©ã¹ã¿äžã§åããããšã§ãå¹³å皌åçãåŸæ¥ã®2ïœ3åã«é«ãããããšãšãã«ãè€æ°ã·ã¹ãã ã®éåã皌åãããã¯ã©ã¹ã¿å šäœã®ãµã€ãžã³ã°ã«æ³šåã§ãããšããã
ãã€ã¯ããµãŒãã¹ãšCI/CDãå®çŸã§ããã³ã³ãã
äžæ¹ãåé ã§ãå®åæ°ãè§Šããããã«ããã€ã¯ããµãŒãã¹ãCI/CDãªã©ã¢ãã³ãªã¢ããªã±ãŒã·ã§ã³éçºã®åºç€ãšããŠã³ã³ãããå©çšããããšã§ã广ãæå€§åããããšãå¯èœãšããŠããããã€ã¯ããµãŒãã¹ã¯æ©èœããšã«ç¬ç«ããã¢ããªã±ãŒã·ã§ã³(ãµãŒãã¹)ã«åå²ããåãµãŒãã¹ã¯åäžã®ç®çãæã¡ã忣ã·ã¹ãã ããµãŒãã¹éã¯ççµåã軜éãªAPIãªã©ã§ããåããè¡ãã
OSã§åå²ãããŠããªãåäžã®ã¢ãžã¥ãŒã«ã§æ§æãããã¢ããªã±ãŒã·ã§ã³æ§é ãæã€ãããããã¢ããªã·ãã¯ã¢ãŒããã¯ãã£ãšæ¯èŒããŠããã€ã¯ããµãŒãã¹ã¯åãµãŒãã¹ããšã«ç°ãªãæè¡ã¹ã¿ãã¯ã®é©çšãå¯èœããŸããã¢ããªã·ãã¯ã¢ãŒããã¯ãã£ã¯å šäœã§ããã¹ã±ãŒã«ã§ããªããããã€ã¯ããµãŒãã¹ã¯åãµãŒãã¹ããšã«ã¹ã±ãŒã«ããããšãå¯èœã ã
èé害æ§ã§ã¯ãã¢ããªã·ãã¯ã¢ãŒããã¯ãã£ã¯äžéšã®ãã¹ãå šäœã«åœ±é¿ãããããã€ã¯ããµãŒãã¹ã¯ä»ã®ãµãŒãã¹åæ¢ã®åœ±é¿ãåããªãããã«èšèšããããšãã§ãã圱é¿ãéå®çã«ããããšãã§ããããã®ã»ãããããã€ã¯ã¢ããªã·ãã¯ã¢ãŒããã¯ãã£ã¯å šäœã眮ãæããªããã°ãªããªããããã€ã¯ããµãŒãã¹ã¯ãµãŒãã¹åäœã®çœ®ãæããå¯èœãšããŠããã
CI/CDã«é¢ããŠã¯ãVMã§å®æœããå Žåãåäœãã¹ãããã¹ãç°å¢ãžã®ãããã€ãã€ã³ãã°ã¬ãŒã·ã§ã³ãã¹ãã¢ãã¯å ±çšã®éçºç°å¢ã§å®æœãããããã¹ã±ãžã¥ãŒã«ã®èª¿æŽãå¿ èŠãšãªããããã«ãæ¬çªç°å¢ãžã®ãããã€ã¯ãããã€æ¹æ³ãç°å¢ããšã«ç°ãªããæåã§ã®ãããã€ã®ã±ãŒã¹ãå€ããåé¡ãçºçããéã®åãæ»ãã«ãæéãèŠãããšãã£ã課é¡ãããã
ãã®ç¹ãã³ã³ãããæŽ»çšããã°ããã¹ãã®ããã®ç°å¢ãç¡æ°ã«æºåããããšãã§ããããã³ãŒãã®æŽæ°ããšã«åäœãã€ã³ãã°ã¬ãŒã·ã§ã³ãã¹ãã宿œã§ããåé¡ã®æ©æçºèŠãå¯èœãšããŠããã
æ¬çªç°å¢ãžã®ãããã€ããããã€ã®æ¹æ³ãHTTP APIã«ããã€ã¡ãŒãžé åžã«çµ±äžãããŠãããèªååã容æãªã»ããåé¡çºçæãã³ã³ãããåã®ããŒãžã§ã³ã«æ»ãã ãã§ãããšããå©ç¹ãããã
説æã®æåŸã«å®åæ°ã¯ãã³ã³ããã¯ãã³ãŒããããã€ã®é »åºŠãã³ããããããããã€ã®éãã倿Žã«ãã倱æçã®äœããåé¡çºçæã®å埩ã®éããªã©ã®å¹æãæåŸ ã§ããåªããããŒã ã®èŠçŽ æè¡ã ããšç· ãããã£ãã











