
ããã«ã¡ã¯ãæ¢ åã§ãã
仿¥ã¯ECSã®ãããã¤ã¿ã¤ãã«ã¤ãã¦æ¹ãã¦æ´çãã¾ãã
ECSã®ãããã¤æ¹æ³ã¯3ã¤ããã¾ãã
- ãã¼ãªã³ã°ã¢ãããã¼ã
- Blue/Greenãããã¤
- å¤é¨ãããã¤
ã®3ã¤ã§ãã
ãã®è¨äºã§ã¯ãã¼ãªã³ã°ã¢ãããã¼ãã¨B/Gãããã¤ã«ã¤ãã¦æµãããããããã¾ãã
ECSã®å段ã«ALBãç½®ããæ§æãä¾ã«ãã¾ãã

- ãã¼ãªã³ã°ã¢ãããã¼ã
- B/Gãããã¤
- ãã¼ãªã³ã°ã¢ãããã¼ãã¨B/Gãããã¤ã®æ¯è¼
- æå¾ã«
ãã¼ãªã³ã°ã¢ãããã¼ã
ãã¼ãªã³ã°ã¢ãããã¼ãã¨ã¯ã稼åä¸ã®ECSã¿ã¹ã¯ããã®ã¾ã¾æ°ããã¿ã¹ã¯ã«ç½®ãæããæ¹æ³ã§ããä¸çªãªã¼ã½ããã¯ã¹ãªãããã¤æ¹æ³ãªã®ã§ã¯ãªãã§ããããã
ECSã®ã¿ã§ãããã¤ãããã¨ãã§ããè¨å®ç®æã主ã«å¾è¿°ãã2ã¤ã ããªã®ã§æè»½ã«ã§ãã¾ããã§ãããããã¤ä¸ã¯æ°æ§ã®ã¿ã¹ã¯ãæ··ããç¶æ
ã¨ãªããããã¢ããªã±ã¼ã·ã§ã³ä¸ã§æå³ããªãåä½ãèµ·ããå¯è½æ§ãããã®ã§æ³¨æãå¿
è¦ã§ãã
ã©ã®ãããã®å²åã§æ°ããã¿ã¹ã¯ã«ç½®ãæãã¦ããããminimumHealthyPercentã¨maximumPercentãè¨å®ãããã¨ã§å¶å¾¡ã§ãã¾ãã
minimumHealthyPercent
ãããã¤ä¸ã«æä½éç¶æãããã¿ã¹ã¯ã®æ°ãå²åã§è¨å®ãã¾ããæä½éã®ã¿ã¹ã¯ãè¨å®ãã¦ãããã¨ã§ããµã¼ãã¹ã¯ç¨¼åããã¾ã¾ãããã¤ãããã¨ãã§ãã¾ãã
ä¾ãã°ã¿ã¹ã¯3ã¤ã§ç¨¼åä¸ã®ECSãµã¼ãã¹ã«ãããã¤ããã¨ãã«
minimumHealthyPercentã«100%ãè¨å®ããã¨ãæ£å¸¸ãªã¿ã¹ã¯æ°ã¯ï½¢3ã¤ï½£ç¶æããã¾ãã
minimumHealthyPercentã«33%ãè¨å®ããã¨ãæ£å¸¸ãªã¿ã¹ã¯æ°ã¯33%ã®åãä¸ããããï½¢1ã¤ï½£ã¯ç¶æãããæ®ã2ã¤ã¯drainingã«ãªã£ãå¾ã«æ°ããã¿ã¹ã¯ããããã¤ããã¾ããmaximumPercent
ãããã¤ä¸ã®æ§ã¿ã¹ã¯ã¨æ°ã¿ã¹ã¯ã®åè¨å¤ã®æå¤§ãå²åã§è¨å®ãã¾ãã
ä¾ãã°ã¿ã¹ã¯3ã¤ã§ç¨¼åä¸ã®ECSãµã¼ãã¹ã«ãããã¤ããã¨ãã«
maximumPercentã«200%ãè¨å®ããã¨ããããã¤ä¸ã«æå¤§ã§200%ã®ï½¢6ã¤ï½£ã®ã¿ã¹ã¯ããããã¤ãããã¨ãã§ãã¾ãã maximumPercentã«166%ãè¨å®ããã¨ããããã¤ä¸ã«æå¤§ã§166%ã®åãæ¨ã¦ãããï½¢4ã¤ï½£ããããã¤ã§ãã¾ãã
ã¤ã¾ãminimumHealthyPercentã«100%ãmaximumPercentã«166%ãè¨å®ããã¨ã稼åä¸ã®ã¿ã¹ã¯ã¨ãããã¤ä¸ã®ã¿ã¹ã¯æ°ã¯æä½ã§ã3å°ç¶æãæå¤§ã§ã4å°ã¨ãªãã®ã§ã1å°ãã¤æ®µéçãªãããã¤ãããã¨ãã§ãã¾ãã ããã®è¨å®å¤ã¯ããããã¤ã«ãããæéãã³ã¹ããªã©ã®å¶ç´ã«é¢ãã£ã¦ããã®ã§ãæºããã¹ãè¦ä»¶ã«å¿ãã¦èª¿æ´ãå¿ è¦ã§ãã
ãã¼ãªã³ã°ã¢ãããã¼ãã®æµããè¦ã
ãããã¤å
ã¾ãæ§ã³ã³ããã3ã¤ããç¶æ ã§ãããã¤ãã¦ããã¾ãã
ãããã¤éå§
æ§ã³ã³ãããåå¨ããã¿ã¼ã²ããã°ã«ã¼ãã«æ°ã³ã³ããããããã¤ãããã³ã³ãããRunningç¶æ ã«ãªããã¿ã¼ã²ããã°ã«ã¼ãã®ãã«ã¹ãã§ãã¯ãåé¡ãªãã¨ãã©ãã£ãã¯ãæ°ã³ã³ããã«ãæµãã¦ããã¾ãã
æ§ã³ã³ããã®åé¤
æ°ã³ã³ãããRunningã«ãªããã«ã¹ãã§ãã¯ãéã£ãå¾ã«æ§ã³ã³ãããåé¤ããã¾ãã
ã¾ããããã¤ä¸ã®ä¸å
·åæ¤ç¥ã¯ããããã¤ãµã¼ããããã¬ã¼ã«ã¼ã¨CloudWatch Alarmãå©ç¨ãããã¨ãã§ãã¾ãããããã¤ãµã¼ããããã¬ã¼ã«ã¼ã¯èªåã§ã®ãã¼ã«ããã¯ã宿½ãã¦ããã¾ãã
ãããã¤ãµã¼ããããã¬ã¼ã«ã¼ã®ä¸å
·åæ¤ç¥ã®æ¡ä»¶ã¯ãï½¢ã¿ã¹ã¯ãRunningã«ãªããï½£ã¨ãï½¢ELBãCloudMapãECSã³ã³ããã®ãã«ã¹ãã§ãã¯ãéããï½£ã®2ã¤ã§ãã詳細ã¯ä»¥ä¸ãªã³ã¯ãåç
§ãã¦ãã ããã
B/Gãããã¤
B/Gãããã¤ã¯ECSã¿ã¹ã¯ã®å
¥ãæ¿ãã¯å®æ½ããã稼åä¸ã®ã¿ã¹ã¯ã¨ã¯å¥ã«Greenç°å¢ï¼æ°ã¿ã¹ã¯ï¼ãå¥ã®ã¿ã¼ã²ããã°ã«ã¼ãã«ãããã¤ããä»»æã®ã¿ã¤ãã³ã°ã§ã稼åä¸ã®Blueç°å¢ï¼æ§ã¿ã¹ã¯ï¼ããGreenç°å¢ã¸ããªã¹ãã¼ã«ã¼ã«ã®å¤æ´ã¨ããå½¢ã§åãæ¿ãã宿½ããã¾ãã
ã¾ããã¼ããã©ã³ãµã¼ã®ãªã¹ãã¼ã«ã¼ã«ã¨ã¿ã¼ã²ããã°ã«ã¼ãã2ã¤ç¨æãã¦ããã®ã§ãã¦ã¼ã¶ãå©ç¨ãã¦ããBlueç°å¢ã¸ã®å½±é¿ã¯çºçãã¾ãããã¾ããGreenç°å¢ã«ãã©ãã£ãã¯ãåãæ¿ããåã«ãä»»æã®ãã¼ãã§Greenç°å¢ã®ã¿ã§ã®ãã¹ãã宿½ãããã¨ãã§ãã¾ãããã¹ãç¨ã®ãªã¹ãã¼ã«ã¼ã«ã¯ãªãã·ã§ã³ãªã®ã§ãªãã§ãå¯è½ã§ãã
B/Gãããã¤ã¯CodeDeployã¨çµ±åããã¦ããã®ã§ãECSãµã¼ãã¹ãã³ã³ã½ã¼ã«ãã使ããã¨ãCodeDeployã¢ããªã±ã¼ã·ã§ã³ã¨ãããã¤ã°ã«ã¼ãã使ããã¾ãã
B/Gãããã¤ã«é¢ãã¦ããã©ã®ãããã®å²åã§æ´æ°ãã¦ããããCodeDeployã®ãããã¤è¨å®ã§æå®ãããã¨ãã§ãã¾ããECSAllAtOnceãECSCanaryXPercentYMinutesãECSLinearXPercentEveryYMinutesãã鏿ã§ãã¾ããXã¨Yã®å¤ã¯èªåã§è¨å®ãããã¨ãã§ãã¾ãã
- ECSAllAtOnce
1åã§ãã¹ã¦ã®ãã©ãã£ãã¯ãå ¥ãæ¿ãã宿½ - ECSCanaryXPercentYMinutes
Greenç°å¢ããããã¤ãããå¾ãYåéã¯ å ¨ä½ãã©ãã£ãã¯ã®X%ãGreenç°å¢ã«æµããã¨ãã§ãã¾ããYåå¾ããã¹ã¦ã®ãã©ãã£ãã¯ãGreenç°å¢ã«æµããã¾ãã - ECSLinearXPercentEveryYMinutes
Greenç°å¢ããããã¤ãããå¾ãYåéãã¨ã«ãã©ãã£ãã¯ã®X%ãGreenç°å¢ã«æ®µéçã«ç§»ãã¦ããã¾ãã
B/Gãããã¤ã®æµããè¦ã
ECSAllAtOnceã®æµããè¦ã¦ããã¾ãã
ãããã¤å
ãããã¤åã¯2ã¤ã®ãªã¹ãã¼ã«ã¼ã«ã¨ãã«ç¨¼åä¸ã®ã¿ã¹ã¯ãåå¨ããã¿ã¼ã²ããã°ã«ã¼ããåãã¦ãã¾ãããã®ç°å¢ã«ãããã¤ãã¦ããã¾ãã
ãããã¤éå§
ãããã¤ãéå§ãããã¨ãGreenç°å¢ã«æ°ããã¿ã¹ã¯ããããã¤ããã¾ãããããã¤å ã¯ç¨¼åä¸ã®ã¿ã¼ã²ããã°ã«ã¼ãã¨ã¯å¥ã®ã¿ã¼ã²ããã°ã«ã¼ãã«ãããã¤ããããã¹ãç¨ã®ãªã¹ãã¼ã«ã¼ã«ã®åãå ãGreenç°å¢ã«å¤æ´ããã¾ãã
ã¾ãECSAllAtOnceã§ã¯ãªãCanaryãLinearã§ã®ãããã¤ã®ã¨ãã¯ããªã¹ãã¼ã«ã¼ã«ã®éã¿ä»ãã®è¨å®ã§X%ã®ãã©ãã£ãã¯ãGreenã¿ã¼ã²ããã°ã«ã¼ãã«æµããã¨ã§ãã©ãã£ãã¯ã®å¶å¾¡ãè¡ã£ã¦ãã¾ãã
ãã©ãã£ãã¯ã®åã«ã¼ãã£ã³ã°
ä»»æã®æéçµéå¾ãããã¯ã³ã³ã½ã¼ã«ã§ã®æä½ã§æ¬¡ã®ãã§ã¼ãºã«ç§»ããã¨ãã§ãã¾ããããã§ã¯æ¬çªç¨ã®ãªã¹ãã¼ã«ã¼ã«ãGreenç°å¢ã«åãã¾ãããã®éã¯Blueç°å¢ã®ECSã¿ã¹ã¯ãæ®ã£ã¦ããã®ã§ãæ§ç°å¢ã¸ã®ãã¼ã«ããã¯ãã³ã³ã½ã¼ã«ãã1ããã§å®æ½ã§ãã¾ãã
Blueç°å¢åé¤
æå¾ã«Blueç°å¢ã®åé¤ã§ãããã¡ããä»»æã®æéçµéå¾ãããã¯ã³ã³ã½ã¼ã«ã§ã®æä½ã§ã§ãã¾ãã
æå¾ã«2ã¤ã®ãããã¤æ¹æ³ã®æ¯è¼ãã¾ã¨ã¾ãã
ãã¼ãªã³ã°ã¢ãããã¼ãã¨B/Gãããã¤ã®æ¯è¼
| è¦³ç¹ | ãã¼ãªã³ã°ã¢ãããã¼ã | B/Gããã㤠|
|---|---|---|
| ã³ã¹ãé¢ | 追å ã³ã¹ãã¯æå°é | ã¿ã¹ã¯æ°ã¯2åããããã¤æéãå½±é¿ãé«ã |
| è¤éæ§ | ECSã¨çµ±åããã¦ãã®ã§å®¹æ | CodeDeployã使ç¨ããã®ã§å°ãè¤é |
| ãã¼ã«ããã¯ã®å®¹ææ§ | ãµã¼ããããã¬ã¼ã«ã¼ã®ä½¿ç¨ãããã¯æ°è¦ã§ECSã¿ã¹ã¯ãå®è¡ãã | æ§ç°å¢ãæ®ã£ã¦ããéã¯å³åº§ã«å¯è½ |
| ãããã¤ä¸ã®å½±é¿ | ãããã¤ä¸ã«æ°æ§ç°å¢ãæ··å¨ãã | ã¿ã¼ã²ããã°ã«ã¼ãã§åé¢ãã¦ããã®ã§ã¦ã¼ã¶å½±é¿ãªã |
æå¾ã«
ãããæ¸ãã¾ã§ã¯ï½¢B/Gãããã¤ã§ãããããï½£ã¨æã£ã¦ãã¾ããããæ¤è¨¼ãéãã¦ãã¼ãªã³ã°ã¢ãããã¼ãã®æè»½ãã容æãã¯ãããæãã¾ãããB/Gãããã¤ãã³ã¹ããæãã£ããAutoScalingã®åä½ãªã©ã®èæ ®äºé ãããã¾ããããã¼ã«ããã¯ã®ç°¡åããå½±é¿åº¦ã®å°ãªãã¯é åçã§ãã ã¾ããB/Gãããã¤ã¯ã¿ã¼ã²ããã°ã«ã¼ããåãã¦ãããã¨ã§ãã¦ã¼ã¶ã¸ã®å½±é¿ããªããäºåã®ãã¹ããå¯è½ã¨ããç¹ã大ããªã¡ãªããã«ãªãã¨æãã¾ãã ãã¼ãªã³ã°ã¢ãããã¼ãã¨B/Gãããã¤ã¯ä¸é·ä¸çã§çµ¶å¯¾ã«ãã£ã¡ã§ã¯ãªãã¨ãã¡ã¨ããã®ã¯ãªãã¨æãã¾ããè¦ä»¶ã«åããã¦ã¡ãªããã»ãã¡ãªãããæ¯è¼ããªãã鏿ããå¿ è¦ãããã¨æãã¾ããã
æå¾ã«ä½è«ã§ãããECSã®æ§ã³ã³ã½ã¼ã«ã¯2023å¹´12æ4æ¥ãéããã¨ä½¿ç¨ã§ããªããªãããã§ãããªã®ã§å¹´å ã«ã¯æ°ã³ã³ã½ã¼ã«ä¸ã§ãB/Gãããã¤ã鏿ã§ããããã«ãªããããããªãã§ããã GitHubä¸ã«å ¬éããã¦ããECSã®ãã¼ãããããè¦ã¦ãã¦ããIssueãããã®ã§ã³ã³ã½ã¼ã«ããCodeDeployã鏿ã§ããããã«ãªãã¾ã§æ°é·ã«å¾ ã¨ãã¨æãã¾ãã