ã¿ã€ãã«ã«ããããããããã®èšäºã¯Puppetæ§æ管çã·ã¹ãã ãšã¯é¢ä¿ãããŸããã
倧ããªã¢ããªã¹ãå°ããªãã€ã¯ããµãŒãã¹ã«ãã«ãããããåŸåã«å ããŠãã³ã³ãããªãŒã±ã¹ãã¬ãŒã·ã§ã³ã®åŸåãWebã¢ããªã±ãŒã·ã§ã³ã®éçšã«åãå ¥ããããŸããã Dockerã®èªå€§åºåã®çŽåŸã«ãDockerã®äžã«ãããµãŒãã¹èµ·åããŒã«ã®èªå€§åºåãå¢ããŠããŸãã Kubernetesãæããã話ãããŠããŸãããçŸåšã®å€ãã®éžæè¢ãçãç¶ãé²åããŠããŸãã
ããã§iFunnyã§ã¯ããªãŒã±ã¹ãã¬ãŒã¿ãŒã®ã¡ãªãããšäŸ¡å€ã«ã€ããŠèããæçµçã«Amazon Elastic Container ServiceãéžæããŸããã ã€ãŸããECSã¯EC2ã€ã³ã¹ã¿ã³ã¹ã®ã³ã³ãã管çãã©ãããã©ãŒã ã§ãã æŠéã®è©³çŽ°ãšçµéšã«ã€ããŠã¯ã以äžããèªã¿ãã ããã
ãªãã³ã³ãããªãŒã±ã¹ãã¬ãŒã·ã§ã³
ãHabrãã«é¢ããDockerã®èšäºãšãã®éçãè¶ ããèšäºã®åŸã«ã誰ããDockerã®ç®çãšç®çãç解ããŠãããšæãããŸãã ç¶æ³ãæ確ã«ããŸãããããªãDockerããããã©ãããã©ãŒã ãå¿ èŠãªã®ã§ããããã
ãããã«äœ¿ããããµãŒãã¹å±éã®èªåå
è»ã«ã³ã³ãããæããŸãããïŒ ããïŒ ãããŠãã¯ã©ã€ã¢ã³ãããã€ã³ããããŠããéçããŒãã«åãããã©ãã£ãã¯ãåãæ¿ãããšãã«ããµãŒãã¹ã®äœäžãåé¿ããŠããããæŽæ°ããæ¹æ³ã¯ïŒ ãŸããæ°ããããŒãžã§ã³ã®ã¢ããªã±ãŒã·ã§ã³ã§åé¡ãçºçããå Žåã«ãè¿ éãã€ç°¡åã«ããŒã«ããã¯ããæ¹æ³ã¯ïŒ çµå±ã®ãšãããDockerã ãã§ã¯ãããã®åé¡ã解決ã§ããŸããã
ã¯ããããªãã¯èªåã§ãã®ãããªããšãæžãããšãã§ããŸãã æåãiFunnyã¯ãã®ããã«åäœããŸããã éç·è²ã®å±éã§ã¯ãAnsibleãã¬ã€ããã¯ã䜿çšãããŸãããAnsibleãã¬ã€ããã¯ã§ã¯ãå¿ èŠãªã«ãŒã«ãæ°ããã³ã³ãããŒã®IPã«åãæ¿ããããšã§ãå€ãè¯ãIptablesãå¶åŸ¡ãããŸããã å€ãã³ã³ããããã®æ¥ç¶ã¯ãåãå€ãconntrackãšã®æ¥ç¶ã远跡ããããšã§ã¯ãªãŒã³ã¢ãããããŸããã
éæã§ç解ããããããã«èŠããŸãããèªå®¶è£œã®ãã®ãšåæ§ã«ã次ã®åé¡ãåŒãèµ·ãããŸããã
- ã¢ã¯ã»ã¹ã§ããªããã¹ãã®èª€ã£ãåŠçã Ansibleã¯ã誀åäœã ãã§ãªããAutoscalingã°ã«ãŒãã§ã®ã¹ã±ãŒã«ããŠã³ãåå ã§ãEC2ã€ã³ã¹ã¿ã³ã¹ããã€ã§ãèœã¡ãå¯èœæ§ãããããšãç解ããŠããŸããã ãããã£ãŠãã¹ã¿ã³ãã€ç¶æ ã§ã¯ããã¬ã€ããã¯ã®å®äºåŸã«Ansibleããšã©ãŒãè¿ãå ŽåããããŸãã ãã®åé¡ã«é¢ããåé¡ã¯è§£æ±ºãããããã§ããããŸã 解決ãããŠããŸããã
- Docker APIãã500人ã ã¯ããæã ãDockerã¯é«è² è·äžã§ãµãŒããŒãšã©ãŒãçºçãããããšããããAnsibleã§ã¯ãããåŠçã§ããŸããã
- å±éãåæ¢ããããšã¯ã§ããŸããã IPtablesã®ã«ãŒã«ã眮ãæãããšãã«ãã¬ã€ããã¯ãéå§ããããã»ã¹ã匷å¶çµäºãããšã©ããªããŸããïŒ ãã¹ãã§åœ¢æãããã«ãªã¹ã¯ã©ããããã®å€§ããã§ããïŒ ãã·ã³ã®ã©ã®éšåãå©çšã§ããªããªããŸããïŒ
- 1ã€ã®ãã¹ãå ã®ã¿ã¹ã¯ã®äžŠååã®æ¬ åŠã Ansibleã§ã¯ãã¿ã¹ã¯ãæ§æãã䞊åå埩ãå®è¡ã§ããŸããã ããã説æããã®ã¯ç°¡åã§ããå ±éã®ãã¿ãŒã³ã§ããã©ã¡ãŒã¿ãŒãç°ãªã50åã®ã³ã³ãããŒãèµ·åããã¿ã¹ã¯ãããå Žåãã³ã³ãããŒ1ãéå§ããã®ãåŸ ã£ãŠããã³ã³ãããŒ2ãéå§ããå¿ èŠããããŸãã
ãã¹ãŠã®åé¡ããŸãšãããšã宣èšåSCMã¯ãããã€ã¡ã³ããªã©ã®å¿ é ã®ã¿ã¹ã¯ã«ã¯ããŸãé©ããŠããªããšçµè«ä»ããããšãã§ããŸãã ãªãŒã±ã¹ãã©ã¯ãããšäœã®é¢ä¿ãããã®ã§ããããïŒ ã¯ãããªãŒã±ã¹ãã¬ãŒã¿ãŒã¯ããã»ã¹ã説æããããšãªã1ã€ã®ããŒã ã§ãµãŒãã¹ãå±éããæ©äŒãæäŸãããšããäºå®ã«ããããããã ãã¹ãŠã®æ¢ç¥ã®å±éãã¿ãŒã³ãšäžèšã®é害ã®ã¹ã ãŒãºãªåŠçãèªç±ã«è¡ããŸãã
ç§ã®æèŠã§ã¯ããªãŒã±ã¹ãã¬ãŒã·ã§ã³ãã©ãããã©ãŒã ã¯ãDockerã䜿çšããŠè¿ éã§ã·ã³ãã«ãã€ä¿¡é Œæ§ã®é«ãå±éãå®è£ ããå¯äžã®æ¹æ³ã§ãã ãããããç§ãã¡ã®ãããªAWSã®æ奜家ã¯Elastic BeanstalkãäŸãšããŠäœ¿çšããã§ãããã é£æååºã®ç°å¢ã§ããã°ãã䜿çšããŠããŸããããååãªåé¡ããã£ãããããã®èšäºã«åãŸããŸããã§ããã
ãæ§æ管çãã®ç°¡çŽ å
ãã€ãŠããªãŒã±ã¹ãã¬ãŒã·ã§ã³ãã©ãããã©ãŒã ãšããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã«ããCPUäžã§ã®ããã»ã¹ã®èµ·åãšã®éåžžã«èå³æ·±ãæ¯èŒãèããŸããã çµå±ã®ãšããããã®ããã°ã©ã ããã®ããã°ã©ã ãã©ã®ã«ãŒãã«ã§åäœãããã¯æ°ã«ããŸãããïŒ
åãã¢ãããŒãããªãŒã±ã¹ãã¬ãŒã¿ãŒã«ãåœãŠã¯ãŸããŸãã äžè¬ã«ãæ§æã¯ãã©ã³ãµãŒäžã§åçã«æŽæ°ãããããããµãŒãã¹ãå®è¡ããŠãããã·ã³ãšã³ããŒã®æ°ã«ã€ããŠã¯æ°ã«ããŸããã å®çšŒåç°å¢ã§ã¯æäœéã®ãã¹ãæ§æãå¿ èŠã§ãã çæ³çã«ã¯ãDockerãã€ã³ã¹ããŒã«ããã ãã§ãã ãããã«å€§ããªçæ³ãã¯ãCoreOSãããå Žåãæ§æ管çãå®å šã«åé€ããããšã§ãã
ãããã£ãŠãããªãŒãã¯æŒå€ãç£èŠããããã«å¿ èŠãªãã®ã§ã¯ãªãããªãœãŒã¹ã®åçŽãªããŒã«ã§ããããã®äžéšã¯ãã€ã§ã亀æã§ããŸãã
ãµãŒãã¹äžå¿ã®ã€ã³ãã©ã¹ãã©ã¯ãã£ã¢ãããŒã
è¿å¹ŽãWebã¢ããªã±ãŒã·ã§ã³ã€ã³ãã©ã¹ãã©ã¯ãã£ã¯ããã¹ãäžå¿ãããµãŒãã¹äžå¿ã«ç§»è¡ããŠããŸãã ã€ãŸããããã¯åã®æ®µèœã®ç¶ãã§ããããã¹ããç£èŠãã代ããã«ããµãŒãã¹ã®å€éšããã©ãŒãã³ã¹ãç£èŠããŸãã ãªãŒã±ã¹ãã¬ãŒã·ã§ã³ãã©ãããã©ãŒã ã®å²åŠã¯ãå³å¯ã«åºå®ããããã¹ãããŒã«ã«ãµãŒãã¹ãä¿æããå Žåãããã¯ããã«èª¿åããŠãã®ãã©ãã€ã ã«é©åããŸãã
ãã®ã¢ã€ãã ã«ãã€ã¯ããµãŒãã¹ãæ·»ä»ããããšãã§ããŸãã å±éã®èªååã«å ããŠãæ°ãããµãŒãã¹ãšãªãŒã±ã¹ãã¬ãŒã·ã§ã³ãæ°ãããµãŒãã¹ã§ç°¡åã«ãã°ããäœæãããããããªã³ã¯ããããšãã§ããŸãïŒãµãŒãã¹ãã£ã¹ã«ããªãŒæ©åšã¯ãã»ãšãã©ã®å ŽåããªãŒã±ã¹ãã¬ãŒã¿ãŒãšäžç·ã«ãããã«ãæäŸãããŸãïŒã
éçºè ã«è¿ã¥ãã€ã³ãã©ã¹ãã©ã¯ãã£
iFunnyéçºããŒã ã®DevOpsã¯ã空ã£ãœã®ãã¬ãŒãºã§ãããšã³ãžãã¢ã§ããããŸããã éçºè ã«æ倧éã®è¡åã®èªç±ãäžãã ãããŒããã£ãŒãããã¯ãå®éšãå éããããåªããŠããŸãã
éå»1ã2幎ã§ãAPIã¢ããªã¹ãç©æ¥µçã«äœæãããæ°ãããã€ã¯ããµãŒãã¹ã絶ããéå§ãããŠããŸãã ãŸããå®éã«ã¯ãã³ã³ãããªãŒã±ã¹ãã¬ãŒã·ã§ã³ã¯ããµãŒãã¹ã®ç«ã¡äžããæè¡ããã»ã¹ãšããŠè¿ éã«éå§ããæšæºåããã®ã«åœ¹ç«ã¡ãŸãã åªããã¢ãããŒãã«ãããéçºè ã¯ãäžè¬ãªã¹ãã®ã¿ã¹ã¯ã管çè ã«å±ããŸã§ãæ°é±éïŒãŸãã¯1ãæïŒåŸ ã€ããšãªãããã€ã§ãæ°ãããµãŒãã¹ãäœæã§ããŸãã
ãªãŒã±ã¹ãã¬ãŒã¿ãŒã䜿çšããã®ãè¯ãçç±ã¯ãŸã ãããããããŸãã ãªãœãŒã¹ã®ãªãµã€ã¯ã«ã«ã€ããŠè¿œå ã§ããŸããããã®å Žåãæã泚ææ·±ãèªè ã§ãã£ãŠãææ ¢ã§ããŸããã
ãªãŒã±ã¹ãã©ã®éžæ
ããã§ã¯ãåžå Žã«ããåæ°ã®ãœãªã¥ãŒã·ã§ã³ã®æ¯èŒãã³ã³ãããŒã®èµ·åãšã¯ã©ã¹ã¿ãŒã®å±éã«é¢ããç¡éã®ãã³ãããŒã¯ãç¹å®ã®è£œåæ©èœããããã¯ããå€ãã®ãã°ãšãã圢ã§ã®ã«ããŒã«ã€ããŠèª¬æããããšãã§ããŸãã
ããããå®éã«ã¯ããã¹ãŠãã¯ããã«éå±ã§ãã iFunnyã§ã¯ãããŒã ãå°ãããããAWSãµãŒãã¹ãæ倧éã«æŽ»çšããããšããŸãããã€ãã®ããã«ãèªåã®èªè»¢è»ãäœæããããå šå¡ãããã¡ã€ã«ããããããã®ã«ååãªæéãç¥èãçµéšããããŸããã ãããã£ãŠãbeatãããéã«æ²¿ã£ãŠç§»åããã·ã³ãã«ã§ããããããããŒã«ã䜿çšããããšã決å®ãããŸããã ã¯ãããµãŒãã¹ãšããŠã®ECSèªäœã¯ç¡æã§ãããšãŒãžã§ã³ããšã³ã³ãããå®è¡ãããŠããEC2ã€ã³ã¹ã¿ã³ã¹ã«å¯ŸããŠã®ã¿æšæºæéã§ãæ¯æãããã ããŸãã
å°ããªãã¿ãã¬ïŒãã®ã¢ãããŒãã¯æ©èœããŸããããECSã«ã¯ä»ã«ãå€ãã®åé¡ããããŸããã ãKubernetesãããã«æ®å¿µã§ãããããšããåçœã¯ãèšäºã®æåŸã«ãããŸãã
çšèª
ECSã®åºæ¬æŠå¿µãç解ããŸãããã
ã¯ã©ã¹ã¿ãŒâãµãŒãã¹âã¿ã¹ã¯
æåã«èŠããŠããã¹ãæã æåã¯ãECSãã©ãããã©ãŒã ã¯ã€ã³ã¹ã¿ã³ã¹ã§ãã¹ãããå¿ èŠã®ãªãã¯ã©ã¹ã¿ãŒã§ãããAWS APIãä»ããŠç®¡çãããŸãã
ã¯ã©ã¹ã¿ãŒã§ã¯ãå ±éã®ãã³ãã«ã§å®è¡ããã1ã€ä»¥äžã®ã³ã³ãããŒããã¿ã¹ã¯ãå®è¡ã§ããŸãã èšãæããã°ãã¿ã¹ã¯ã¯Kubernetesã®ãããã«é¡äŒŒããŠããŸãã æè»ãªã³ã³ãã管ç-ã¹ã±ãŒãªã³ã°ãå±éãªã©-ã«ã¯ããµãŒãã¹ã®æŠå¿µããããŸãã
ãµãŒãã¹ã¯ç¹å®ã®æ°ã®ã¿ã¹ã¯ã§æ§æãããŸãã ãã§ã«ECSãšKubernetesãæ¯èŒããŠããå ŽåããµãŒãã¹ã¯å±éã®æŠå¿µã«äŒŒãŠããŸãã
ã¿ã¹ã¯å®çŸ©
JSONã§ã®ã¿ã¹ã¯èµ·åãã©ã¡ãŒã¿ãŒã®èª¬æã éåžžã®ä»æ§ãdockerrunã³ãã³ãã®ã©ãããŒãšããŠäœ¿çšã§ããŸãã ã¿ã°ä»ãããã³ãã°èšé²çšã®ãã¹ãŠã®ããã³ãã衚瀺ãããŸãããããã¯ãããšãã°Docker + Elastic Beanstalkãã³ãã«ã«ã¯å«ãŸããŠããŸããã
ECSãšãŒãžã§ã³ã
å®è¡äžã®ã³ã³ããã®åœ¢åŒã®ã€ã³ã¹ã¿ã³ã¹äžã®ããŒã«ã«ãšãŒãžã§ã³ãã§ãã 圌ã¯ã€ã³ã¹ã¿ã³ã¹ã®ç¶æ ãç£èŠãããã®ãªãœãŒã¹ãå©çšããããŒã«ã«DockerããŒã¢ã³ã«ã³ã³ãããŒãèµ·åããã³ãã³ããéä¿¡ããŠããŸãã ãšãŒãžã§ã³ãã®ãœãŒã¹ã³ãŒãã¯Githubã§å ¥æã§ããŸãã
Application Load BalancerïŒALBïŒ
AWS次äžä»£ãã©ã³ãµãŒ ELBãšãã®æŠå¿µã®å€§éšåã¯ç°ãªããŸããELBããã¹ãã¬ãã«ã§ãã©ãã£ãã¯ã®ãã©ã³ã¹ãåãå ŽåãALBã¯ã¢ããªã±ãŒã·ã§ã³ã¬ãã«ã§ãã©ãã£ãã¯ã®ãã©ã³ã¹ããšããŸãã ECSãšã³ã·ã¹ãã ã§ã¯ããã©ã³ãµãŒããŠãŒã¶ãŒãã©ãã£ãã¯ã®å®å ã®åœ¹å²ãæãããŸãã ãã©ãã£ãã¯ãã¢ããªã±ãŒã·ã§ã³ã®æ°ããããŒãžã§ã³ã«è»¢éããæ¹æ³ã«ã€ããŠèããå¿ èŠã¯ãããŸããããã©ã³ãµãŒã®åŸãã«ã³ã³ãããé ãã ãã§ãã
ALBã«ã¯ãã¢ããªã±ãŒã·ã§ã³ã€ã³ã¹ã¿ã³ã¹ãæ¥ç¶ããã¿ãŒã²ããã°ã«ãŒãã®æŠå¿µããããŸãã ECSãµãŒãã¹ããã€ã³ãã§ããã®ã¯ã¿ãŒã²ããã°ã«ãŒãã§ãã ãã®ãããªãã³ãã«ã§ã¯ãã¯ã©ã¹ã¿ãŒã¯ãµãŒãã¹ã³ã³ãããŒãå®è¡ãããŠããããŒãã«é¢ããæ å ±ãååŸããã¿ãŒã²ããã°ã«ãŒãã«è»¢éããŠããã©ã³ãµãŒããã®ãã©ãã£ãã¯ãåæ£ããŸãã ãããã£ãŠãã³ã³ãããéããŠããããŒãããåããã·ã³äžã®è€æ°ã®ãµãŒãã¹éã®è¡çªãé²ãæ¹æ³ã«ã€ããŠå¿é ããå¿ èŠã¯ãããŸããã ECSã§ã¯ãããã¯èªåçã«è§£æ±ºãããŸãã
ã¿ã¹ã¯é 眮æŠç¥
䜿çšå¯èœãªã¯ã©ã¹ã¿ãŒãªãœãŒã¹ã«ã¿ã¹ã¯ãåæ£ããããã®æŠç¥ã æŠç¥ã¯ãã¿ã€ããšãã©ã¡ãŒã¿ãŒã§æ§æãããŸãã ä»ã®ãªãŒã±ã¹ãã¬ãŒã¿ãŒãšåæ§ã«ã3ã€ã®ã¿ã€ãããããŸãïŒbinpackïŒã€ãŸãããã·ã³ãé害ã«é¥ãããŠããå¥ã®ãã·ã³ã«åãæ¿ããïŒãspreadïŒã¯ã©ã¹ã¿ãŒå šäœã«ãªãœãŒã¹ãåçã«åæ£ïŒãrandomïŒèª°ãããããç解ããŠãããšæããŸãïŒã ãã©ã¡ãŒã¿ã¯ãCPUãã¡ã¢ãªãã¢ãã€ã©ããªãã£ãŒãŸãŒã³ãã€ã³ã¹ã¿ã³ã¹IDã§ãã
å®éã®çµéšã§ã¯ãã¢ãã€ã©ããªãã£ãŒãŸãŒã³ã«åŸã£ãŠïŒèšãæããã°ãããŒã¿ã»ã³ã¿ãŒã«åŸã£ãŠïŒã¿ã¹ã¯ãåæ£ããæŠç¥ãéçã³ã³ã¯ãªãŒããªãã·ã§ã³ãšããŠéžæãããŸããã ããã«ãããã³ã³ããéã®ãã·ã³ãªãœãŒã¹ã®ç«¶åãæžå°ããAWSã®ã¢ãã€ã©ããªãã£ãŸãŒã³ã®1ã€ã§äºæããªãé害ãçºçããå Žåã«ã¹ãããŒãåºãããŸãã
å¥åº·çãªå²å
ãµãŒãã¹ãæ£åžžã§ãããšèŠãªãããã¿ã¹ã¯ã®æãŸããæ°ã®æå°ããã³æå€§å ±æã®ãã©ã¡ãŒã¿ãŒã ãã®ãã©ã¡ãŒã¿ãŒã¯ããµãŒãã¹ã®ãããã€ã®æ§æã«åœ¹ç«ã¡ãŸãã
ã¢ããªã±ãŒã·ã§ã³ããŒãžã§ã³ã®æŽæ°èªäœã¯ã次ã®2ã€ã®æ¹æ³ã§å®è¡ã§ããŸãã
- max percentage> 100ã®å Žåããã©ã¡ãŒã¿ã«åŸã£ãŠæ°ããã¿ã¹ã¯ãäœæãããåãéã§ãæ°ããã¿ã¹ã¯ããã©ãã£ãã¯ã«æ¥ç¶ããåŸãå€ãã¿ã¹ã¯ã殺ãããŸãã æ倧ããŒã»ã³ããŒãž= 200ã®å Žåããã¹ãŠã1åã®å埩ã§çºçãã150ã®å Žåã¯2åã§çºçããŸãã
- æå°ããŒã»ã³ããŒãž<100 ã æ倧ããŒã»ã³ããŒãž= 100ã®å Žåããã¹ãŠãéã«è¡ãããŸããæåã«ãæ°ããã¿ã¹ã¯ãäœæããããã®ã¹ããŒã¹ã解æŸããããã«å€ãã¿ã¹ã¯ã匷å¶çµäºãããŸãã ãã®æç¹ã§ããã¹ãŠã®ãã©ãã£ãã¯ã¯æ®ãã®ã¿ã¹ã¯ã«ãã£ãŠåŠçãããŸãã
æåã®ãªãã·ã§ã³ã¯éç·ã®å±éã«äŒŒãŠãããã¯ã©ã¹ã¿ãŒå ã«2åã®ãªãœãŒã¹ãä¿æããå¿ èŠããªãå Žåã«æé©ã§ãã 2çªç®ã®ãªãã·ã§ã³ã¯ãªãµã€ã¯ã«ã«å©ç¹ããããŸãããé©åãªéã®ãã©ãã£ãã¯ãå°çãããšãã¢ããªã±ãŒã·ã§ã³ã®å£åã«ã€ãªããå¯èœæ§ããããŸãã ã©ã¡ããéžã¶ãã¯ããªã次第ã§ãã
èªåã¹ã±ãŒãªã³ã°
EC2ã€ã³ã¹ã¿ã³ã¹ã¬ãã«ã§ã®ã¹ã±ãŒãªã³ã°ã«å ããŠãECSã«ã¯ã¿ã¹ã¯ã¬ãã«ã§ã®ã¹ã±ãŒãªã³ã°ããããŸãã èªåã¹ã±ãŒãªã³ã°ã°ã«ãŒãã®å Žåãšåæ§ã«ãCloudwatch Alarmsã®äžéšãšããŠECSãµãŒãã¹ã®ããªã¬ãŒãæ§æã§ããŸãã æé©ãªãªãã·ã§ã³ã¯ãã¿ã¹ã¯å®çŸ©ã§æå®ãããå€ã®äœ¿çšCPUã®å²åã§ã¹ã±ãŒãªã³ã°ããããšã§ãã
éèŠãªç¹ ïŒCPUãã©ã¡ãŒã¿ãŒã¯ãDockerèªäœãšåæ§ã«ãã³ã¢ã®æ°ã§ã¯ãªããCPUãŠãããã®å€ã§ç€ºãããŸãã å°æ¥ãããã»ããµæéã¯ãã©ã®ã¿ã¹ã¯ã«ããã«ãŠãããããããã«åºã¥ããŠå²ãåœãŠãããŸãã ECS 1ã®çšèªã§ã¯ãCPUã³ã¢ã¯1024ãŠãããã«çžåœããŸãã
匟æ§ã³ã³ãããªããžããª
AWS Dockerã€ã¡ãŒãžãã¹ãã£ã³ã°ãµãŒãã¹ ã€ãŸããDocker Registryããã¹ãããã«ç¡æã§å ¥æã§ããŸãã ãã©ã¹ã¯åçŽã§ããã€ãã¹ã¯è€æ°ã®ãã¡ã€ã³ãæã€ããšã¯ã§ãããåãµãŒãã¹ããšã«ç¬èªã®ãªããžããªãåå¥ã«äœæããå¿ èŠãããããšã§ãã
æ¢åã®ã€ã³ãã©ã¹ãã©ã¯ãã£ãžã®çµ±å
ããã§ãECSãiFunnyã§ã©ã®ããã«å®çãããã«ã€ããŠã®æ¥œããéšåã§ãã
å±éãã€ãã©ã€ã³
ãªãŒã±ã¹ãã¬ãŒã¿ãŒããã³ãªãœãŒã¹ãã©ã³ããŒãšããŠãECSã¯è¯ããããããŸããããå±éããŒã«ã¯æäŸããŠããŸããã ECSã®çšèªã§ã¯ãå±éã¯æŽæ°ãµãŒãã¹ã§ãã æŽæ°ããã«ã¯ãã¿ã¹ã¯å®çŸ©ã®æ°ããããŒãžã§ã³ãäœæããæ°ããå®çŸ©ã®ãªããžã§ã³çªå·ã瀺ããµãŒãã¹ãæŽæ°ããæŽæ°ãå®äºãããŸã§åŸ æ©ããäœãåé¡ãçºçããå Žåã¯å€ããªããžã§ã³ã«ããŒã«ããã¯ããå¿ èŠããããŸãã ãŸããå·çæç¹ã®AWSã«ã¯ããã¹ãŠãäžåºŠã«å®è¡ã§ããæ¢è£œã®ããŒã«ããããŸããã§ããã ECSã«ã¯å¥ã®CLIããããŸããããµãŒãã¹ãåç¬ã§ãããã€ããããšããããDocker Composeã«é¡äŒŒããŠããŸãã
幞ããªããšã«ããªãŒãã³ãœãŒã¹ã®äžçã¯ããã®æ¬ ç¹ãå¥ã®ecs-deployãŠãŒãã£ãªãã£ã§è£ããŸãã ã å®éãããã¯æ°çŸè¡ã®ã·ã§ã«ã¹ã¯ãªããã§ãããçŽæ¥çãªã¿ã¹ã¯ã®éåžžã«è¯ãä»äºãããŸãã ãããã€ãããµãŒãã¹ãã¯ã©ã¹ã¿ãŒãDockerã€ã¡ãŒãžãæå®ããã ãã§ãã¢ã«ãŽãªãºã å šäœã段éçã«å®è¡ãããŸãã ãŸããæŽæ°ãã¡ã€ã«ã®å Žåã«ã¯ããŒã«ããã¯ããå»æ¢ãããã¿ã¹ã¯å®çŸ©ãäžæããŸãã
æåã¯ãå¯äžã®æ¬ ç¹ã¯ãŠãŒãã£ãªãã£ãä»ããŠã¿ã¹ã¯å®çŸ©ãå®å šã«æŽæ°ã§ããªãããšã§ããã CPUã®å¶éãå€æŽãããããã°ãã©ã€ããŒãåæ§æããããããšããŸãã ããããããã¯ã·ã§ã«ã¹ã¯ãªããã§ãããDIYã«ãšã£ãŠæãç°¡åãªãã®ã§ãïŒ ãã®æ©èœã¯ãæ°æéã§ã¹ã¯ãªããã«è¿œå ãããŸããã ããã¯åŒãç¶ã䜿çšãããã¢ããªã±ãŒã·ã§ã³ãªããžããªã®ã«ãŒãã«ä¿åãããŠããã¿ã¹ã¯å®çŸ©ã«ãã£ãŠã®ã¿ãµãŒãã¹ãæŽæ°ããŸãã
確ãã«ã圌ãã¯å幎éã Pull Requestã«æ³šæãæã£ãŠããŸããã§ããã ããã¯ããªãŒãã³ãœãŒã¹ã®çæã«é¢ãã質åã§ãã
ãã©ãã©ãŒã
iFunnyã®TerraformãéããŠãAWSã«ãããã¹ãŠã®ãªãœãŒã¹ããããã€ãããŸãã ãµãŒãã¹ãæ©èœããããã«å¿ èŠãªãªãœãŒã¹ãäŸå€ã§ã¯ãããŸããïŒãµãŒãã¹èªäœã«å ããŠãããã¯Application Load Balancerãšããã«é¢é£ãããªã¹ããŒãšã¿ãŒã²ããã°ã«ãŒããããã³ECRãªããžããªãã¿ã¹ã¯å®çŸ©ã®æåã®ããŒãžã§ã³ãã¢ã©ãŒã ãšå¿ èŠãªDNSã¬ã³ãŒãã®èªåã¹ã±ãŒãªã³ã°ã§ãã
æåã®ã¢ã€ãã¢ã¯ããã¹ãŠã®ãªãœãŒã¹ã1ã€ã®Terraformã¢ãžã¥ãŒã«ã«çµåãããµãŒãã¹ãäœæãããã³ã«ããã䜿çšããããšã§ããã æåã¯èŠæ ããããã£ãã§ãããã£ã20è¡ã§ãçç£æºåå®äºã®ãµãŒãã¹ããããŸãã ããããå€æããããã«ããã®ãããªããšãé·æã«ããã£ãŠç¶æããããšã¯ã¯ããã«é«äŸ¡ã§ãã ãµãŒãã¹ã¯åžžã«åçš®ã§ã¯ãªããããŸããŸãªèŠä»¶ãåžžã«è¡šç€ºãããããã䜿çšãããšãã¯ã»ãšãã©æ¯åã¢ãžã¥ãŒã«ãç·šéããå¿ èŠããããŸããã
ãã·ã³ã¿ãã¯ã¹ã·ã¥ã¬ãŒãã«ã€ããŠèããªãããã«ããã¹ãŠãæ£åžžã«æ»ãå¿ èŠããããŸãããTerraformã®ãã¹ãŠã®ãªãœãŒã¹ã段éçã«èª¬æããå°ããªã¢ãžã¥ãŒã«ã§ã©ããã§ãããã®ãã©ããããŸãïŒããŒããã©ã³ã·ã³ã°ãšãªãŒãã¹ã±ãŒãªã³ã°ã
ããæç¹ã§ãç¶æ ãéåžžã«å€§ãããªããæŽæ°ããã°ã©ã ã®ããèšç»ã«ã¯çŽ5ã7åããããŸããããŸããããèªäœãäœããäžããŠããå¥ã®ãšã³ãžãã¢ã«ãã£ãŠãããã¯ãããå¯èœæ§ããããŸãã ãã®åé¡ã¯ããµãŒãã¹ããšã«1ã€ã®å€§ããªç¶æ ãããã€ãã®å°ããªç¶æ ã«åå²ããããšã§è§£æ±ºããŸããã
ç£èŠãšãã°
ããã§ã¯ãã¹ãŠãéåžžã«éæã§ã·ã³ãã«ãªãã®ã«ãªã£ãŠããŸãã ã¯ã©ã¹ã¿ãµãŒãã¹ãšãªãœãŒã¹ã®äœ¿çšçã«é¢ããããã€ãã®æ°ããã¡ããªãã¯ãããã·ã¥ããŒããšã¢ã©ãŒãã«è¿œå ãããããããµãŒãã¹ã®ã¹ã±ãŒãªã³ã°ãéå§ãããæç¹ãšæçµçã«ã©ã®çšåºŠããŸãæ©èœããããæ確ã«ããããŸããã
以åãšåæ§ã«ããã°ãããŒã«ã«ã®FluentdãšãŒãžã§ã³ãã«æžã蟌ã¿ããšãŒãžã§ã³ãã¯Elastic Searchã«é ä¿¡ããããã«Kibanaã§ããããèªã¿åãæ©äŒãåŸãŸããã ECSã¯ãåãBeanstalkãšã¯ç°ãªããDockerã«ãããã¹ãŠã®ãã°ãã©ã€ããŒããµããŒãããããã¯ã¿ã¹ã¯å®çŸ©ã®äžéšãšããŠæ§æãããŸãã
AWSã§ã¯ã管çã³ã³ãœãŒã«ã«ãã°ãçŽæ¥è¡šç€ºããawslogsãã©ã€ããŒãè©Šãããšãã§ããŸãã ãã°ãåéããããã®ã·ã¹ãã ãåå¥ã«äœæããã³ç¶æããããã®ãã°ãããŸããªãå Žåã«äŸ¿å©ã§ãã
ã¹ã±ãŒãªã³ã°ãšãªãœãŒã¹é åž
ããã¯ãã»ãšãã©ã®çã¿ããã£ãå Žæã§ããã ãµãŒãã¹ãã¹ã±ãŒãªã³ã°ããæŠç¥ã¯ãè©Šè¡é¯èª€ã«ãã£ãŠé·ãééžã°ããŸããã ãã®çµéšããã次ã®ããšãæããã«ãªããŸããã
- ãã¡ãããCPUäžã®Binpackã¯ã¯ã©ã¹ã¿ãŒãããŸãå©çšããŸãããè² è·ããã£ã±ãã«ãªããšãDockerããã®ãããªæ¡ä»¶äžã§CPUæéãåå²ããæ¹æ³ãèŠã€ãåºããŸã§ããã¹ãŠã1ã2åé暪ããããŸãã
- ãªãŒã±ã¹ãã¬ãŒã¿ãŒïŒECSãå«ãïŒã«ã¯ãåçãªãªãã©ã³ã¹ã³ã³ãããŒã®æŠå¿µããããŸããã ããšãã°ãããŒã¯æã«ã¹ã±ãŒãªã³ã°ã®åé¡ã解決ããã«ã¯ãã¯ã©ã¹ã¿ãŒã«æ°ãããã¹ããè¿œå ããŠãã¯ã©ã¹ã¿ãŒããªãœãŒã¹ãåçã«åæ£ããããã«ããŸãã ãã ããäœããã®ãµãŒãã¹ã§æŽæ°ããã°ã©ã ãèµ·åããããŸã§ãã¢ã€ãã«ç¶æ ã«ãªããŸãã ãã®ãããã¯ã¯Docker Swarmã§éãè°è«ãããŸããããæªè§£æ±ºã®ãŸãŸã§ãã æãå¯èœæ§ãé«ãã®ã¯ãæŠå¿µçããã³æè¡çã«è§£æ±ºããããšãé£ããããã§ãã
ãã®çµæãè² è·ãããã£ãç¶æ ã§ããªãœãŒã¹äºçŽã®75ïŒ ã«éããæç¹ã§ããµãŒãã¹ãšã€ã³ã¹ã¿ã³ã¹ãå³åº§ã«å€§éã«ã¹ã±ãŒãªã³ã°ããããšã決å®ãããŸããã éã®å©çšãšãã芳ç¹ããã¯ããããæè¯ã®éžæè¢ã§ã¯ãããŸããããå°ãªããšãã¯ã©ã¹ã¿ãŒå ã®ãã¹ãŠã®ãµãŒãã¹ã¯ãäºãã«å¹²æžããããšãªãå®å®ããŠæ©èœããŸãã
èœãšãç©Ž
ãšã³ãžãã¢åãã®æ°ãããã®ã®å°å ¥ã100ïŒ ããããŒãšã³ãã§çµãã£ãã±ãŒã¹ãæãåºããŠã¿ãŠãã ããã ã§ããªã ãã®ãããECSã䜿çšããiFunnyãšããœãŒãã§ãäŸå€ã§ã¯ãããŸããã§ããã
ãã«ã¹ãã§ãã¯ã®æè»æ§ã®æ¬ åŠ
ãµãŒãã¹ã®å¯çšæ§ãšå¯çšæ§ãã§ãã¯ãæè»ã«èšå®ã§ããKubernetesãšã¯ç°ãªããECSã«ã¯1ã€ã®åºæºã®ã¿ããããŸãïŒã¢ããªã±ãŒã·ã§ã³ã¯1ã€ã®URLã§200ã³ãŒãïŒãŸãã¯ãŠãŒã¶ãŒãèšå®ãããã®ä»ã®ã³ãŒãïŒãè¿ããŸãã ãµãŒãã¹ãäžè¯ã§ããããã®åºæºã¯2ã€ã ãã§ããã³ã³ããããŸã£ããèµ·åããªãã£ãããèµ·åããããã«ã¹ãã§ãã¯ã«å¿çããªãã£ããã®ããããã§ãã
ããã«ãããããšãã°ããããã€äžã«ãµãŒãã¹ã®éèŠãªéšåãç ŽæããŠãããã§ãã¯ã«å¿çããå Žåã«åé¡ãçºçããŸãã ãã®å Žåãå€ãããŒãžã§ã³ãèªåã§ããçŽãå¿
èŠããããŸãã
ãµãŒãã¹ãã£ã¹ã«ããªãŒã®æ¬ åŠã AWSã¯ç¬èªã®ããŒãžã§ã³ã®Service DiscoveryãæäŸããŠããŸããããã®ãœãªã¥ãŒã·ã§ã³ã¯ããŸããŸããŸãã®ããã«èŠããŸãã ãã®ç¶æ³ã§ã®æé©ãªãªãã·ã§ã³ã¯ããã¹ãå
ã«ConsulãšãŒãžã§ã³ã+ç»é²è
ãã³ãã«ãå®è£
ããããšã§ããããã¯ãiFunnyéçºããŒã ãçŸåšè¡ã£ãŠããããšã§ãã
çã®ã¹ã±ãžã¥ãŒã«ãããã¿ã¹ã¯ã®èµ·åã®å®è£
æ確ã§ãªãå Žåãç§ã¯cronã«ã€ããŠè©±ããŠããã æšå¹Ž6æã«ãECSã¯ã¹ã±ãžã¥ãŒã«ãããã¿ã¹ã¯ã®æŠå¿µãå°å ¥ããŸãããããã«ãããã¯ã©ã¹ã¿ãŒäžã§ã¹ã±ãžã¥ãŒã«ã«åŸã£ãŠã¿ã¹ã¯ãå®è¡ã§ããŸãã ãã®æ©èœã¯é¡§å®¢ãé·ãéå©çšã§ããŸããããæäœã¯å€ãã®çç±ã§ãŸã ç²éãªããã§ãã
ãŸããAPIã¯ã¿ã¹ã¯èªäœã«ãã£ãŠäœæãããã®ã§ã¯ãªããèµ·åãã©ã¡ãŒã¿ãŒãæã€Cloudwatchã€ãã³ããšèµ·åæéãæã€Cloudwatchã€ãã³ãã¿ãŒã²ããã® 2ã€ã®ãªãœãŒã¹ã«ãã£ãŠäœæãããŸãã å€ããã¯äžéæã«èŠããŸãã 第äºã«ããããã®ã¿ã¹ã¯ãå±éããããã®éåžžã®å®£èšããŒã«ã¯ãããŸããã
Ansibleã䜿çšããŠåé¡ã解決ããããšããŸãããããããŸã§ã®ãšãããã¿ã¹ã¯ã®æšæºåã«ã¯åé¡ããããŸãã
æçµçã«ãiFunnyã¯ãYAMLãã¡ã€ã«å ã®ã¿ã¹ã¯ã®èª¬æãå«ãèªå·±èšè¿°PythonãŠãŒãã£ãªãã£ã䜿çšããŠå±éããECSã«cronã¿ã¹ã¯ãå±éããããã®æ¬æ ŒçãªããŒã«ãäœæããäºå®ã§ãã
ã¯ã©ã¹ã¿ãŒãšãã¹ãéã®çŽæ¥éä¿¡ã®æ¬ åŠ
ããŸããŸãªçç±ã§ãEC2ã€ã³ã¹ã¿ã³ã¹ãåé€ãããå Žåãã¯ã©ã¹ã¿ãŒã§ç»é²è§£é€ãããããã®äžã§å®è¡ãããŠãããã¹ãŠã®ã¿ã¹ã¯ã¯åçŽã«èœã¡ãŸãã ãã©ã³ãµãŒã¯ã¯ã©ã¹ã¿ãŒããã¿ãŒã²ãããåé€ããã·ã°ãã«ãåä¿¡ããªãã£ããããã³ã³ãããŒãå©çšã§ããªãããšãèªèãããŸã§ãªã¯ãšã¹ããéä¿¡ããŸãã 10ã15ç§ãããããã®éã«ãµãŒããŒãã倧éã®ãšã©ãŒãçºçããŸãã
çŸåšãAutoscaling Groupããã®ã€ã³ã¹ã¿ã³ã¹ã®åé€ã«å¿çãããã®ãã·ã³ã®ã¿ã¹ã¯ãåé€ããããã«ã¯ã©ã¹ã¿ãŒã«ãªã¯ãšã¹ããéä¿¡ããã©ã ãé¢æ°ã®å©ããåããŠãåé¡ã解決ã§ããŸãïŒçšèª-ã€ã³ã¹ã¿ã³ã¹ã®æåºïŒã ãããã£ãŠãã€ã³ã¹ã¿ã³ã¹ã¯ããã¹ãŠã®ã¿ã¹ã¯ãåé€ãããåŸã«ã®ã¿ç¡å¹ã«ãªããŸãã ããŸãæ©èœããŸãããã€ã³ãã©ã¹ãã©ã¯ãã£ã®Lambdaã¯åžžã«æŸèæã®ããã«èŠããŸããããã¯ãã©ãããã©ãŒã ã®æ©èœã«å«ãŸããŠããå¯èœæ§ããããŸãã
詳现ãªç£èŠã®æ¬ åŠ
AWS APIã¯ãç»é²æžã¿ã®ãã·ã³ã®æ°ãšãã¯ã©ã¹ã¿ãŒããããµãŒãã¹ããã®äºçŽå®¹éã®ã·ã§ã¢ã®ã¡ããªãã¯ã®ã¿ãæäŸããŸããã¿ã¹ã¯ã®æ°ãšãã¿ã¹ã¯å®çŸ©ã§èšå®ãããéã®å²åãšããŠã®CPUããã³ã¡ã¢ãªäœ¿çšçã®ã¿ã§ãã ã¡ããªãã¯æäŒã®æ¯æè ã«ãšã£ãŠã®èŠçã¯ããã«ãããŸãã ç¹å®ã®ã³ã³ããã«ãããªãœãŒã¹ã®äœ¿çšã«é¢ãã詳现ã®æ¬ åŠã¯ããµãŒãã¹ã®ãªãŒããŒããŒãã«é¢ããåé¡ããããã°ãããšãã«ããªãã¯ãæŒããããšãã§ããŸãã ãŸããI / Oããã³ãããã¯ãŒã¯ã®å»æ£ã«é¢ããã¡ããªãã¯ã¯ãåé¡ãããŸããã
ALBã§ã®ã³ã³ãããŒç»é²è§£é€
AWSããã¥ã¡ã³ãããå·®ãåŒãããéèŠãªãã€ã³ãã ãã©ã³ãµãŒã®deregistration_delayãã©ã¡ãŒã¿ãŒã¯ãã¿ãŒã²ããã®ç»é²è§£é€ãåŸ æ©ããããã®ã¿ã€ã ã¢ãŠãã§ã¯ãªããå®å šãªã¿ã€ã ã¢ãŠãã§ãã ã€ãŸãããã©ã¡ãŒã¿ãŒã30ç§ã§ã15ç§åŸã«ã³ã³ãããŒãåæ¢ããå Žåããã©ã³ãµãŒã¯ã¿ãŒã²ãããžã®èŠæ±ãéä¿¡ããã¯ã©ã€ã¢ã³ãã«500çªç®ã®ãšã©ãŒãäžããŸãã
解決çã¯ããµãŒãã¹ã®deregistration_delayãALBã®åæ§ã®ãã©ã¡ãŒã¿ãŒã®äžã«èšå®ããããšã§ãã åœããåã®ããã«æããŸãããæåã«åé¡ãåŒãèµ·ããããã¥ã¡ã³ãã®ã©ãã«ãæžãããŠããŸããã
AWSå ã®ãã³ããŒããã¯ã€ã³
AWSã¯ã©ãŠããµãŒãã¹ãšåæ§ã«ãAWSã®å€éšã§ECSã䜿çšããããšã¯ã§ããŸããã äœããã®çç±ã§Google CloudãŸãã¯ïŒäœããã®çç±ã§ïŒAzureã«ç§»è¡ããããšãèããå Žåããã®å ŽåããµãŒãã¹ã®ãªãŒã±ã¹ãã¬ãŒã·ã§ã³ãå®å šã«ããçŽãå¿ èŠããããŸãã
ã·ã³ãã«ã
ã¯ããECSãšãã®AWS補åãšããç°å¢ã¯éåžžã«åçŽãªã®ã§ãã¢ããªã±ãŒã·ã§ã³ã®ã¢ãŒããã¯ãã£ã«ç¹å¥ãªã¿ã¹ã¯ãå®è£ ããããšã¯å°é£ã§ãã ããšãã°ããµãŒãã¹ã§å®å šãªHTTP / 2ãµããŒããå¿ èŠã§ãããALBã¯ãµãŒããŒããã·ã¥ããµããŒãããŠããªãããããããè¡ãããšã¯ã§ããŸããã
ãŸãã¯ãã¢ããªã±ãŒã·ã§ã³ãã¬ãã«4ïŒTCPãUDPã¯é¢ä¿ãããŸããïŒã§ãªã¯ãšã¹ããåãå ¥ããå¿ èŠããããŸãããALSã¯HTTP / HTTPSãããã³å€ãELBãä»ããŠã®ã¿åäœãããããECSã§ã¯ãã©ãã£ãã¯ããµãŒãã¹ã«è»¢éããæ¹æ³ã«é¢ãããœãªã¥ãŒã·ã§ã³ãèŠã€ãããŸããECSãµãŒãã¹ã§ã¯æ©èœãããäžè¬ã«ãã©ãã£ãã¯ãæªããããšããããŸãïŒããšãã°ãgRPCã§çºçããŸããïŒã
å顧
èšäºã®åé ã§è¿°ã¹ããªãŒã±ã¹ãã¬ãŒã·ã§ã³ã®ãã¹ãŠã®ãã©ã¹ããŸãšãããšããããã¯ãã¹ãŠçå®ã§ãããšèªä¿¡ãæã£ãŠèšããŸãã IFunnyã®çŸåšã®æ©èœïŒ
- ã·ã³ãã«ã§ç°¡åãªå±éã
- Ansibleã§ã®ã³ãŒããšæ§æã®åæžã
- ãã¹ã管çã§ã¯ãªãã¢ããªã±ãŒã·ã§ã³ãŠããã管ç
- éçºè
ãçŽæ¥ã20ã30åã§ãŒãããéçšãµãŒãã¹ãéå§ããŸãã
ãããããªãœãŒã¹äœ¿çšçã®åé¡ã¯æªè§£æ±ºã®ãŸãŸã§ãã
ã¢ããªã±ãŒã·ã§ã³ãECSã«å®å šã«ç§»è¡ããæåŸã®ã¹ãããã¯ãã³ã¢APIã®ç§»è¡ã§ããã ãããã¯ãã¹ãŠãè¿ éãã€ã¹ã ãŒãºã«ããŠã³ã¿ã€ã ãªãã§åæ ŒããŸãããã倧ããªã¢ããªã·ãã¯ã¢ããªã±ãŒã·ã§ã³ã«ãªãŒã±ã¹ãã¬ãŒã¿ãŒã䜿çšããããšã®åŠ¥åœæ§ã«ã€ããŠã¯çåãæ®ããŸããã 1ã€ã®ã¢ããªã±ãŒã·ã§ã³ãŠãããã«ã¯ãå€ãã®å Žåãåå¥ã®ãã¹ããå²ãåœãŠãå¿ èŠããããŸããä¿¡é Œæ§ã®é«ãå±éãè¡ãã«ã¯ã空ãã¹ããŒã¹ãè€æ°ã®ç©ºããŠãããã·ã³ãšããŠä¿åããå¿ èŠããããŸãã ãã¡ãããECSã¯ä»ã®å€ãã®åé¡ãååãã«è§£æ±ºããŸããããã¢ããªã¹ã䜿çšããŠããªãŒã±ã¹ãã¬ãŒã·ã§ã³ã§å€§ããªã¡ãªããã¯åŸãããªããšããäºå®ã¯æ®ã£ãŠããŸãã
次ã®å³ã¯ã4ã€ã®ã¯ã©ã¹ã¿ãŒïŒãã®ãã¡ã®1ã€ããã¹ãç°å¢ïŒã36ã®å®çšŒåäžã®ãµãŒãã¹ãããŒã¯æã«çŽ210ãã230ã®èµ·åã³ã³ãããŒãããã³ã¹ã±ãžã¥ãŒã«ã§å®è¡ããã80ã®ã¿ã¹ã¯ã§åŸãããŸããã æéã¯ããªãŒã±ã¹ãã¬ãŒã·ã§ã³ã§ã®ã¹ã±ãŒã«ã¢ãããã¯ããã«é«éã§ç°¡åã§ããããšã瀺ããŠããŸãã ããããããªãå°æ°ã®ãµãŒãã¹ãšå®è¡äžã®ã³ã³ãããŒãããå Žåã¯ããªãŒã±ã¹ãã¬ãŒã·ã§ã³ãå¿ èŠãã©ãããèããå¿ èŠããããŸãã
- éããããã°ããã®æŠãã®åŸãAWSã¯EKSãšåŒã°ããç¬èªã®Kubernetesãã¹ãã£ã³ã°ãµãŒãã¹ãéå§ãå§ããŸããã ãã®ããã»ã¹ã¯éåžžã«åæã®æ®µéã§ãããæ¬çªç°å¢ã§ã®äœ¿çšã«é¢ãããã£ãŒãããã¯ã¯ãŸã ãããŸããããAWSã§ã¯2ã€ã®ãã¿ã³ã§æã人æ°ã®ãããªãŒã±ã¹ãã¬ãŒã·ã§ã³ãã©ãããã©ãŒã ãã»ããã¢ããã§ããã»ãšãã©ã®ããã³ãã«ã¢ã¯ã»ã¹ã§ããããšã誰ããç解ããŠããŸãã ãªãŒã±ã¹ãã©ãéžã°ããç¬éã«æ»ããšãKubernetesã¯æè»æ§ãè±å¯ãªæ©èœããããžã§ã¯ãã®è¿ éãªéçºã®ããã«åªå äºé ãšãªããŸãã
AWSã¯ãEC2ã€ã³ã¹ã¿ã³ã¹ããã¹ãããããšãªãã³ã³ãããŒãèµ·åããECS Fargateãå°å ¥ããŸããã iFunnyã§ã¯ã圌ãã¯ãã§ã«ããã€ãã®ãã¹ããµãŒãã¹ã§è©ŠããŠã¿ãŸãããããã®æ©èœã«ã€ããŠçµè«ãåºãã®ã¯ææå°æ©ãšèšããŸãã
PSèšäºã¯éåžžã«å€§èŠæš¡ã§ããããšãå€æããŸããããECSã®ã±ãŒã¹ã§ããçµããã§ã¯ãããŸããã ã³ã¡ã³ãã§ãããã¯ã«é¢ãã質åãããããæåããå®è£ äºäŸãå ±æããŠãã ããã