ãŸããã¡ãã£ãšããçè«ã§ãã ã©ãããã® Twelve-Factor ã¢ã㪠?
ç°¡åã«èšãã°ããã®ããã¥ã¡ã³ã㯠SaaS ã¢ããªã±ãŒã·ã§ã³ã®éçºãç°¡çŽ åããããšãç®çãšããŠèšèšãããŠãããææ°ã®ã¢ããªã±ãŒã·ã§ã³ã®éçºã§æãé »ç¹ã«ééããåé¡ãšå®è·µæ¹æ³ã«ã€ããŠéçºè ãš DevOps ãšã³ãžãã¢ã«ç¥ãããããšã«åœ¹ç«ã¡ãŸãã
ãã®ããã¥ã¡ã³ã㯠Heroku ãã©ãããã©ãŒã ã®éçºè ã«ãã£ãŠäœæãããŸããã
Twelve-Factor ã¢ããªã¯ãä»»æã®ããã°ã©ãã³ã°èšèªã§èšè¿°ããããããã³ã° ãµãŒãã¹ (ããŒã¿ããŒã¹ãã¡ãã»ãŒãž ãã¥ãŒããã£ãã·ã¥ãªã©) ãä»»æã«çµã¿åãããŠäœ¿çšââããã¢ããªã±ãŒã·ã§ã³ã«é©çšã§ããŸãã
ãã®æ¹æ³è«ã®åºç€ãšãªãèŠçŽ ã«ã€ããŠç°¡åã«èª¬æããŸãã
- ã³ãŒãããŒã¹ â ããŒãžã§ã³ç®¡çã§è¿œè·¡ããã XNUMX ã€ã®ã³ãŒãããŒã¹ â è€æ°ã®ãããã€ã¡ã³ã
- äŸåé¢ä¿ â äŸåé¢ä¿ãæ瀺çã«å®£èšããŠåé¢ãã
- èšå® â å®è¡æã«æ§æãä¿åãã
- æ¯æŽãµãŒãã¹ â ãã©ã°ã€ã³ ãªãœãŒã¹ãšããŠã®ãããã³ã° ãµãŒãã¹ãæ€èšãã
- ãã«ãããªãªãŒã¹ãå®è¡ â çµã¿ç«ãŠæ®µéãšå®è¡æ®µéãå³å¯ã«åé¢ãã
- ÐÑПÑеÑÑÑ â ã¢ããªã±ãŒã·ã§ã³ã XNUMX ã€ä»¥äžã®ã¹ããŒãã¬ã¹ ããã»ã¹ãšããŠå®è¡ãã
- ããŒããã€ã³ãã£ã³ã° â ããŒã ãã€ã³ãã£ã³ã°çµç±ã§ãµãŒãã¹ããšã¯ã¹ããŒããã
- 䞊ååŠç â ããã»ã¹ã䜿çšããŠã¢ããªã±ãŒã·ã§ã³ãã¹ã±ãŒã«ãã
- 䜿ãæšãŠæ§ â é«éèµ·åãšã¯ãªãŒã³ãªã·ã£ããããŠã³ã«ããä¿¡é Œæ§ãæ倧å
- ã¢ããªã±ãŒã·ã§ã³éçº/éçšã®åçæ§ â éçºç°å¢ãã¹ããŒãžã³ã°ç°å¢ãå®çšŒåç°å¢ãå¯èœãªéãé¡äŒŒããç¶æ ã«ä¿ã¡ãŸã
- ãã®ã³ã° â ãã°ãã€ãã³ãã®ã¹ããªãŒã ãšããŠè¡šç€ºãã
- 管çã¿ã¹ã¯ â ã¢ãããã¯ããã»ã¹ã䜿çšããŠç®¡ç/管çã¿ã¹ã¯ãå®è¡ãã
12 ã®èŠçŽ ã«ã€ããŠã®è©³çŽ°ã¯ã次ã®ãªãœãŒã¹ããå ¥æã§ããŸãã
-
å ¬åŒãœãŒã¹ - å¿ èª -
ããã«é¢ããèšäºã Twelve-Factor ã¢ã㪠â å ¬åŒç¿»èš³ -
ããã«é¢ããèšäºã 7 Factor ã¢ããªã«æ¬ ããŠãã 12 ã€ã®èŠçŽ - æ¹åãç®çãšãã 12 ã®èŠçŽ ã®åæ€èšã
ãã«ãŒã°ãªãŒã³å±éãšã¯äœã§ãã?
Blue-Green ãããã€ã¡ã³ãã¯ãã¢ããªã±ãŒã·ã§ã³ãé ä¿¡ããæ¹æ³ã§ãã 補é ãšã³ãã¯ã©ã€ã¢ã³ããèªååŽã®å€æŽãèªèããªããããªæ¹æ³ã§ã ã€ãŸãããŒãã§ã¢ããªã±ãŒã·ã§ã³ããããã€ããŸãã ããŠã³ã¿ã€ã .
å€å žç㪠BG Deploy ã¹ããŒã ã¯ã以äžã®ç»åã®ããã«ãªããŸãã
- éå§æç¹ã§ã¯ããŸã£ããåãã³ãŒããã¢ããªã±ãŒã·ã§ã³ããããžã§ã¯ããæ〠2 å°ã®ç©çãµãŒããŒããããã«ãŒã¿ãŒ (ãã©ã³ãµãŒ) ããããŸãã
- ã«ãŒã¿ãŒã¯æåã«ãã¹ãŠã®ãªã¯ãšã¹ããããããã®ãµãŒã㌠(ã°ãªãŒã³).
- å床ãªãªãŒã¹ããå¿ èŠãããæç¹ã§ããããžã§ã¯ãå šäœãå¥ã®ãµãŒããŒã§æŽæ°ãããŸã (ãã«ãŒ)ãçŸåšãªã¯ãšã¹ããåŠçããŠããŸããã
- ã³ãŒãããªã³ã«ããåŸ é ãµãŒããŒãå®å šã«æŽæ°ããããšãã«ãŒã¿ãŒã«åãæ¿ããã³ãã³ããäžããããŸãã ã°ãªãŒã³ Ма ãã«ãŒ ãµãŒãã
- ããã§ããã¹ãŠã®ã¯ã©ã€ã¢ã³ãã«ã³ãŒãã®å®è¡çµæã衚瀺ãããŸãã é ãµãŒãã
- ãã°ããã®éã ã°ãªãŒã³ ãµãŒããŒã¯ãå±éã倱æããå Žåã®ããã¯ã¢ãããšããŠæ©èœããŸãã ãã«ãŒ ãµãŒããŒã«æ¥ç¶ããé害ããã°ãçºçããå Žåãã«ãŒã¿ãŒã¯ãŠãŒã¶ãŒ ãããŒãå ã®ãµãŒããŒã«åãæ¿ããŸãã ã°ãªãŒã³ ãµãŒããŒã«å€ãå®å®ããŒãžã§ã³ãã€ã³ã¹ããŒã«ãããæ°ããã³ãŒããæ¹èšãšãã¹ãã®ããã«éä¿¡ãããŸãã
- ãããŠããã»ã¹ã®æåŸã«ãåãæ¹æ³ã§æŽæ°ãããŸã ã°ãªãŒã³ ãµãŒãã æŽæ°åŸãã«ãŒã¿ãŒã¯ãªã¯ãšã¹ã ãããŒãå ã®ç¶æ ã«åãæ¿ããŸãã ã°ãªãŒã³ ãµãŒãã
ã©ãããšãŠãè¯ãèŠããŸãããäžèŠãããšäœã®åé¡ããªãã¯ãã§ãã
ããããç§ãã¡ã¯çŸä»£äžçã«çããŠãããããå€å
žçãªã¹ããŒã ã§ç€ºãããŠãããããªç©ççãªã¹ã€ããã³ã°ã䌎ããªãã·ã§ã³ã¯ç§ãã¡ã«ã¯é©ããŠããŸããã ãšããããæ
å ±ãèšé²ããŠãããŸããåŸã§ç¢ºèªããŸãã
æªãã¢ããã€ã¹ãšè¯ãã¢ããã€ã¹
å 責äºé : 以äžã®äŸã¯ãç§ã䜿çšãããŠãŒãã£ãªãã£/æ¹æ³è«ã瀺ããŠããŸããåæ§ã®æ©èœãæã€ä»£æ¿æ段ããŸã£ãã䜿çšã§ããŸãã
ã»ãšãã©ã®äŸã¯ãäœããã®åœ¢ã§ Web éçº (ããã¯é©ãã¹ãããšã§ã)ãPHP ããã³ Docker ãšé¢é£ããŠããŸãã
以äžã®æ®µèœã§ã¯ãç¹å®ã®äŸã䜿çšããŠãå åã®äœ¿çšæ³ã«ã€ããŠç°¡åã«å®è·µçã«èª¬æããŸãããã®ãããã¯ã«é¢ããçè«ãããã«è©³ããç¥ãããå Žåã¯ãäžã®ãªã³ã¯ããå ã®ãœãŒã¹ãåç §ããŠãã ããã
1. ã³ãŒãããŒã¹
FTP ãš FileZilla ã䜿çšããŠãã¡ã€ã«ãäžåºŠã« XNUMX ã€ãã€ãµãŒããŒã«ã¢ããããŒãããŸããå®çšŒåãµãŒããŒä»¥å€ã®å Žæã«ã¯ã³ãŒããä¿åããªãã§ãã ããã
ãããžã§ã¯ãã«ã¯åžžã«åäžã®ã³ãŒã ããŒã¹ãå¿ èŠã§ããã€ãŸãããã¹ãŠã®ã³ãŒã㯠XNUMX ã€ã®ã³ãŒã ããŒã¹ããæ¥ãŠããŸãã Gitã® ãªããžããªã ãµãŒã㌠(æ¬çªãã¹ããŒãžã³ã°ãtest1ãtest2...) ã¯ãXNUMX ã€ã®å ±éãªããžããªã®ãã©ã³ãããã®ã³ãŒãã䜿çšããŸãã ãã®ããã«ããŠãã³ãŒãã®äžè²«æ§ãå®çŸããŸãã
2. äŸåé¢ä¿
ãã©ã«ããŒå ã®ãã¹ãŠã®ã©ã€ãã©ãªããããžã§ã¯ãã®ã«ãŒãã«çŽæ¥ããŠã³ããŒãããŸãã æ°ããã³ãŒããçŸåšã®ããŒãžã§ã³ã®ã©ã€ãã©ãªãå«ãŸãããã©ã«ããŒã«è»¢éããã ãã§æŽæ°ã§ããŸãã ããã« 20 åã®ãµãŒãã¹ãå®è¡ãããŠãããã¹ã ãµãŒããŒã«ãå¿ èŠãªãŠãŒãã£ãªãã£ããã¹ãŠçŽæ¥ã€ã³ã¹ããŒã«ããŸãã
ãããžã§ã¯ãã«ã¯ãåžžã«æ確ã«ç解ã§ããäŸåé¢ä¿ã®ãªã¹ããå¿
èŠã§ã (äŸåé¢ä¿ãšã¯ç°å¢ã®ããšãæå³ããŸã)ã ãã¹ãŠã®äŸåé¢ä¿ãæ瀺çã«å®çŸ©ããåé¢ããå¿
èŠããããŸãã
äŸãšããŠèŠãŠã¿ãŸããã äœæ²å®¶ О ããã«ãŒ.
äœæ²å®¶ â PHP ã«ã©ã€ãã©ãªãã€ã³ã¹ããŒã«ã§ããããã«ããããã±ãŒãž ãããŒãžã£ãŒã Composer ã§ã¯ãããŒãžã§ã³ãå³å¯ãŸãã¯å€§ãŸãã«æå®ããæ瀺çã«å®çŸ©ããããšãã§ããŸãã ãµãŒããŒäžã«ã¯ 20 ã®ç°ãªããããžã§ã¯ããååšãããããšãã§ããåãããžã§ã¯ãã«ã¯ãäºãã«ç¬ç«ããããã±ãŒãžãšã©ã€ãã©ãªã®å人çšãªã¹ãããããŸãã
ããã«ãŒ â ã¢ããªã±ãŒã·ã§ã³ãå®è¡ãããç°å¢ãå®çŸ©ããã³åé¢ã§ãããŠãŒãã£ãªãã£ã ãããã£ãŠãcomposer ã®å Žåãšåæ§ã«ãã¢ããªã±ãŒã·ã§ã³ãäœã§åäœãããããã培åºçã«å€æã§ããŸãã ç¹å®ã®ããŒãžã§ã³ã® PHP ãéžæãããããžã§ã¯ããåäœããããã«å¿ èŠãªããã±ãŒãžã®ã¿ãã€ã³ã¹ããŒã«ããäœåãªãã®ã¯è¿œå ããŸããã ãããŠæãéèŠãªããšã¯ããã¹ã ãã·ã³ãä»ã®ãããžã§ã¯ãã®ããã±ãŒãžãç°å¢ã«å¹²æžããªãããšã§ãã ã€ãŸããDocker ãä»ããŠå®è¡ãããŠãããµãŒããŒäžã®ãã¹ãŠã®ãããžã§ã¯ãã¯ãããããããã±ãŒãžã®ã»ãããšãŸã£ããç°ãªãç°å¢ã䜿çšã§ããŸãã
3. æ§æ
æ§æãå®æ°ãšããŠã³ãŒãã«çŽæ¥ä¿åããŸãã ãã¹ã ãµãŒããŒçšã«å¥ã®å®æ°ãå®çšŒåçšã«å¥ã®å®æ°ã if else æ§é ã䜿çšããŠãç°å¢ã«å¿ããã¢ããªã±ãŒã·ã§ã³ã®æäœããããžã§ã¯ãã®ããžãã¹ ããžãã¯ã«çŽæ¥çµã³ä»ããŸãã
èšå® - ãããããããžã§ã¯ãã®ãããã€ã¡ã³ããç°ãªãå¯äžã®æ¹æ³ã§ãã çæ³çã«ã¯ãèšå®ã¯ç°å¢å€æ° (env var) ãä»ããŠæž¡ãããå¿ èŠããããŸãã
ã€ãŸããè€æ°ã®æ§æãã¡ã€ã« .config.prod .config.local ãä¿åããå±éæã«ãããã®ååã .config (ã¢ããªã±ãŒã·ã§ã³ãããŒã¿ãèªã¿åãã¡ã€ã³ã®æ§æ) ã«å€æŽãããšããŠããããã¯æ£ããã¢ãããŒãã§ã¯ãããŸããããã®å Žåãæ§æããã®æ å ±ã¯ãã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³éçºè ã«å ¬éãããéçšãµãŒããŒã®ããŒã¿ãå±éºã«ãããããããšã«ãªããŸãã ãã¹ãŠã®æ§æã¯ãããã€ã¡ã³ã ã·ã¹ãã (CI/CD) ã«çŽæ¥ä¿åãããããã€ã¡ã³ãæã«ç¹å®ã®ç°å¢ã«å¿ èŠãªããŸããŸãªå€ã䜿çšããŠããŸããŸãªç°å¢çšã«çæããå¿ èŠããããŸãã
4. 第äžè ãµãŒãã¹
ç°å¢ã«å³å¯ã«é¢é£ä»ããããç¹å®ã®ç°å¢ã§ã¯åããµãŒãã¹ã«å¯ŸããŠç°ãªãæ¥ç¶ã䜿çšããŸãã
å®ã¯ããã®ç¹ã¯èšå®ã«é¢ããç¹ãšéåžžã«éãªããŸãããã®ç¹ããªããã°éåžžã®èšå®ããŒã¿ãäœæããããšãã§ãããäžè¬ã«èšå®æ©èœããŒãã«ãªã£ãŠããŸããŸãã
ãã¥ãŒ ãµãŒããŒãããŒã¿ããŒã¹ããã£ãã·ã¥ ãµãŒãã¹ãªã©ã®å€éšãµãŒãã¹ãžã®ãã¹ãŠã®æ¥ç¶ã¯ãããŒã«ã«ç°å¢ãšãµãŒãããŒãã£/éçšç°å¢ã®äž¡æ¹ã§åãã§ããå¿ èŠããããŸãã ã€ãŸããæ¥ç¶æååãå€æŽããããšã§ãã¢ããªã±ãŒã·ã§ã³ ã³ãŒããå€æŽããã«ããã€ã§ãããŒã¹ #1 ãžã®åŒã³åºããããŒã¹ #2 ã«çœ®ãæããããšãã§ããŸãã ãããã¯ãä»åŸã®äŸãšããŠããµãŒãã¹ãã¹ã±ãŒãªã³ã°ãããšãã«ãè¿œå ã®ãã£ãã·ã¥ ãµãŒããŒã«å¯ŸããŠç¹å¥ãªæ¹æ³ã§æ¥ç¶ãæå®ããå¿ èŠããªããªããŸãã
5. ãã«ãããªãªãŒã¹ãå®è¡
ãµãŒããŒäžã«ã¯ã³ãŒãã®æçµããŒãžã§ã³ã®ã¿ãååšãããªãªãŒã¹ãããŒã«ããã¯ããå¯èœæ§ã¯ãããŸããã ãã£ã¹ã¯å®¹éãåããå¿ èŠã¯ãããŸããã ãšã©ãŒããã£ãŠãã³ãŒããæ¬çªç°å¢ã«ãªãªãŒã¹ã§ãããšèãã人ã¯ãæªãããã°ã©ãã§ãã
å°å ¥ã®ãã¹ãŠã®æ®µéã¯äºãã«åé¢ãããŠããå¿ èŠããããŸãã
ããŒã«ããã¯ãããã£ã³ã¹ããããŸãã ã¯ã€ã㯠ã¢ã¯ã»ã¹ã§ä¿åãããã¢ããªã±ãŒã·ã§ã³ã®å€ãã³ã㌠(ãã§ã«çµã¿ç«ãŠãããæŠéã®æºåãã§ããŠãã) ã䜿çšããŠãªãªãŒã¹ãäœæããŸããããã«ããããšã©ãŒãçºçããå Žåã«å€ãããŒãžã§ã³ã埩å ã§ããŸãã ã€ãŸããæ¡ä»¶ä»ãã§ãã©ã«ããŒãååšããŸã ãªãªãŒã¹ ãšãã©ã«ã㌠çŸåšãå±éãšã¢ã»ã³ããªãæ£åžžã«å®äºãããšããã©ã«ããŒã çŸåš å éšã«ããæ°ãããªãªãŒã¹ãžã®ã·ã³ããªã㯠ãªã³ã¯ã«ãã£ãŠãªã³ã¯ãããŠããŸã ãªãªãŒã¹ åŸæ¥ã®ãªãªãŒã¹çªå·ã®ååãä»ããããŠããŸãã
ããã§ãBlue-Green ãããã€ã¡ã³ããæãåºããŸããããã«ãããã³ãŒãéã®åãæ¿ãã ãã§ãªãããã¹ãŠã®ãªãœãŒã¹éãããã¹ãŠãããŒã«ããã¯ã§ããç°å¢éã®åãæ¿ããå¯èœã«ãªããŸãã
6. ããã»ã¹
ã¢ããªã±ãŒã·ã§ã³ã®ç¶æ ããŒã¿ãã¢ããªã±ãŒã·ã§ã³èªäœå ã«çŽæ¥ä¿åããŸãã ã¢ããªã±ãŒã·ã§ã³èªäœã® RAM å ã®ã»ãã·ã§ã³ã䜿çšããŸãã ãµãŒãããŒãã£ã®ãµãŒãã¹éã§å¯èœãªéãå ±æã䜿çšããŸãã ã¢ããªã±ãŒã·ã§ã³ãæã€ããšãã§ããããã»ã¹ã¯ XNUMX ã€ã ãã§ãããã¹ã±ãŒãªã³ã°ã¯ã§ããªããšããäºå®ã«äŸåããŠãã ããã
ã»ãã·ã§ã³ã«é¢ããŠã¯ããµãŒãããŒã㣠ãµãŒãã¹ (memcachedãredis) ã«ãã£ãŠå¶åŸ¡ããããã£ãã·ã¥ã«ã®ã¿ããŒã¿ãä¿åããŸãããã®ããã20 åã®ã¢ããªã±ãŒã·ã§ã³ ããã»ã¹ãå®è¡ãããŠããå Žåã§ãããã£ãã·ã¥ã«ã¢ã¯ã»ã¹ããããã»ã¹ã®ãããããã¯ã©ã€ã¢ã³ããšã®äœæ¥ãç¶ç¶ã§ããŸãããŠãŒã¶ãŒãå¥ã®ããã»ã¹ã§ã¢ããªã±ãŒã·ã§ã³ãæäœããŠãããšããšåãç¶æ ã§ãã ãã®ã¢ãããŒãã§ã¯ã䜿çšãããµãŒãããŒã㣠ãµãŒãã¹ã®ã³ããŒãäœåã§ãã£ãŠãããã¹ãŠãæ£åžžã«åäœããããŒã¿ãžã®ã¢ã¯ã»ã¹ã«åé¡ããªãããšãããããŸãã
7. ããŒããã€ã³ãã£ã³ã°
Web ãµãŒããŒã®ã¿ããµãŒãããŒãã£ã®ãµãŒãã¹ãšé£æºããæ¹æ³ãç¥ã£ãŠããå¿
èŠããããŸãã ããã«è¯ãã®ã¯ããµãŒãããŒãã£ã®ãµãŒãã¹ã Web ãµãŒããŒå
ã«çŽæ¥ã€ã³ã¹ããŒã«ããããšã§ãã ããšãã°ãApache ã® PHP ã¢ãžã¥ãŒã«ãšããŠã
ãã¹ãŠã®ãµãŒãã¹ã¯ãããã€ãã®ã¢ãã¬ã¹ãšããŒã (localgost:5432ãlocalhost:3000ãnginx:80ãphp-fpm:9000) ãžã®ã¢ã¯ã»ã¹ãéããŠçžäºã«ã¢ã¯ã»ã¹ã§ããå¿
èŠããããŸããã€ãŸããnginx ãã php-fpm ãšpostgresãphp-fpmããpostgresãnginxã«ç§»è¡ããå®éã«ã¯åãµãŒãã¹ããå¥ã®ãµãŒãã¹ã«ã¢ã¯ã»ã¹ã§ããŸãã ããããããšã§ããµãŒãã¹ã®å®è¡å¯èœæ§ãå¥ã®ãµãŒãã¹ã®å®è¡å¯èœæ§ã«çµã³ã€ããªããªããŸãã
8. å¹³è¡åºŠ
XNUMX ã€ã®ããã»ã¹ã§åäœããŸããããããªããšãè€æ°ã®ããã»ã¹ãçžäºã«é£æºã§ããªããªããŸãã
ã¹ã±ãŒãªã³ã°ã®ããã®äœå°ãæ®ããŠãããŸãã Docker swarm ã¯ããã«æé©ã§ãã
Docker Swarm ã¯ãç°ãªããã·ã³éããã³åããã·ã³äžã®å€æ°ã®ã³ã³ããã®äž¡æ¹ã§ã³ã³ããã®ã¯ã©ã¹ã¿ãäœæããã³ç®¡çããããã®ããŒã«ã§ãã
swarm ã䜿çšãããšãåããã»ã¹ã«å²ãåœãŠããªãœãŒã¹ã®æ°ãšãèµ·åããåããµãŒãã¹ã®ããã»ã¹ã®æ°ã決å®ã§ããŸããå éšãã©ã³ãµãŒã¯ãç¹å®ã®ããŒãã§ããŒã¿ãåä¿¡ãããšããã®ããŒã¿ãèªåçã«ããã»ã¹ã«ãããã·ããŸãã ãããã£ãŠããµãŒããŒã®è² è·ãå¢å ããããšã確èªããŠãããã»ã¹ãè¿œå ããŠãç¹å®ã®ããã»ã¹ã®è² è·ã軜æžã§ããŸãã
9. 䜿ãæšãŠå¯èœæ§
ããã»ã¹ãããŒã¿ãæäœããããã«ãã¥ãŒã䜿çšããªãã§ãã ããã XNUMX ã€ã®ããã»ã¹ã匷å¶çµäºãããšãã¢ããªã±ãŒã·ã§ã³å šäœã«åœ±é¿ãåã¶ã¯ãã§ãã XNUMX ã€ã®ãµãŒãã¹ãããŠã³ãããšããã¹ãŠãããŠã³ããŸãã
åããã»ã¹ãšãµãŒãã¹ã¯ãã€ã§ããªãã«ããããšãã§ãããããä»ã®ãµãŒãã¹ã«åœ±é¿ãäžããããšã¯ãããŸãã (ãã¡ãããããã¯ããã®ãµãŒãã¹ãå¥ã®ãµãŒãã¹ã§äœ¿çšã§ããªããªããšããæå³ã§ã¯ãããŸãããããã®ãµãŒãã¹ã®åŸã«å¥ã®ãµãŒãã¹ããªãã«ãªããªããšããæå³ã§ã¯ãããŸãã)ã ãã¹ãŠã®ããã»ã¹ã¯æ£åžžã«çµäºããå¿ èŠããããŸããããããããšã§ãããã»ã¹ãçµäºããŠãããŒã¿ãæå·ããã次åé»æºãå ¥ãããšãã«ã·ã¹ãã ãæ£åžžã«åäœããŸãã ã€ãŸããç·æ¥çµäºãçºçããå Žåã§ããããŒã¿ãæå·ããããšã¯ãããŸãã (ãã©ã³ã¶ã¯ã·ã§ã³ ã¡ã«ããºã ã¯ããã§é©åã§ãããããŒã¿ããŒã¹å ã®ã¯ãšãªã¯ã°ã«ãŒãã§ã®ã¿æ©èœããã°ã«ãŒãããã®å°ãªããšã XNUMX ã€ã®ã¯ãšãªã倱æãããããšã©ãŒãçºçããå Žåãã°ã«ãŒãããã®ä»ã®ã¯ãšãªã¯å®éã«ã¯æçµçã«å€±æããŸãã)ã
10. ã¢ããªã±ãŒã·ã§ã³éçº/éçšã®åçæ§
ã¢ããªã±ãŒã·ã§ã³ã®å®çšŒåããŒãžã§ã³ãã¹ããŒãžã³ã° ããŒãžã§ã³ãããã³ããŒã«ã« ããŒãžã§ã³ã¯ç°ãªãå¿ èŠããããŸãã å®çšŒåç°å¢ã§ã¯ Yii Lite ãã¬ãŒã ã¯ãŒã¯ã䜿çšããããŒã«ã«ã§ã¯ Yii ã䜿çšãããããå®çšŒåç°å¢ã§ã¯ããé«éã«åäœããŸãã
å®éã«ã¯ããã¹ãŠã®ãããã€ã¡ã³ããšã³ãŒãã®æäœã¯ã»ãŒåäžã®ç°å¢ã«ããå¿ èŠããããŸã (ç©çããŒããŠã§ã¢ã«ã€ããŠè©±ããŠããã®ã§ã¯ãããŸãã)ã ãŸããéçºåŸæ¥å¡ã¯å¿ èŠã«å¿ããŠã³ãŒããå®çšŒåç°å¢ã«ãããã€ã§ããå¿ èŠããããŸããç¹å¥ãªèšç·Žãåãã DevOps éšéã§ã¯ãªããç¹å¥ãªåã®ãããã§ã¢ããªã±ãŒã·ã§ã³ãå®çšŒåç°å¢ã«ç§»è¡ã§ããå¿ èŠããããŸãã
Docker ãããã«åœ¹ç«ã¡ãŸãã äžèšã®ãã¹ãŠã®ç¹ãå®ãããŠããå Žåãdocker ã䜿çšãããšãæ¬çªç°å¢ãšããŒã«ã« ãã·ã³ã®äž¡æ¹ã«ç°å¢ããããã€ããããã»ã¹ã XNUMX ã€ãŸã㯠XNUMX ã€ã®ã³ãã³ããå ¥åããã ãã«ãªããŸãã
11. ãã°
ãã°ããã¡ã€ã«ãšããŒã¿ããŒã¹ã«æžã蟌ã¿ãŸãã ãã¡ã€ã«ãããŒã¿ããŒã¹ããã°ããæ¶å»ããããšã¯ãããŸããã 9000 ãã¿ãã€ãã®ããŒããã©ã€ããè³Œå ¥ããŸããããããã§åé¡ãããŸããã
ãã¹ãŠã®ãã°ã¯ã€ãã³ãã®ã¹ããªãŒã ãšããŠèæ ®ãããå¿ èŠããããŸãã ã¢ããªã±ãŒã·ã§ã³èªäœã¯ãã°ã®åŠçã«é¢äžãã¹ãã§ã¯ãããŸããã ãã°ã®æäœã«ãã£ãŠã¢ããªã±ãŒã·ã§ã³ã«åé¡ãçºçããªãããã«ããã°ã¯ stdout ã«åºåãããããudp ãªã©ã®ãããã³ã«çµç±ã§éä¿¡ãããå¿ èŠããããŸãã ããã«ã¯graylogãé©ããŠããŸãã Graylog 㯠udp çµç±ã§ãã¹ãŠã®ãã°ãåä¿¡ããŸã (ãã®ãããã³ã«ã§ã¯ããã±ããã®åä¿¡æåã«é¢ããå¿çãåŸ ã€å¿ èŠããããŸãã) ãã¢ããªã±ãŒã·ã§ã³ã«å¹²æžããããšã¯ãªãããã°ã®æ§é åãšåŠçã®ã¿ãåŠçããŸãã ã¢ããªã±ãŒã·ã§ã³ ããžãã¯ã¯ããã®ãããªã¢ãããŒãã§åäœããããã«å€æŽãããŸããã
12. 管çã¿ã¹ã¯
ããŒã¿ãããŒã¿ããŒã¹ãªã©ãæŽæ°ããã«ã¯ãAPIã§å¥éäœæãããšã³ããã€ã³ãã䜿çšããŸããããã2åé£ç¶ã§å®è¡ãããšããã¹ãŠãè€è£œãããŸãã ããããããªãã¯æãã§ã¯ãããŸããã2 åã¯ãªãã¯ããããšã¯ãããŸããã移è¡ããå¿ èŠã¯ãããŸããã
ãã¹ãŠã®ç®¡çã¿ã¹ã¯ã¯ããªãªãŒã¹ ã¬ãã«ã§ãã¹ãŠã®ã³ãŒããšåãç°å¢ã§å®è¡ããå¿ èŠããããŸãã ã€ãŸããããŒã¿ããŒã¹ã®æ§é ãå€æŽããå¿ èŠãããå Žåãåã®ååãå€æŽããããããžã¥ã¢ã«ãªããŒã¿ããŒã¹ç®¡çããŒã«ã䜿çšããŠæ°ããåãè¿œå ãããããããšã¯æåã§ã¯è¡ãããŸããã ãã®ãããªãã®ã«å¯ŸããŠã¯ã移è¡ãšããåå¥ã®ã¹ã¯ãªãããäœæããŸããããã¯ãã©ãã§ãããã¹ãŠã®ç°å¢ã§åãæ¹æ³ã§å®è¡ãããå ±éã§ããããããçµæãåŸãããŸãã ãããžã§ã¯ãã«ããŒã¿ãå ¥åãããªã©ãä»ã®ãã¹ãŠã®ã¿ã¹ã¯ã«ã€ããŠããåæ§ã®æ¹æ³è«ã䜿çšããå¿ èŠããããŸãã
PHPãLaravelãLaradockãDocker-Compose ã§ã®å®è£ äŸ
PS ãã¹ãŠã®äŸã¯ MacOS ã§äœæãããŸããã ãããã®ã»ãšãã©ã¯ Linux ã«ãé©ããŠããŸãã Windows ãŠãŒã¶ãŒã®çæ§ãç³ãèš³ãããŸããããç§ã¯é·ãé Windows ã䜿ã£ãŠä»äºãããŠããŸããã§ããã
PC ã«ã©ã®ããŒãžã§ã³ã® PHP ãã€ã³ã¹ããŒã«ãããŠããããäœãã€ã³ã¹ããŒã«ãããŠããªãç¶æ³ãæ³åããŠã¿ãŸãããã
ææ°ããŒãžã§ã³ã® docker ãš docker-compose ãã€ã³ã¹ããŒã«ããŸãã ïŒããã¯ã€ã³ã¿ãŒãããã§èŠã€ããããšãã§ããŸãïŒ
docker -v &&
docker-compose -v
1.å
¥ããŸã
git clone https://github.com/Laradock/laradock.git &&
ls
Laradock ã«ã€ããŠã¯ãå€ãã®ã³ã³ãããŒãè£å©çãªãã®ãå«ãŸããŠãããéåžžã«ã¯ãŒã«ãªãã®ã ãšèšããŸãã ãã ããåé·æ§ããããããéçšç°å¢ã§ Laradock ãå€æŽããã«ãã®ãŸãŸäœ¿çšããããšã¯ãå§ãããŸããã Laradock ã®äŸã«åºã¥ããŠç¬èªã®ã³ã³ãããäœæããããšããå§ãããŸããããã«ãããã¹ãŠã®ãã®ãåæã«å¿
èŠãšãã人ã¯ããªããããããæé©åãããŸãã
2. ã¢ããªã±ãŒã·ã§ã³ãå®è¡ããããã« Laradock ãæ§æããŸãã
cd laradock &&
cp env-example .env
2.1. äœããã®ãšãã£ã¿ã§habrãã£ã¬ã¯ããª(laradockã®ã¯ããŒã³ãäœæããã芪ãã©ã«ã)ãéããŸãã (ç§ã®PHPStormã®å Žå)
ãã®æ®µéã§ã¯ããããžã§ã¯ãã«ååãä»ããã ãã§ãã
2.2. ã¯ãŒã¯ã¹ããŒã¹ã€ã¡ãŒãžãèµ·åããŸãã (ããªãã®å Žåãã€ã¡ãŒãžã®æ§ç¯ã«ã¯æéãããããŸã)
ã¯ãŒã¯ã¹ããŒã¹ã¯ãéçºè
ã«ä»£ãã£ãŠãã¬ãŒã ã¯ãŒã¯ãæäœããããã«ç¹å¥ã«çšæãããã€ã¡ãŒãžã§ãã
ã䜿çšããŠã³ã³ããå ã«å ¥ããŸã
docker-compose up -d workspace &&
docker-compose exec workspace bash
2.3. Laravelã®ã€ã³ã¹ããŒã«
composer create-project --prefer-dist laravel/laravel application
2.4. ã€ã³ã¹ããŒã«åŸããããžã§ã¯ããå«ãŸãããã£ã¬ã¯ããªãäœæãããŠãããã©ããã確èªããcompose ã匷å¶çµäºããŸãã
ls
exit
docker-compose down
2.5. PHPStorm ã«æ»ãã.env ãã¡ã€ã«å
ã® laravel ã¢ããªã±ãŒã·ã§ã³ãžã®æ£ãããã¹ãèšå®ããŸãããã
3. ãã¹ãŠã®ã³ãŒãã Git ã«è¿œå ããŸãã
ãããè¡ãã«ã¯ãGithub (ãŸãã¯ä»ã®å Žæ) ã«ãªããžããªãäœæããŸãã ã¿ãŒããã«ã§ habr ãã£ã¬ã¯ããªã«ç§»åãã次ã®ã³ãŒããå®è¡ããŠã¿ãŸãããã
echo "# habr-12factor" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin [email protected]:nzulfigarov/habr-12factor.git # зЎеÑÑ Ð±ÑÐŽÐµÑ ÑÑÑлка Ма Ð²Ð°Ñ ÑепП
git push -u origin master
git status
ãã¹ãŠãé 調ãã©ããã確èªããŠã¿ãŸãããã
䟿å®äžãGit ã«ã¯äœããã®ããžã¥ã¢ã« ã€ã³ã¿ãŒãã§ã€ã¹ã䜿çšããããšããå§ãããŸããç§ã®å Žåã¯æ¬¡ã®ãšããã§ãã
4. åºçºããŸãããïŒ
éå§ããåã«ãããŒã 80 ãš 443 ã«äœããã³ã°ããŠããªãããšã確èªããŠãã ããã
docker-compose up -d nginx php-fpm
ãããã£ãŠãç§ãã¡ã®ãããžã§ã¯ã㯠3 ã€ã®åå¥ã®ãµãŒãã¹ã§æ§æãããŠããŸãã
- nginx - ãŠã§ããµãŒããŒ
- php-fpm - WebãµãŒããŒãããªã¯ãšã¹ããåä¿¡ããããã®php
- ã¯ãŒã¯ã¹ããŒã¹ - éçºè åãã® php
çŸæç¹ã§ã¯ã4 ç¹äž 12 ç¹ãæºããã¢ããªã±ãŒã·ã§ã³ãäœæããããšãã§ããŸããã
1. ã³ãŒãããŒã¹ â ãã¹ãŠã®ã³ãŒã㯠XNUMX ã€ã®ãªããžããªã«ãããŸã (泚æ: laravel ãããžã§ã¯ãå ã« docker ãè¿œå ããã®ãæ£ãããããããŸããããããã¯éèŠã§ã¯ãããŸãã)ã
2. äŸåé¢ä¿ - ãã¹ãŠã®äŸåé¢ä¿ã¯ãapplication/composer.json ãšåã³ã³ãããŒã®å Dockerfile ã«æ瀺çã«æžã蟌ãŸããŸãã
3. æ¯æŽãµãŒãã¹ â åãµãŒãã¹ (php-fomãnignxãworkspace) ã¯ç¬èªã®ç掻ãéããå€éšããæ¥ç¶ãããŠãããXNUMX ã€ã®ãµãŒãã¹ãæäœããå Žåããã XNUMX ã€ã®ãµãŒãã¹ã¯åœ±é¿ãåããŸããã
4. ÐÑПÑеÑÑÑ â åãµãŒãã¹ã¯ XNUMX ã€ã®ããã»ã¹ã§ãã åãµãŒãã¹ã¯å éšç¶æ ãç¶æããŸããã
5. ããŒããã€ã³ãã£ã³ã°
docker ps
ã芧ã®ãšãããåãµãŒãã¹ã¯ç¬èªã®ããŒãã§å®è¡ãããä»ã®ãã¹ãŠã®ãµãŒãã¹ã«ã¢ã¯ã»ã¹ã§ããŸãã
6. 䞊ååŠç
Docker ã䜿çšãããšãåããµãŒãã¹ã®è€æ°ã®ããã»ã¹ãçæãããããã®éã§èªåçã«è² è·åæ£ãè¡ãããšãã§ããŸãã
ã³ã³ãããåæ¢ããŠãã©ã°ãå®è¡ããŸããã - èŠæš¡
docker-compose down &&
docker-compose up -d --scale php-fpm=3 nginx php-fpm
ã芧ã®ãšãããphp-fpm ã³ã³ããã®ã³ããŒãäœæãããŠããŸãã ãã®ã³ã³ãããæäœããéã«ã¯äœãå€æŽããå¿
èŠã¯ãããŸããã ãŸããåŒãç¶ãããŒã 9000 ã§ã¢ã¯ã»ã¹ããDocker ãã³ã³ããéã®è² è·ã調æŽããŸãã
7. 䜿ãæšãŠæ§ - åã³ã³ããã¯ãä»ã®ã³ã³ãããå·ã€ããããšãªãåæ¢ã§ããŸãã ã³ã³ãããŒãåæ¢ãŸãã¯åèµ·åããŠãããã®åŸã®èµ·åæã®ã¢ããªã±ãŒã·ã§ã³ã®åäœã«ã¯åœ±é¿ããŸããã åã³ã³ããã¯ãã€ã§ãæã¡äžããããšãã§ããŸãã
8. ã¢ããªã±ãŒã·ã§ã³éçº/éçšã®åçæ§ - ç§ãã¡ã®ç°å¢ã¯ãã¹ãŠåãã§ãã éçšç°å¢ã®ãµãŒããŒäžã§ã·ã¹ãã ãå®è¡ãããšãã³ãã³ããäœãå€æŽããå¿ èŠããªããªããŸãã ãã¹ãŠåãããã« Docker ããŒã¹ã«ãªããŸãã
9. ãã®ã³ã° â ãããã®ã³ã³ããå ã®ãã¹ãŠã®ãã°ã¯ã¹ããªãŒã ã«éãããDocker ã³ã³ãœãŒã«ã«è¡šç€ºãããŸãã ïŒãã®å Žåãå®éãä»ã®æäœã容åšã®å Žåãæå ¥ããããªããšãã®ããã«ãªããªãå¯èœæ§ããããŸãïŒ
docker-compose logs -f
ãã ããPHP ãš Nginx ã®ããã©ã«ãå€ã§ããã¡ã€ã«ã«ãã°ãæžã蟌ãŸãããšããèœãšãç©ŽããããŸãã 12ã®èŠçŽ ãæºããããã«ã¯ã ç¡å¹ã«ãã åã³ã³ããã®æ§æå
ã®ãã¡ã€ã«ã«ãã°ãåå¥ã«æžã蟌ã¿ãŸãã
Docker ã¯ãæšæºåºåã ãã§ãªããäžã§èª¬æãã Graylog ãªã©ã«ããã°ãéä¿¡ããæ©èœãæäŸããŸãã ãŸããgraylog å ã§ã¯ãã°ãèªç±ã«æäœã§ããã¢ããªã±ãŒã·ã§ã³ã¯ããã«ãŸã£ããæ°ã¥ããŸããã
10. 管çã¿ã¹ã¯ â ãã¹ãŠã®ç®¡çã¿ã¹ã¯ã¯ã12 èŠçŽ ã¢ããªã±ãŒã·ã§ã³ã®äœæè ã®åžæã©ããã«ãè·äººããŒã«ã®ãããã§ãlaravel ã«ãã£ãŠè§£æ±ºãããŸãã
äŸãšããŠãããã€ãã®ã³ãã³ããã©ã®ããã«å®è¡ããããã瀺ããŸãã
ã³ã³ããã«å
¥ããŸãã
docker-compose exec workspace bash
php artisan list
ããã§ãä»»æã®ã³ãã³ãã䜿çšã§ããããã«ãªããŸããã (ããŒã¿ããŒã¹ãšãã£ãã·ã¥ãæ§æããŠããªããããã³ãã³ãã®ååã¯æ£ããå®è¡ãããªãããšã«æ³šæããŠãã ãããã³ãã³ãã¯ãã£ãã·ã¥ãšããŒã¿ããŒã¹ã§åäœããããã«èšèšãããŠããããã§ã)ã
11. èšå® ããã³12ã ãã«ãããªãªãŒã¹ãå®è¡
ãã®éšåã Blue-Green ãããã€ã¡ã³ãã«æ§ãããã£ãã®ã§ããããã®èšäºã§ã¯åºãããããšãå€æããŸããã ããã«ã€ããŠã¯å¥ã®èšäºãæžããŸãã
äžèšã§èšãã°ããã®ã³ã³ã»ããã¯æ¬¡ã®ãã㪠CI/CD ã·ã¹ãã ã«åºã¥ããŠããŸãã ãžã§ã³ãã³ãº О Gitlab CIã ã©ã¡ãã®å Žåããç¹å®ã®ç°å¢ã«é¢é£ä»ããããç°å¢å€æ°ãèšå®ã§ããŸãã ãããã£ãŠããã®ç¶æ³ã§ã¯ãç¹ c ãæºããããŸãã æ§æ.
ãããŠãã®ç¹ã«ã€ããŠã¯ã ãã«ãããªãªãŒã¹ãå®è¡ ãšããååã®çµã¿èŸŒã¿é¢æ°ã«ãã£ãŠè§£æ±ºãããŸã ãã€ãã©ã€ã³.
ãã€ãã©ã€ã³ ã䜿çšãããšãå±éããã»ã¹ãå€ãã®æ®µéã«åå²ããã¢ã»ã³ããªããªãªãŒã¹ãå®è¡ã®å段éã匷調ã§ããŸãã ãŸããPipeline ã§ã¯ãããã¯ã¢ãããªã©ãããããã®ãäœæã§ããŸãã ç¡éã®å¯èœæ§ãç§ããããŒã«ã§ãã
ã¢ããªã±ãŒã·ã§ã³ã³ãŒãã¯æ¬¡ã®å Žæã«ãããŸã
ãã®ãªããžããªãè€è£œãããšãã¯ããµãã¢ãžã¥ãŒã«ãåæåããããšãå¿ããªãã§ãã ããã
PS: ãããã®ã¢ãããŒãã¯ãã¹ãŠãä»ã®ãŠãŒãã£ãªãã£ãããã°ã©ãã³ã°èšèªã§ã䜿çšã§ããŸãã éèŠãªããšã¯ãæ¬è³ªã¯å€ãããªããšããããšã§ãã
åºæïŒ habr.com