ããŒã 1: ãŠã§ã/Android
泚æ: ãã®èšäºã¯å
ã®èšäºã®ãã·ã¢èªãžã®ç¿»èš³ã§ã
çŸåšãDevOps ã®å°éåé㯠IT æ¥çã§æãéèŠãé«ãåéã® XNUMX ã€ã§ãã 人æ°ã®æ±äººãµã€ããéããŠçµŠäžã§ãã£ã«ã¿ãŒãããšãDevOps é¢é£ã®ä»äºããªã¹ãã®äžçªäžã«ããããšãããããŸãã ãã ããããã¯äž»ã«ãäžçŽãã®ããžã·ã§ã³ãæããŠãããåè£è
ãé«åºŠãªã¹ãã«ããã¯ãããžãŒãããŒã«ã®ç¥èãæã£ãŠããããšãæå³ããŠããããšãç解ããããšãéèŠã§ãã ããã«ã¯ãäžæã®ãªãçç£éå¶ã«äŒŽãé«åºŠãªè²¬ä»»ã䌎ããŸãã ããããç§ãã¡ã¯ DevOps ãäœãªã®ããå¿ãå§ããŠããŸããã åœåã¯ãç¹å®ã®äººç©ãéšéã察象ãšãããã®ã§ã¯ãããŸããã§ããã ãã®çšèªã®å®çŸ©ãæ¢ããšãæ¹æ³è«ãå®è·µãæåå²åŠãæŠå¿µçŸ€ãªã©ãçŸããæ£ããåè©ãããããèŠã€ãããŸãã
ç§ã®å°éã¯ãã¹ãèªååãšã³ãžã㢠(QA èªååãšã³ãžãã¢) ã§ãããèªåãã¹ãã®äœæããã¹ã ãã¬ãŒã ã¯ãŒã¯ ã¢ãŒããã¯ãã£ã®éçºã ãã«é¢é£ä»ããã¹ãã§ã¯ãªããšèããŠããŸãã 2020 幎ã«ã¯ãèªååã€ã³ãã©ã¹ãã©ã¯ãã£ã«é¢ããç¥èãäžå¯æ¬ ã§ãã ããã«ããããã¹ãã®å®è¡ãããã¹ãŠã®é¢ä¿è ãžã®çµæã®æäŸãŸã§ãç®æšã«å¿ããŠèªååããã»ã¹ãèªåã§çµç¹ããããšãã§ããŸãã ãã®ãããä»äºãéè¡ããã«ã¯ DevOps ã¹ãã«ãå¿ é ãšãªããŸãã ããã¯ãã¹ãŠè¯ãããšã§ãããæ®å¿µãªããåé¡ããããŸã (ã¹ãã€ã©ãŒ: ãã®èšäºã¯ãã®åé¡ãåçŽåããããšããŠããŸãïŒã éèŠãªã®ã¯ãDevOps ã¯é£ãããšããããšã§ãã ããã¯æããã§ãããªããªããç°¡åã«å®è¡ã§ãããã®ã«äŒæ¥ã¯å€§éãæããªãããã§ããDevOps ã®äžçã«ã¯ãç¿åŸããå¿ èŠã®ããããŒã«ãçšèªãå®è·µæ¹æ³ãå€æ°ãããŸãã ããã¯ãã£ãªã¢ã®åæã«ã¯ç¹ã«é£ãããèç©ãããæè¡çµéšã«äŸåããŸãã
åºæïŒ
ããã§å°å ¥éšåãçµäºãããã®èšäºã®ç®çã«çŠç¹ãåœãŠãããšæããŸãã
ãã®èšäºã¯äœã«ã€ããŠã§ãã?
ãã®èšäºã§ã¯ããã¹ãèªååã€ã³ãã©ã¹ãã©ã¯ãã£ãæ§ç¯ããç§ã®çµéšãå ±æããŸãã ã€ã³ã¿ãŒãããäžã«ã¯ãããŸããŸãªããŒã«ãšãã®äœ¿çšæ¹æ³ã«é¢ããæ å ±æºããããããããŸãããããã§ã¯çŽç²ã«èªååãšãã芳ç¹ããããããèŠãŠãããããšæããŸãã å€ãã®èªååãšã³ãžãã¢ã¯ãéçºããããã¹ããèªå以å€ã®èª°ãå®è¡ããããã¡ã³ããã³ã¹ã«é¢å¿ãæã£ããããªãç¶æ³ãããç¥ã£ãŠãããšæããŸãã ãã®çµæããã¹ããå€ããªããæŽæ°ã«æéãè²»ããå¿ èŠããããŸãã ç¹°ãè¿ãã«ãªããŸããããã£ãªã¢ã®åæ段éã§ã¯ãããã¯éåžžã«å°é£ãªäœæ¥ã«ãªãå¯èœæ§ããããŸããç¹å®ã®åé¡ã解決ããã®ã«ã©ã®ããŒã«ã圹ç«ã€ã®ãããŸãããããã©ã®ããã«éžæãæ§æãä¿å®ããããè³¢æã«æ±ºå®ããããšã§ãã ãã¹ã¿ãŒã®äžã«ã¯ DevOps (人é) ã«å©ããæ±ãã人ãããŸãããæ£çŽã«èšããšããã®ã¢ãããŒãã¯æ©èœããŸãã ãã¹ãŠã®äŸåé¢ä¿ãææ¡ã§ããªããããå€ãã®å Žåããããå¯äžã®éžæè¢ãšãªããŸãã ããããåç¥ã®ãšãããDevOps ã¯çµç¹ãããŒã ã«å¿ããŠäŒç€Ÿå šäœã®ã€ã³ãã©ã¹ãã©ã¯ãã£ããããã€ã¡ã³ããã¢ãã¿ãªã³ã°ããã€ã¯ããµãŒãã¹ããã®ä»åæ§ã®ã¿ã¹ã¯ã«ã€ããŠèããªããã°ãªããªããããéåžžã«å€å¿ã§ãã éåžžã®ããšã§ãããèªååã¯åªå äºé ã§ã¯ãããŸããã ãã®ãããªå Žåãç§ãã¡ã¯æåããæåŸãŸã§ç§ãã¡èªèº«ã§ã§ããéãã®ããšãè¡ããªããã°ãªããŸããã ããã«ãããäŸåé¢ä¿ãæžããã¯ãŒã¯ãããŒãã¹ããŒãã¢ããããã¹ãã«ãåäžããäœãèµ·ãã£ãŠããã®ãå šäœåãææ¡ã§ããããã«ãªããŸãã
ãã®èšäºã§ã¯ãæã人æ°ã®ããããŒã«ã玹ä»ãããããã䜿çšããŠèªååã€ã³ãã©ã¹ãã©ã¯ãã£ãæ§ç¯ããæ¹æ³ã段éçã«ç€ºããŸãã åã°ã«ãŒãã¯ãå人çãªçµéšãéããŠãã¹ããããããŒã«ã«ãã£ãŠè¡šãããŸãã ããããåããã®ã䜿çšããªããã°ãªããªããšããããã§ã¯ãããŸããã ããŒã«èªäœã¯éèŠã§ã¯ãªããåºçŸããŠã¯å»ããŠãããŸãã ç§ãã¡ã®ãšã³ãžãã¢ãªã³ã°ã®èª²é¡ã¯ããªããã®ã°ã«ãŒãã®ããŒã«ãå¿ èŠãªã®ãããããŠãããã®å©ããåããŠã©ã®ãããªäœæ¥äžã®åé¡ã解決ã§ããã®ããšããåºæ¬ååãç解ããããšã§ãã ãã®ãããåã»ã¯ã·ã§ã³ã®æåŸã«ãçµç¹ã§äœ¿çšã§ããåæ§ã®ããŒã«ãžã®ãªã³ã¯ãæ®ããŠããŸãã
ãã®èšäºã«ãªããã®
ããäžåºŠç¹°ãè¿ããŸããããã®èšäºã¯ç¹å®ã®ããŒã«ã«é¢ãããã®ã§ã¯ãªããããããã¥ã¡ã³ãããã®ã³ãŒãã®æ¿å ¥ãç¹å®ã®ã³ãã³ãã®èª¬æã¯ãããŸããã ãã ããåã»ã¯ã·ã§ã³ã®æåŸã«è©³çŽ°ãªåŠç¿çšã®ãªã³ã¯ãæ®ããŠããŸãã
ããã¯æ¬¡ã®çç±ã§è¡ãããŸãã
- ãã®è³æã¯ããŸããŸãªãœãŒã¹ (ããã¥ã¡ã³ããæžç±ããã㪠ã³ãŒã¹) ã§ç°¡åã«èŠã€ããããšãã§ããŸãã
- ããã«æ·±ãæãäžãå§ãããšããã®èšäºã® 10ã20ã30 éšåãæžããªããã°ãªããŸãã (èšç»ã¯ 2 ïœ 3 åã§ãã)ã
- åãç®æšãéæããããã«ä»ã®ããŒã«ã䜿çšããããšããããããããªãã®ã§ãæéãç¡é§ã«ããããããŸããã
ç·Žç¿
ãã®è³æãããã èªãã§å¿ããããã®ã§ã¯ãªãããã¹ãŠã®èªè
ã«ãšã£ãŠæçã§ããããšãå¿ããæãã§ããŸãã ã©ã®ãããªå匷ã«ãããŠããå®è·µã¯éåžžã«éèŠãªèŠçŽ ã§ãã ãã®ããã«ç§ã¯æºåããŸãã
èšç»
æé
ãã¯ãããžãŒ
ããŒã«
1
ããŒã«ã«å®è¡ (Web/Android ã㢠ãã¹ããæºåããããŒã«ã«ã§å®è¡)
Node.jsãSeleniumãAppium
2
ããŒãžã§ã³ç®¡çã·ã¹ãã
Gitã®
3
ã³ã³ããå
DockerãSelenium ã°ãªãããSelenoid (WebãAndroid)
4
CI/CD
Gitlab CI
5
ã¯ã©ãŠããã©ãããã©ãŒã
Google Cloud Platform
6
ç·šæ
Kubernetes
7
ã³ãŒããšããŠã®ã€ã³ãã©ã¹ãã©ã¯ã㣠(IaC)
TerraformãAnsible
åéšã®æ§æ
ç©èªãæ確ã«ããããã«ãåã»ã¯ã·ã§ã³ã¯æ¬¡ã®æŠèŠã«åŸã£ãŠèª¬æãããŠããŸãã
- ãã¯ãããžãŒã®ç°¡åãªèª¬æã
- èªååã€ã³ãã©ã¹ãã©ã¯ãã£ã®äŸ¡å€ã
- ã€ã³ãã©ã¹ãã©ã¯ãã£ã®çŸåšã®ç¶æ ã®å³ã
- å匷ãžã®ãªã³ã¯ã
- åæ§ã®ããŒã«ã
1. ããŒã«ã«ã§ãã¹ããå®è¡ãã
ãã¯ãããžãŒã®ç°¡åãªèª¬æ
ããã¯ãã㢠ãã¹ããããŒã«ã«ã§å®è¡ãããã¹ããæåããããšã確èªããããã®åãªãæºåã¹ãããã§ãã å®è·µéšåã§ã¯Node.jsã䜿çšããŸãããããã°ã©ãã³ã°èšèªããã©ãããã©ãŒã ãéèŠã§ã¯ãªãã瀟å ã§äœ¿çšãããŠãããã®ã䜿çšã§ããŸãã
ãã ããèªååããŒã«ãšããŠãWeb ãã©ãããã©ãŒã ã«ã¯ Selenium WebDriver ããAndroid ãã©ãããã©ãŒã ã«ã¯ Appium ããããã䜿çšããããšããå§ãããŸãã次ã®ã¹ãããã§ã¯ããããã®ããŒã«ã§ç¹ã«åäœããããã«èª¿æŽããã Docker ã€ã¡ãŒãžã䜿çšããããã§ãã ããã«ãä»äºã®èŠä»¶ãèæ ®ãããšããããã®ããŒã«ã¯åžå Žã§æãéèŠãé«ãã§ãã
ãæ°ã¥ããããããŸããããããã§ã¯ Web ãã¹ããš Android ãã¹ãã®ã¿ãèæ ®ããŸãã æ®å¿µãªãããiOS ã¯ãŸã£ããå¥ã®è©±ã§ã (Apple ã«æè¬)ã ä»åŸã®ããŒãã§ã¯ãIOS é¢é£ã®ãœãªã¥ãŒã·ã§ã³ãšå®è·µæ¹æ³ã玹ä»ããäºå®ã§ãã
èªååã€ã³ãã©ã¹ãã©ã¯ãã£ã®äŸ¡å€
ã€ã³ãã©ã¹ãã©ã¯ãã£ã®èŠ³ç¹ããèŠããšãããŒã«ã«ã§å®è¡ããŠãäœã®äŸ¡å€ããããŸããã ãã¹ããããŒã«ã« ãã©ãŠã¶ãŒãšã·ãã¥ã¬ãŒã¿ãŒã®ããŒã«ã« ãã·ã³äžã§å®è¡ãããããšã確èªããã ãã§ãã ãããããããã«ãããããã¯å¿ èŠãªåºçºç¹ã§ãã
ã€ã³ãã©ã®çŸç¶ã€ã¡ãŒãž
æ¢çŽ¢ããããã®ãªã³ã¯
åæ§ã®ããŒã«
- Selenium/Appium ãã¹ããšçµã¿åãããä»»æã®ããã°ã©ãã³ã°èšèªã
- ãããããã¹ãã
- ãããããã¹ãã©ã³ããŒã
2. ããŒãžã§ã³ç®¡çã·ã¹ãã (Git)
ãã¯ãããžãŒã®ç°¡åãªèª¬æ
ããŒã ã§ãå人ã§ããããŒãžã§ã³ç®¡çã¯éçºã«ãããŠéåžžã«éèŠãªéšåã§ãããšèšã£ãŠãã誰ã«ãšã£ãŠã倧ããªçºèŠã§ã¯ãªãã§ãããã ããŸããŸãªæ å ±æºã«åºã¥ããšãGit ãæã人æ°ã®ãã代衚ã§ãããšèšã£ãŠãéèšã§ã¯ãããŸããã ããŒãžã§ã³ç®¡çã·ã¹ãã ã«ã¯ãã³ãŒãã®å ±æãããŒãžã§ã³ã®ä¿åã以åã®ãã©ã³ããžã®åŸ©å ããããžã§ã¯ãå±¥æŽã®ç£èŠãããã¯ã¢ãããªã©ãå€ãã®å©ç¹ããããŸãã çããããããåãã§ãæ¥ã ã®æ¥åã§äœ¿çšãããŠãããšæããŸãã®ã§ãåç¹ã«ã€ããŠè©³ããã¯èª¬æããŸããã ããããçªç¶ããã§ãªããªã£ãå Žåã¯ããã®èšäºãèªãã®ãäžæåæ¢ããã§ããã ãæ©ããã®ã®ã£ãããåããããšããå§ãããŸãã
èªååã€ã³ãã©ã¹ãã©ã¯ãã£ã®äŸ¡å€
ããã§ã次ã®ãããªåœç¶ã®è³ªåãããããšãã§ããŸããããªã圌㯠Git ã«ã€ããŠç§ãã¡ã«è©±ããŠããã®ã§ãã?ã ããã¯èª°ããç¥ã£ãŠãããéçºã³ãŒããšèªåãã¹ã ã³ãŒãã®äž¡æ¹ã«äœ¿çšããŠããŸããã 確ãã«ãã®éãã§ããããã®èšäºã§ã¯ã€ã³ãã©ã¹ãã©ã¯ãã£ã«ã€ããŠèª¬æããŠããããã®ã»ã¯ã·ã§ã³ã¯ã»ã¯ã·ã§ã³ 7: ãInfra Structure as Code (IaC)ãã®ãã¬ãã¥ãŒãšããŠæ©èœããŸãã ç§ãã¡ã«ãšã£ãŠãããã¯ããã¹ããå«ãã€ã³ãã©ã¹ãã©ã¯ãã£å šäœãã³ãŒãã®åœ¢åŒã§èšè¿°ãããããšãæå³ãããããããŒãžã§ã³ç®¡çã·ã¹ãã ãã€ã³ãã©ã¹ãã©ã¯ãã£ã«é©çšããããšãã§ããéçºã³ãŒããèªååã³ãŒããšåæ§ã®å©ç¹ãåŸãããŸãã
IaC ã«ã€ããŠã¯ã¹ããã 7 ã§è©³ãã説æããŸãããããŒã«ã« ãªããžããªãäœæããããšã§ãä»ã§ãããŒã«ã«ã§ Git ã®äœ¿çšãéå§ã§ããŸãã ãªã¢ãŒã ãªããžããªãã€ã³ãã©ã¹ãã©ã¯ãã£ã«è¿œå ãããšãå šäœåãæ¡å€§ããŸãã
ã€ã³ãã©ã®çŸç¶ã€ã¡ãŒãž
æ¢çŽ¢ããããã®ãªã³ã¯
åæ§ã®ããŒã«
3. ã³ã³ããåïŒDockerïŒ
ãã¯ãããžãŒã®ç°¡åãªèª¬æ
ã³ã³ããåãã²ãŒã ã®ã«ãŒã«ãã©ã®ããã«å€ãããã瀺ãããã«ãæ°å幎åã«æ»ã£ãŠã¿ãŸãããã åœæã人ã ã¯ã¢ããªã±ãŒã·ã§ã³ãå®è¡ããããã«ãµãŒã㌠ãã·ã³ãè³Œå ¥ããŠäœ¿çšããŠããŸããã ããããã»ãšãã©ã®å Žåãå¿ èŠãªèµ·åãªãœãŒã¹ã¯äºåã«ã¯ããããŸããã§ããã ãã®çµæãäŒæ¥ã¯é«äŸ¡ã§åŒ·åãªãµãŒããŒã®è³Œå ¥ã«è³éãæããŸãããããã®å®¹éã®äžéšã¯å®å šã«æŽ»çšãããŠããŸããã§ããã
é²åã®æ¬¡ã®æ®µéã¯ä»®æ³ãã·ã³ (VM) ã§ãæªäœ¿çšã®ãªãœãŒã¹ã«ãéã浪費ããåé¡ã解決ããŸããã ãã®ãã¯ãããžãŒã«ãããå®å šã«åé¢ãããã¹ããŒã¹ãå²ãåœãŠãåããµãŒããŒå ã§ã¢ããªã±ãŒã·ã§ã³ãäºãã«ç¬ç«ããŠå®è¡ã§ããããã«ãªããŸããã ããããæ®å¿µãªãããã©ããªãã¯ãããžãŒã«ãæ¬ ç¹ã¯ãããŸãã VM ãå®è¡ããã«ã¯å®å šãªãªãã¬ãŒãã£ã³ã° ã·ã¹ãã ãå¿ èŠã§ãCPUãRAMãã¹ãã¬ãŒãžãæ¶è²»ããOS ã«ãã£ãŠã¯ã©ã€ã»ã³ã¹ ã³ã¹ããèæ ®ããå¿ èŠããããŸãã ãããã®èŠå ã¯èªã¿èŸŒã¿é床ã«åœ±é¿ãäžãã移æ€æ§ãå°é£ã«ããŸãã
ãããŠããããã³ã³ããåã§ãã ç¹°ãè¿ããŸããããã®ãã¯ãããžãŒã¯ã³ã³ãããå®å šãª OS ã䜿çšããªããããåã®åé¡ã解決ããŸããããã«ããã倧éã®ãªãœãŒã¹ã解æŸããã移æ€æ§ã®ããã®é«éãã€æè»ãªãœãªã¥ãŒã·ã§ã³ãæäŸãããŸãã
ãã¡ãããã³ã³ããåãã¯ãããžãŒã¯æ°ãããã®ã§ã¯ãªãã70 幎代åŸåã«åããŠå°å ¥ãããŸããã åœæãå€ãã®ç 究ãéçºãè©Šã¿ãè¡ãããŸããã ãããããã®ãã¯ãããžãŒãé©å¿ãããäžè¬ã®äººãç°¡åã«ã¢ã¯ã»ã¹ã§ããããã«ããã®ã¯ Docker ã§ããã çŸåšãã³ã³ãããŒã«ã€ããŠè©±ããšããã»ãšãã©ã®å ŽåãDocker ãæããŸãã Docker ã³ã³ãããŒã«ã€ããŠè©±ããšãã¯ãLinux ã³ã³ãããŒãæå³ããŸãã Windows ããã³ macOS ã·ã¹ãã ã䜿çšããŠã³ã³ãããŒãå®è¡ã§ããŸããããã®å Žåã¯è¿œå ã®ã¬ã€ã€ãŒã衚瀺ãããããšãç解ããããšãéèŠã§ãã ããšãã°ãMac äžã® Docker ã¯ã軜éã® Linux VM å ã§ã³ã³ããããµã€ã¬ã³ãã«å®è¡ããŸãã ã³ã³ããå ã§ã® Android ãšãã¥ã¬ãŒã¿ã®å®è¡ã«ã€ããŠèª¬æãããšãã«ãã®ãããã¯ã«æ»ããŸãããã®ãããããã§ã¯ããã«è©³ãã説æããå¿ èŠãããéåžžã«éèŠãªãã¥ã¢ã³ã¹ããããŸãã
èªååã€ã³ãã©ã¹ãã©ã¯ãã£ã®äŸ¡å€
ã³ã³ããåãš Docker ãåªããŠããããšãããããŸããã ãã¹ãŠã®ããŒã«ããã¯ãããžãŒã¯åé¡ã解決ããå¿ èŠãããããããããèªååã®ã³ã³ããã¹ãã§èŠãŠã¿ãŸãããã UI ãã¹ãã®ã³ã³ããã¹ãã«ããããã¹ãèªååã®æãããªåé¡ã®æŠèŠã説æããŸãã
- Seleniumãç¹ã« Appium ãã€ã³ã¹ããŒã«ããéã®èšå€§ãªæ°ã®äŸåé¢ä¿ã
- ãã©ãŠã¶ãã·ãã¥ã¬ãŒã¿ããã©ã€ãã®ããŒãžã§ã³éã®äºææ§ã®åé¡ã
- ãã©ãŠã¶/ã·ãã¥ã¬ãŒã¿çšã®ç¬ç«ããã¹ããŒã¹ãäžè¶³ããŠããããšãããã¯äžŠåå®è¡ã®å Žåã«ç¹ã«éèŠã§ãã
- 10ã50ã100ãããã«ã¯ 1000 ã®ãã©ãŠã¶ãåæã«å®è¡ããå¿ èŠãããå Žåã管çãšä¿å®ãå°é£ã«ãªããŸãã
ããããSelenium ã¯æã人æ°ã®ããèªååããŒã«ã§ãããDocker ã¯æã人æ°ã®ããã³ã³ããåããŒã«ã§ããããã誰ããããããçµã¿åãããŠãäžèšã®åé¡ã解決ãã匷åãªããŒã«ãäœæããããšããããšã¯é©ãã¹ãããšã§ã¯ãããŸããã ãã®ãããªè§£æ±ºçãããã«è©³ããæ€èšããŠã¿ãŸãããã
Docker ã® Selenium ã°ãªãã
ãã®ããŒã«ã¯ãè€æ°ã®ãã·ã³äžã§è€æ°ã®ãã©ãŠã¶ãå®è¡ããããããäžå€®ãããã管çããããã® Selenium ã®äžçã§æã人æ°ã®ããããŒã«ã§ãã ãŸãããããšããŒãã®å°ãªããšã 2 ã€ã®éšåãç»é²ããå¿ èŠããããŸãã ããã¯ããã¹ããããã¹ãŠã®ãªã¯ãšã¹ããåä¿¡ããããããé©åãªããŒãã«åæ£ããäžå€®ããŒãã§ãã ããŒãããšã«ãããšãã°ãç®çã®ãã©ãŠã¶ãšãã®ããŒãžã§ã³ãæå®ããããšã«ãã£ãŠãç¹å®ã®æ§æãæ§æã§ããŸãã ãã ããäºææ§ã®ãããã©ãŠã¶ ãã©ã€ããŒãèªåã§çšæããç®çã®ããŒãã«ã€ã³ã¹ããŒã«ããå¿ èŠããããŸãã ãã®ãããLinux OS ã«ã€ã³ã¹ããŒã«ã§ããªããã©ãŠã¶ãæäœããå¿ èŠãããå Žåãé€ããSelenium ã°ãªããã¯ãã®ãŸãŸã®åœ¢åŒã§ã¯äœ¿çšãããŸããã ä»ã®ãã¹ãŠã®ã±ãŒã¹ã®å Žåãéåžžã«æè»ã§æ£ãã解決çã¯ãDocker ã€ã¡ãŒãžã䜿çšã㊠Selenium ã°ãªãã ãããšããŒããå®è¡ããããšã§ãã ãã®ã¢ãããŒãã§ã¯ãäºææ§ã®ããããŒãžã§ã³ã®ãã©ãŠã¶ãŒãšæ¢ã«ã€ã³ã¹ããŒã«ãããŠãããã©ã€ããŒã§å¿ èŠãªã€ã¡ãŒãžãéžæã§ãããããããŒã管çãå€§å¹ ã«ç°¡çŽ åãããŸãã
ç¹ã«å€æ°ã®ããŒãã䞊åå®è¡ããå Žåã®å®å®æ§ã«é¢ããåŠå®çãªã¬ãã¥ãŒã«ãããããããSelenium ã°ãªããã¯äŸç¶ãšã㊠Selenium ãã¹ãã䞊åå®è¡ããããã®æã人æ°ã®ããããŒã«ã§ãã ãã®ããŒã«ã®ããŸããŸãªæ¹è¯ãå€æŽããªãŒãã³ãœãŒã¹ã§åžžã«å ¬éãããŠãããããŸããŸãªããã«ããã¯ãšéã£ãŠããããšã«æ³šæããããšãéèŠã§ãã
Webçšã»ã¬ãã€ã
ãã®ããŒã«ã¯ãç®±ããåºããŠããã«åäœãããããSelenium ã®äžçã«ãããç»æçãªããŒã«ã§ãããå€ãã®èªååãšã³ãžãã¢ã®äœæ¥ãå€§å¹ ã«æ¥œã«ããŸããã ãŸã第äžã«ããã㯠Selenium ã°ãªããã®å¥ã®å€æŽã§ã¯ãããŸããã 代ããã«ãéçºè 㯠Golang ã§å®å šã«æ°ããããŒãžã§ã³ã® Selenium Hub ãäœæããããŸããŸãªãã©ãŠã¶ãŒçšã®è»œé Docker ã€ã¡ãŒãžãšçµã¿åãããŠããã¹ãèªååã®éçºã«åŒŸã¿ãã€ããŸããã ããã«ãSelenium Grid ã®å Žåã¯ãå¿ èŠãªãã¹ãŠã®ãã©ãŠã¶ãšãã®ããŒãžã§ã³ãäºåã«æ±ºå®ããå¿ èŠããããŸãããXNUMX ã€ã®ãã©ãŠã¶ã ãã§äœæ¥ããå Žåã«ã¯åé¡ãããŸããã ãããããµããŒããããŠããè€æ°ã®ãã©ãŠã¶ã«é¢ããŠèšãã°ãããã©ãŠã¶ ãªã³ ããã³ããæ©èœã®ãããã§ãSelenoid ããã³ããŒã¯ã³ã®ãœãªã¥ãŒã·ã§ã³ãšãªããŸãã å¿ èŠãªäœæ¥ã¯ãäºåã«ãã©ãŠã¶ã§å¿ èŠãªã€ã¡ãŒãžãããŠã³ããŒãããSelenoid ãé£æºããèšå®ãã¡ã€ã«ãæŽæ°ããã ãã§ãã Selenoid ããã¹ããããªã¯ãšã¹ããåä¿¡ãããšãç®çã®ãã©ãŠã¶ãŒã§ç®çã®ã³ã³ãããŒãèªåçã«èµ·åããŸãã ãã¹ããå®äºãããšãSelenoid ã¯ã³ã³ããããªã¿ã€ã¢ããå°æ¥ã®ãªã¯ãšã¹ãã®ããã«ãªãœãŒã¹ã解æŸããŸãã ãã®ã¢ãããŒãã«ãããSelenium ã°ãªããã§ããééãããããŒãã®å£åããšããããç¥ãããåé¡ãå®å šã«æé€ãããŸãã
ããããæ®å¿µãªããšã«ãSelenoid ã¯ãŸã ç¹å¹è¬ã§ã¯ãããŸããã ããã©ãŠã¶ ãªã³ ããã³ããæ©èœã¯å©çšã§ããŸããããããªãœãŒã¹ ãªã³ ããã³ããæ©èœã¯ãŸã å©çšã§ããŸããã Selenoid ã䜿çšããã«ã¯ããããç©çããŒããŠã§ã¢ãŸã㯠VM ã«ãããã€ããå¿ èŠããããŸããã€ãŸããå²ãåœãŠãå¿ èŠããããªãœãŒã¹ã®æ°ãäºåã«ææ¡ããŠããå¿ èŠããããŸãã 10ã20ãããã«ã¯ 30 åã®ãã©ãŠã¶ã䞊è¡ããŠå®è¡ããå°èŠæš¡ãªãããžã§ã¯ãã§ã¯ãããã¯åé¡ã«ãªããªããšæããŸãã ãããã100ã500ã1000 ãªã©ã®æ°ãå¿ èŠãªå Žåã¯ã©ããªãã§ãããã? éåžžã«å€ãã®ãªãœãŒã¹ãç¶æãããã®è²»çšãåžžã«æ¯æãã®ã¯æå³ããããŸããã ãã®èšäºã®ã»ã¯ã·ã§ã³ 5 ãš 6 ã§ã¯ãæ¡åŒµãå¯èœã«ããŠäŒæ¥ã³ã¹ããå€§å¹ ã«åæžãããœãªã¥ãŒã·ã§ã³ã«ã€ããŠèª¬æããŸãã
Androidçšã»ã¬ãã€ã
Web èªååããŒã«ãšã㊠Selenoid ãæåããåŸã人ã 㯠Android ã«ãåæ§ã®ãã®ãæ±ããŸããã ãããŠããã¯èµ·ãããŸãã - Selenoid 㯠Android ããµããŒãããŠãªãªãŒã¹ãããŸããã é«ã¬ãã«ã®ãŠãŒã¶ãŒã®èŠ³ç¹ããèŠããšãåäœåç㯠Web ãªãŒãã¡ãŒã·ã§ã³ãšäŒŒãŠããŸãã å¯äžã®éãã¯ãSelenoid ã¯ãã©ãŠã¶ ã³ã³ããã®ä»£ããã« Android ãšãã¥ã¬ãŒã¿ ã³ã³ãããå®è¡ããããšã§ãã ç§ã®æèŠã§ã¯ããã㯠Android ãã¹ãã䞊è¡ããŠå®è¡ããããã®çŸæç¹ã§æã匷åãªç¡æããŒã«ã§ãã
ç§ã¯ãã®ããŒã«ãæ¬åœã«æ°ã«å ¥ã£ãŠããã®ã§ããã®ããŒã«ã®ãã€ãã¹é¢ã«ã€ããŠã¯ããŸã話ããããªãã®ã§ãã ãã ããWeb ãªãŒãã¡ãŒã·ã§ã³ã«ãåæ§ã®ãã¡ãªããããããã¹ã±ãŒãªã³ã°ã«é¢é£ããŠããŸãã ããã«å ããŠãåããŠããŒã«ãã»ããã¢ããããå Žåã«é©ããããããªããã XNUMX ã€ã®å¶éã«ã€ããŠã説æããå¿ èŠããããŸãã Android ã€ã¡ãŒãžãå®è¡ããã«ã¯ããã¹ããããä»®æ³åããµããŒãããç©çãã·ã³ãŸã㯠VM ãå¿ èŠã§ãã ããŠã㌠ã¬ã€ãã§ã¯ãLinux VM ã§ãããæå¹ã«ããæ¹æ³ã瀺ããŸãã ãã ããmacOS ãŠãŒã¶ãŒã§ Selenoid ãããŒã«ã«ã«ãããã€ãããå Žåã¯ãAndroid ãã¹ããå®è¡ããããšã¯ã§ããŸããã ãã ããããã¹ããããä»®æ³åããæ§æããã Linux VM ãããŒã«ã«ã§å®è¡ããå éšã« Selenoid ããããã€ããããšã¯ãã€ã§ãå¯èœã§ãã
ã€ã³ãã©ã®çŸç¶ã€ã¡ãŒãž
ãã®èšäºã§ã¯ãã€ã³ãã©ã¹ãã©ã¯ãã£ã説æããããã« 2 ã€ã®ããŒã«ãè¿œå ããŸãã ãããã¯ãWeb ãã¹ãçšã® Selenium ã°ãªãããš Android ãã¹ãçšã® Selenoid ã§ãã GitHub ãã¥ãŒããªã¢ã«ã§ã¯ãSelenoid ã䜿çšã㊠Web ãã¹ããå®è¡ããæ¹æ³ã説æããŸãã
æ¢çŽ¢ããããã®ãªã³ã¯
Docker: ã³ã³ãããšã¯äœã§ãã Docker: å§ããŸããã Docker ã«ä»£ãã 5 ã€ã®ã³ã³ãã ã»ã¬ã³ã°ãªãã Selenium ããã«ãŒ ã»ã¬ãã€ã ã»ã¬ãã€ã Github Android ãšãã¥ã¬ãŒã¿çšã® KVM ã»ããã¢ãã Docker ã®ãã£ãŒããã€ãããã¯
åæ§ã®ããŒã«
- ä»ã«ãã³ã³ããåããŒã«ã¯ãããŸãããDocker ãæã人æ°ããããŸãã å¥ã®ããšãè©Šãããå Žåã¯ãSelenium ãã¹ãã䞊è¡ããŠå®è¡ããããã«ããã§åãäžããããŒã«ã¯ããã®ãŸãŸã§ã¯æ©èœããªãããšã«æ³šæããŠãã ããã
- ãã§ã«è¿°ã¹ãããã«ãSelenium ã°ãªããã«ã¯å€ãã®å€æŽãå ããããŠããŸããããšãã°ã
ã¶ã¬ããŠã .
4.CI/CD
ãã¯ãããžãŒã®ç°¡åãªèª¬æ
ç¶ç¶ççµ±åã®å®è·µã¯éçºã«ãããŠéåžžã«äžè¬çã§ãããããŒãžã§ã³ç®¡çã·ã¹ãã ãšåçã§ãã ããã«ãããããããçšèªã«æ··ä¹±ãããããã«æããŸãã ãã®æ®µèœã§ã¯ãç§ã®èŠ³ç¹ãããã®ãã¯ãããžãŒã® 3 ã€ã®å€æŽç¹ã«ã€ããŠèª¬æããããšæããŸãã ã€ã³ã¿ãŒãããäžã«ã¯ããŸããŸãªè§£éã®èšäºããããããããŸãããèªåã®æèŠãç°ãªãã®ã¯ããæ®éã®ããšã§ãã æãéèŠãªããšã¯ãååãšåãèªèãæã£ãŠããããšã§ãã
ã€ãŸããCI - ç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ãCD - ç¶ç¶çããªããªãŒããããŠåã³ CD - ç¶ç¶çãããã€ã¡ã³ããšãã 3 ã€ã®çšèªããããŸãã (以äžã§ã¯ãããã®çšèªãè±èªã§äœ¿çšããŸãïŒã å€æŽãå ãããã³ã«ãéçºãã€ãã©ã€ã³ã«ããã€ãã®è¿œå ã¹ããããè¿œå ãããŸãã ãããããã®èšè㯠é£ç¶ç㪠ïŒç¶ç¶ïŒãäžçªå€§äºã§ãã ãã®æèã§ã¯ãäžæãæåä»å ¥ãªãã«ãæåããæåŸãŸã§èµ·ããããšãæå³ããŸãã ãã®æè㧠CI & CD ãš CD ãèŠãŠã¿ãŸãããã
- ç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ ããã¯é²åã®æåã®ã¹ãããã§ãã æ°ããã³ãŒãããµãŒããŒã«éä¿¡ããåŸãå€æŽãæ£åžžã§ãããšãããã£ãŒãããã¯ãããã«åãåãããšãæåŸ ãããŸãã éåžžãCI ã«ã¯éçã³ãŒãåæããŒã«ã®å®è¡ãšãŠããã/å éš API ãã¹ããå«ãŸããŠãããããã«ããã³ãŒãã«é¢ããæ å ±ãæ°ç§/æ°å以å ã«ååŸã§ããŸãã
- é£ç¶æŸåº ããã¯ãçµ±å/UI ãã¹ããå®è¡ããããé«åºŠãªã¹ãããã§ãã ãã ãããã®æ®µéã§ã¯ CI ã»ã©æ©ãçµæã¯åŸãããŸããã ãŸãããã®çš®ã®ãã¹ãã¯å®äºãŸã§ã«æéãããããŸãã 次ã«ãèµ·åããåã«ãå€æŽããã¹ã/ã¹ããŒãžã³ã°ç°å¢ã«ãããã€ããå¿ èŠããããŸãã ããã«ãã¢ãã€ã«éçºã«ã€ããŠè©±ããŠããå Žåãã¢ããªã±ãŒã·ã§ã³ã®ãã«ããäœæããããã®è¿œå ã®ã¹ãããã衚瀺ãããŸãã
- ç¶ç¶çãªå±é åã®æ®µéã§ãã¹ãŠã®åãå ¥ããã¹ãã«åæ Œããå Žåãå€æŽãèªåçã«æ¬çªç°å¢ã«ãªãªãŒã¹ãããããšãåæãšããŠããŸãã ããã«å ããŠããªãªãŒã¹æ®µéã®åŸã¯ãæ¬çªç°å¢ã§ã®ã¹ã¢ãŒã¯ ãã¹ãã®å®è¡ãé¢å¿ã®ããã¡ããªã¯ã¹ã®åéãªã©ãããŸããŸãªæ®µéãæ§æã§ããŸãã ç¶ç¶çãããã€ã¡ã³ãã¯ãèªåãã¹ããé©åã«ã«ããŒãããŠããå Žåã«ã®ã¿å¯èœã§ãã ãã¹ããªã©ã®æåä»å ¥ãå¿ èŠãªå Žåãããã¯äžèŠã«ãªããŸãã é£ç¶ç㪠ïŒç¶ç¶ïŒã ããããã°ãç§ãã¡ã®ãã€ãã©ã€ã³ã¯ç¶ç¶çããªããªãŒã®å®è·µã«ã®ã¿æºæ ããŠãããšèšããŸãã
èªååã€ã³ãã©ã¹ãã©ã¯ãã£ã®äŸ¡å€
ãã®ã»ã¯ã·ã§ã³ã§ã¯ããšã³ãããŒãšã³ãã® UI ãã¹ãã«ã€ããŠè©±ããšããå€æŽãšé¢é£ãµãŒãã¹ããã¹ãç°å¢ã«ãããã€ããå¿ èŠãããããšãæå³ããããšãæ確ã«ããå¿ èŠããããŸãã ç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ - ãã®ããã»ã¹ã¯ãã®ã¿ã¹ã¯ã«ã¯é©çšãããªããããå°ãªããšãç¶ç¶çé ä¿¡ãã©ã¯ãã£ã¹ã®å®è£ ã«æ³šæããå¿ èŠããããŸãã ç¶ç¶çãããã€ã¡ã³ãã¯ãå®çšŒåç°å¢ã§å®è¡ããå Žåã® UI ãã¹ãã®ã³ã³ããã¹ãã§ãæå³ããããŸãã
ã¢ãŒããã¯ãã£ã®å€æŽã®å³ãèŠãåã«ãGitLab CI ã«ã€ããŠå°ãã話ããããšæããŸãã ä»ã® CI/CD ããŒã«ãšã¯ç°ãªããGitLab ã¯ãªã¢ãŒã ãªããžããªããã®ä»ã®å€ãã®è¿œå æ©èœãæäŸããŸãã ãããã£ãŠãGitLab ã¯åãªã CI ã§ã¯ãããŸããã ããã«ã¯ããœãŒã¹ ã³ãŒã管çãã¢ãžã£ã€ã«ç®¡çãCI/CD ãã€ãã©ã€ã³ããã®ã³ã° ããŒã«ãããã«äœ¿ããã¡ããªã¯ã¹åéãå«ãŸããŠããŸãã GitLab ã¢ãŒããã¯ãã£ã¯ãGitlab CI/CD ãš GitLab Runner ã§æ§æãããŸãã å ¬åŒãŠã§ããµã€ãããã®ç°¡åãªèª¬æã¯æ¬¡ã®ãšããã§ãã
Gitlab CI/CD ã¯ãç¶æ ãããŒã¿ããŒã¹ã«ä¿åãããããžã§ã¯ã/ãã«ãã管çãããŠãŒã¶ãŒ ã€ã³ã¿ãŒãã§ã€ã¹ãæäŸãã API ãåãã Web ã¢ããªã±ãŒã·ã§ã³ã§ãã GitLab Runnerã¯ãã«ããåŠçããã¢ããªã±ãŒã·ã§ã³ã§ãã åå¥ã«ãããã€ã§ããAPI ãéã㊠GitLab CI/CD ãšé£æºããŸãã ãã¹ããå®è¡ããã«ã¯ãGitlab ã€ã³ã¹ã¿ã³ã¹ãš Runner ã®äž¡æ¹ãå¿ èŠã§ãã
ã€ã³ãã©ã®çŸç¶ã€ã¡ãŒãž
æ¢çŽ¢ããããã®ãªã³ã¯
Martin Fowler: ç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ GitLab CI / CD ç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ã®æ¬ ç¶ç¶çããªããªãŒã®æ¬
åæ§ã®ããŒã«
ãžã§ã³ãã³ãº TeamCity ãã©ãã¹ - ãããŠä»ã®å€ã
5. ã¯ã©ãŠããã©ãããã©ãŒã
ãã¯ãããžãŒã®ç°¡åãªèª¬æ
ãã®ã»ã¯ã·ã§ã³ã§ã¯ãããããªã㯠ã¯ã©ãŠãããšåŒã°ãã人æ°ã®ãã¬ã³ãã«ã€ããŠèª¬æããŸãã äžèšã®ä»®æ³åããã³ã³ã³ããåãã¯ãããžãæäŸããå€å€§ãªã¡ãªããã«ãããããããäŸç¶ãšããŠã³ã³ãã¥ãŒãã£ã³ã° ãªãœãŒã¹ãå¿ èŠã§ãã äŒæ¥ã¯é«äŸ¡ãªãµãŒããŒãè³Œå ¥ããããããŒã¿ã»ã³ã¿ãŒãåãããããŸããããã®å Žåãå¿ èŠãªãªãœãŒã¹ã®æ°ããããã 24 æé幎äžç¡äŒã§äœ¿çšãããã©ãããããã³ã©ã®ãããªç®çã«äœ¿çšãããã«ã€ã㊠(éçŸå®çãªå ŽåããããŸãã) èšç®ããå¿ èŠããããŸãã ããšãã°ãæ¬çªç°å¢ã§ã¯ 7 æé幎äžç¡äŒã§çšŒåãããµãŒããŒãå¿ èŠã§ãããå€åæéå€ã®ãã¹ãã«ãåæ§ã®ãªãœãŒã¹ãå¿ èŠã§ãããã? ãŸããå®è¡ããããã¹ãã®çš®é¡ã«ãã£ãŠãç°ãªããŸãã äŸãšããŠã¯ãç¿æ¥çµæãåŸãããã«å€åæéå€ã«å®è¡ããäºå®ã®è² è·/ã¹ãã¬ã¹ ãã¹ããæããããŸãã ãããããšã³ãããŒãšã³ãã®èªåãã¹ããç¹ã«æåãã¹ãç°å¢ã§ã¯ããµãŒããŒã® XNUMX æé XNUMX æ¥ã®å¯çšæ§ã¯æããã«å¿ èŠãããŸããã ãã®ãããªç¶æ³ã§ã¯ããªã³ããã³ãã§å¿ èŠãªã ããªãœãŒã¹ãååŸããŠäœ¿çšããäžèŠã«ãªã£ããæ¯æããåæ¢ããã®ãè¯ãã§ãããã ããã«ãããŠã¹ãæ°åã¯ãªãã¯ããããããã€ãã®ã¹ã¯ãªãããå®è¡ããã ãã§ãããããå³åº§ã«åä¿¡ã§ããã°çŽ æŽãããã§ãããã ããããããªã㯠ã¯ã©ãŠãã®çšéã§ãã å®çŸ©ãèŠãŠã¿ãŸãããã
ããããªã㯠ã¯ã©ãŠãã¯ããµãŒãããŒã㣠ãããã€ããŒããããªã㯠ã€ã³ã¿ãŒãããäžã§æäŸããã³ã³ãã¥ãŒãã£ã³ã° ãµãŒãã¹ãšããŠå®çŸ©ããã䜿çšãŸãã¯è³Œå ¥ããã人ãªã誰ã§ãå©çšã§ããããã«ãªããŸãã ãããã¯ç¡æãŸãã¯ãªã³ããã³ãã§è²©å£²ãããå Žåãããã顧客ã¯æ¶è²»ãã CPU ãµã€ã¯ã«ãã¹ãã¬ãŒãžããŸãã¯åž¯åå¹ ã®äœ¿çšéã«å¿ããŠã®ã¿æ¯æãããšãã§ããŸããã
ãããªãã¯ã¯ã©ãŠãã¯é«äŸ¡ã ãšããæèŠããããŸãã ãããã圌ãã®éèŠãªã¢ã€ãã¢ã¯äŒç€Ÿã®ã³ã¹ããåæžããããšã§ãã åè¿°ããããã«ããããªã㯠ã¯ã©ãŠãã䜿çšãããšããªã³ããã³ãã§ãªãœãŒã¹ãååŸãã䜿çšããæéã«å¯ŸããŠã®ã¿æéãæ¯æãããšãã§ããŸãã ãŸããåŸæ¥å¡ã¯çµŠæãããã£ãŠããããšãã¹ãã·ã£ãªã¹ããé«äŸ¡ãªäººæã§ããããšãå¿ããŠããŸãããšããããŸãã ãããªã㯠ã¯ã©ãŠãã«ããã€ã³ãã©ã¹ãã©ã¯ãã£ã®ãµããŒããã¯ããã«å®¹æã«ãªãããšã³ãžãã¢ãããéèŠãªã¿ã¹ã¯ã«éäžã§ããããã«ãªãããšãèæ ®ããå¿ èŠããããŸãã
èªååã€ã³ãã©ã¹ãã©ã¯ãã£ã®äŸ¡å€
ãšã³ãããŒãšã³ãã® UI ãã¹ãã«ã¯å ·äœçã«ã©ã®ãããªãªãœãŒã¹ãå¿ èŠã§ãã? åºæ¬çã«ããããã¯ãã©ãŠã¶ãŒãšãšãã¥ã¬ãŒã¿ãŒãå®è¡ããããã®ä»®æ³ãã·ã³ãŸãã¯ã¯ã©ã¹ã¿ãŒã§ã (Kubernetes ã«ã€ããŠã¯æ¬¡ã®ã»ã¯ã·ã§ã³ã§èª¬æããŸã)ã åæã«å®è¡ããããã©ãŠã¶ããšãã¥ã¬ãŒã¿ã®æ°ãå¢ããã»ã©ãããå€ãã® CPU ãšã¡ã¢ãªãå¿ èŠã«ãªãããã®ããã«æ¯æããªããã°ãªããªãè²»çšãå¢ããŸãã ãããã£ãŠããã¹ãèªååã®ã³ã³ããã¹ãã«ããããããªã㯠ã¯ã©ãŠãã䜿çšãããšããªã³ããã³ãã§å€æ° (100ã200ã1000...) ã®ãã©ãŠã¶/ãšãã¥ã¬ãŒã¿ãå®è¡ããã§ããã ãæ©ããã¹ãçµæãååŸãããã®ãããªéåžžã«ãªãœãŒã¹ã倧éã«æ¶è²»ããã³ã¹ãã®æ¯æããåæ¢ããããšãã§ããŸããåã
æã人æ°ã®ããã¯ã©ãŠã ãããã€ããŒã¯ãã¢ããŸã³ ãŠã§ã ãµãŒãã¹ (AWS)ãMicrosoft AzureãGoogle Cloud Platform (GCP) ã§ãã ããŠã㌠ã¬ã€ãã«ã¯ GCP ã®äœ¿çšæ¹æ³ã®äŸãèšèŒãããŠããŸãããäžè¬çã«ã¯èªååã¿ã¹ã¯ã«äœã䜿çšãããã¯åé¡ã§ã¯ãããŸããã ãããã¯ãã¹ãŠã»ãŒåãæ©èœãæäŸããŸãã éåžžããããã€ããŒãéžæããéã管çè ã¯äŒç€Ÿã®å šäœçãªã€ã³ãã©ã¹ãã©ã¯ãã£ãšããžãã¹èŠä»¶ã«çŠç¹ãåœãŠãŸãããããã«ã€ããŠã¯ãã®èšäºã®ç¯å²ãè¶ ããŠããŸãã èªååãšã³ãžãã¢ã«ãšã£ãŠã¯ãã¯ã©ãŠã ãããã€ããŒã®äœ¿çšãšãç¹ã«ãã¹ãç®çã®ã¯ã©ãŠã ãã©ãããã©ãŒã (Sauce LabsãBrowserStackãBitBar ãªã©) ã®äœ¿çšãæ¯èŒããæ¹ãèå³æ·±ãã§ãããã ããããç§ããã£ãŠã¿ããïŒ ç§ã®æèŠã§ã¯ãSauce Labs ãæãæåãªã¯ã©ãŠã ãã¹ã ãã¡ãŒã ã§ãããããæ¯èŒã«äœ¿çšããŸããã
èªååãç®çãšãã GCP ãš Sauce Labs ã®æ¯èŒ:
8 ã€ã® Web ãã¹ããš 8 ã€ã® Android ãã¹ããåæã«å®è¡ããå¿ èŠããããšæ³åããŠã¿ãŸãããã ãã®ããã«ãGCP ã䜿çšããSelenoid 㧠2 ã€ã®ä»®æ³ãã·ã³ãå®è¡ããŸãã æåã®ã³ã³ããã§ã¯ããã©ãŠã¶ã䜿çšã㊠8 ã€ã®ã³ã³ãããèµ·åããŸãã 8 çªç®ã«ã¯ããšãã¥ã¬ãŒã¿ãåãã XNUMX ã€ã®ã³ã³ããããããŸãã äŸ¡æ ŒãèŠãŠã¿ãŸããã:
Chrome 㧠XNUMX ã€ã®ã³ã³ãããå®è¡ããã«ã¯ã次ã®ãã®ãå¿
èŠã§ãã n1-æšæº-1 è»ã Androidã®å Žåã¯ãããªããŸã n1-æšæº-4 XNUMXã€ã®ãšãã¥ã¬ãŒã¿ã®å Žåã å®éãããæè»ã§å®äŸ¡ãªæ¹æ³ã¯ãCPU/ã¡ã¢ãªã«ç¹å®ã®ãŠãŒã¶ãŒå€ãèšå®ããããšã§ãããçŸæç¹ã§ã¯ããã㯠Sauce Labs ãšã®æ¯èŒã§ã¯éèŠã§ã¯ãããŸããã
Sauce Labs ã䜿çšããå Žåã®æéã¯æ¬¡ã®ãšããã§ãã
ãã§ã«éãã«æ°ã¥ããŠãããšæããŸãããã¿ã¹ã¯ã®èšç®ãè¡šã«ç€ºããŠãããŸãã
å¿
èŠãªãªãœãŒã¹
æ¯æ
åŽåæé(åå8æïœååŸ8æ)
åŽåæé+ ããªãšã³ããã£ãã«
ãŠã§ãåã GCP
n1-æšæº-1 x 8 = n1-æšæº-8
$194.18
23 æ¥ * 12 æé * 0.38 = 104.88 ãã«
23 æ¥ * 12 æé * 0.08 = 22.08 ãã«
Web çš Sauce Labs
Virtual Cloud8 ã®äžŠåãã¹ã
$1.559
-
-
Android åã GCP
n1-standard-4 x 8: n1-standard-16
$776.72
23 æ¥ * 12 æé * 1.52 = 419.52 ãã«
23 æ¥ * 12 æé * 0.32 = 88.32 ãã«
Android çš Sauce Labs
Real Device Cloud 8 ã®äžŠåãã¹ã
$1.999
-
-
ã芧ã®ãšãããç¹ã« XNUMX æéã®çšŒåæéå ã«ã®ã¿ãã¹ããå®è¡ããå Žåãã³ã¹ãã®å·®ã¯éåžžã«å€§ãããªããŸãã ãã ããããªãšã³ããã£ãã« ãã·ã³ã䜿çšãããšãããã«ã³ã¹ããåæžã§ããŸãã ããã¯äœã§ããïŒ
ããªãšã³ããã£ãã« VM ã¯ãéåžžã®ã€ã³ã¹ã¿ã³ã¹ãããã¯ããã«å®ãäŸ¡æ Œã§äœæããã³å®è¡ã§ããã€ã³ã¹ã¿ã³ã¹ã§ãã ãã ããä»ã®ã¿ã¹ã¯ã§ãããã®ãªãœãŒã¹ãžã®ã¢ã¯ã»ã¹ãå¿ èŠãªå ŽåãCompute Engine ã¯ãããã®ã€ã³ã¹ã¿ã³ã¹ãçµäºïŒããªãšã³ããïŒããå ŽåããããŸãã ããªãšã³ããã£ãã« ã€ã³ã¹ã¿ã³ã¹ã¯ Compute Engine ã®äœå°å®¹éã§ããããããã®å¯çšæ§ã¯äœ¿çšç¶æ³ã«ãã£ãŠç°ãªããŸãã
ã¢ããªããã©ãŒã«ã ãã¬ã©ã³ãã§ãããã€ã³ã¹ã¿ã³ã¹ã®ããªãšã³ãã·ã§ã³ã«èããããå Žåãããªãšã³ããã£ãã« ã€ã³ã¹ã¿ã³ã¹ã«ãã£ãŠ Compute Engine ã®ã³ã¹ããå€§å¹ ã«åæžã§ããŸãã ããšãã°ããããåŠçãžã§ãã¯ããªãšã³ããã£ãã« ã€ã³ã¹ã¿ã³ã¹äžã§å®è¡ã§ããŸãã ãããã®ã€ã³ã¹ã¿ã³ã¹ã®äžéšãåŠçäžã«çµäºãããšããžã§ãã¯é ããªããŸãããå®å šã«ã¯åæ¢ããŸããã ããªãšã³ããã£ãã« ã€ã³ã¹ã¿ã³ã¹ã¯ãæ¢åã®ã€ã³ã¹ã¿ã³ã¹ã«è¿œå ã®ã¯ãŒã¯ããŒãã課ãããšãªãããŸãè¿œå ã®éåžžã®ã€ã³ã¹ã¿ã³ã¹ã«å¯ŸããŠå šé¡ãæ¯æãå¿ èŠããªãããããåŠçã¿ã¹ã¯ãå®äºããŸãã
ãããŠãŸã çµãã£ãŠããªãã®ã§ãïŒ å®éã«ã¯ãäŒæ©ãªã㧠12 æéãã¹ããå®è¡ãã人ã¯ããªããšæããŸãã ãã®å Žåã¯ãä»®æ³ãã·ã³ãäžèŠãªãšãã«èªåçã«èµ·åããã³åæ¢ã§ããŸãã å®éã®äœ¿çšæé㯠6 æ¥ããã 11 æéã«ççž®ãããå ŽåããããŸãã ããããã°ãç§ãã¡ã®ã¿ã¹ã¯ã®ã³ã³ããã¹ãã§ã®æ¯æãã¯ã8 ã€ã®ãã©ãŠã¶ã§æé¡ XNUMX ãã«ã«æžããŸãã ããã¯çŽ æŽããããšæããŸãããïŒ ããããããªãšã³ããã£ãã« ãã·ã³ã®å Žåã¯ãäžæãäžå®å®æ§ã«æ³šæããåããŠããå¿ èŠããããŸãããã ãããããã®ç¶æ³ã¯ãœãããŠã§ã¢ã§æäŸããã³åŠçã§ããŸãã 䟡å€ããããŸãïŒ
ããããç§ã¯æ±ºããŠãã¯ã©ãŠã ãã¹ã ãã¡ãŒã ã決ããŠäœ¿çšããªãããšèšã£ãŠããã®ã§ã¯ãããŸããã ãããã«ã¯å€ãã®å©ç¹ããããŸãã ãŸã第äžã«ãããã¯åãªãä»®æ³ãã·ã³ã§ã¯ãªãããªã¢ãŒã ã¢ã¯ã»ã¹ããã°ãã¹ã¯ãªãŒã³ã·ã§ããããããªé²ç»ãããŸããŸãªãã©ãŠã¶ãŒãç©çã¢ãã€ã« ããã€ã¹ãªã©ãããã«äœ¿çšã§ããäžé£ã®æ©èœãåããæ¬æ Œçãªãã¹ãèªååãœãªã¥ãŒã·ã§ã³ã§ãã å€ãã®ç¶æ³ã§ãããã¯äžå¯æ¬ ãªã·ãã¯ãªä»£æ¿åã«ãªããŸãã ãã¹ã ãã©ãããã©ãŒã ã¯ããããªã㯠ã¯ã©ãŠãã Linux/Windows ã·ã¹ãã ããæäŸã§ããªãå ŽåãIOS èªååã«ç¹ã«åœ¹ç«ã¡ãŸãã ãã ããiOS ã«ã€ããŠã¯æ¬¡ã®èšäºã§èª¬æããŸãã åžžã«ç¶æ³ãèŠãŠãã¿ã¹ã¯ããå§ããããšããå§ãããŸããå Žåã«ãã£ãŠã¯ããããªã㯠ã¯ã©ãŠãã䜿çšããæ¹ãå®äŸ¡ã§å¹ççã§ãããä»ã®å Žåã«ã¯ããã¹ã ãã©ãããã©ãŒã ã«ãéãè²»ãã䟡å€ãããããšã¯æããã§ãã
ã€ã³ãã©ã®çŸç¶ã€ã¡ãŒãž
æ¢çŽ¢ããããã®ãªã³ã¯
GCP GCP: ããªãšã³ããã£ãã« GCP: VM ã®æé ãœãŒã¹ã©ã ã¯ã©ãŠããããã€ããŒã®æ¯èŒ
åæ§ã®ããŒã«:
6. ãªãŒã±ã¹ãã¬ãŒã·ã§ã³
ãã¯ãããžãŒã®ç°¡åãªèª¬æ
è¯ããã¥ãŒã¹ããããŸããèšäºãããããçµããã«è¿ã¥ããŠããŸãã çŸæç¹ã§ã¯ãåœç€Ÿã®èªååã€ã³ãã©ã¹ãã©ã¯ãã£ã¯ Web ãã¹ããš Android ãã¹ãã§æ§æãããŠãããDocker 察å¿ããŒã«ã§ãã Selenium ã°ãªãããš Selenoid ã䜿çšããŠãGitLab CI ãéããŠäžŠè¡ããŠå®è¡ããŸãã ããã«ãGCP çµç±ã§äœæãããä»®æ³ãã·ã³ã䜿çšããŠããã©ãŠã¶ãšãšãã¥ã¬ãŒã¿ã§ã³ã³ããããã¹ãããŸãã ã³ã¹ããåæžããããã«ããããã®ä»®æ³ãã·ã³ã¯ãªã³ããã³ãã§ã®ã¿èµ·åããããã¹ããå®è¡ãããŠããªããšãã¯åæ¢ãããŸãã ä»ã«ã€ã³ãã©ãæ¹åã§ãããã®ã¯ãããŸãã? çãã¯ãã¯ããã§ãïŒ Kubernetes (K8s) ãã玹ä»ããŸã!
ãŸãããªãŒã±ã¹ãã¬ãŒã·ã§ã³ãã¯ã©ã¹ã¿ãŒãKubernetes ãšããèšèãäºãã«ã©ã®ããã«é¢é£ããŠããããèŠãŠã¿ãŸãããã 倧ãŸãã«èšããšããªãŒã±ã¹ãã¬ãŒã·ã§ã³ã¯ã¢ããªã±ãŒã·ã§ã³ããããã€ããã³ç®¡çããã·ã¹ãã ã§ãã ãã¹ãèªååã®å Žåãã³ã³ããåãããã¢ããªã±ãŒã·ã§ã³ãšããŠã¯ãSelenium Grid ã Selenoid ããããŸãã Docker ãš K8 ã¯çžäºã«è£å®ããŸãã 8 ã€ç®ã¯ã¢ããªã±ãŒã·ã§ã³ã®ãããã€ã¡ã³ãã«äœ¿çšããã8 ã€ç®ã¯ãªãŒã±ã¹ãã¬ãŒã·ã§ã³ã«äœ¿çšãããŸãã ã€ãŸããKXNUMXs ã¯ã¯ã©ã¹ã¿ãŒã§ãã ã¯ã©ã¹ã¿ãŒã®ã¿ã¹ã¯ã¯ãVM ãããŒããšããŠäœ¿çšããããšã§ããããã«ãããXNUMX ã€ã®ãµãŒã㌠(ã¯ã©ã¹ã¿ãŒ) å ã«ããŸããŸãªæ©èœãããã°ã©ã ããµãŒãã¹ãã€ã³ã¹ããŒã«ã§ããããã«ãªããŸãã ããããã®ããŒãã«é害ãçºçããŠããä»ã®ããŒããå埩ãããããã¢ããªã±ãŒã·ã§ã³ã®äžæã®ãªãåäœãä¿èšŒãããŸãã ããã«å ããŠãKXNUMXs ã«ã¯ã¹ã±ãŒãªã³ã°ã«é¢é£ããéèŠãªæ©èœããããããã«ãããè² è·ã«åºã¥ããŠæé©ãªéã®ãªãœãŒã¹ãèªåçã«ååŸãããå¶éãèšå®ãããŸãã
å®éã®ãšãããKubernetes ãæåããæåã§ãããã€ããã®ã¯æ±ºããŠç°¡åãªäœæ¥ã§ã¯ãããŸããã æåãªããŠã㌠ã¬ã€ããKubernetes The Hard Wayããžã®ãªã³ã¯ãæ®ããŠãããŸãã®ã§ãèå³ãããã°å®è·µããŠã¿ãŠãã ããã ãããã幞ããªããšã«ã代æ¿ã®æ¹æ³ãããŒã«ããããŸãã æãç°¡åãªæ¹æ³ã¯ãGCP 㧠Google Kubernetes Engine (GKE) ã䜿çšããããšã§ããããã«ãããæ°åã®ã¯ãªãã¯ã§æ¢è£œã®ã¯ã©ã¹ã¿ãŒãååŸã§ããŸãã å éšã³ã³ããŒãã³ããçžäºã«çµ±åããæ¹æ³ãåŠã¶ã®ã§ã¯ãªããã¿ã¹ã¯ã§ K8 ã䜿çšããæ¹æ³ãåŠã¶ããšã«éäžã§ããããããã®ã¢ãããŒãã䜿çšããŠåŠç¿ãå§ããããšããå§ãããŸãã
èªååã€ã³ãã©ã¹ãã©ã¯ãã£ã®äŸ¡å€
K8s ãæäŸããããã€ãã®éèŠãªæ©èœãèŠãŠã¿ãŸãããã
- ã¢ããªã±ãŒã·ã§ã³ã®å±é: VM ã®ä»£ããã«ãã«ãããŒã ã¯ã©ã¹ã¿ãŒã䜿çšããŸãã
- åçã¹ã±ãŒãªã³ã°: ãªã³ããã³ãã®ã¿ã§äœ¿çšããããªãœãŒã¹ã®ã³ã¹ããåæžããŸãã
- èªå·±ä¿®åŸ©: ãããã®èªåå埩 (ãã®çµæãã³ã³ãããŒã埩å ãããŸã)ã
- ããŠã³ã¿ã€ã ãªãã®æŽæ°ã®ããŒã«ã¢ãŠããšå€æŽã®ããŒã«ããã¯: ããŒã«ããã©ãŠã¶ããšãã¥ã¬ãŒã¿ãæŽæ°ããŠããçŸåšã®ãŠãŒã¶ãŒã®äœæ¥ã¯äžæãããŸããã
ããããK8s ã¯ãŸã ç¹å¹è¬ã§ã¯ãããŸããã ç§ãã¡ãæ€èšããŠããããŒã« (Selenium ã°ãªãããSelenoid) ã®ã³ã³ããã¹ãã«ããããã¹ãŠã®å©ç¹ãšå¶éãç解ããããã«ãK8 ã®æ§é ã«ã€ããŠç°¡åã«èª¬æããŸãã ã¯ã©ã¹ã¿ãŒã«ã¯ããã¹ã¿ãŒ ããŒããšã¯ãŒã«ãŒ ããŒãã® XNUMX çš®é¡ã®ããŒããå«ãŸããŸãã ãã¹ã¿ãŒ ããŒãã¯ã管çãå±éãããã³ã¹ã±ãžã¥ãŒã«ã®æ±ºå®ãæ
åœããŸãã ã¯ãŒã«ãŒ ããŒãã¯ã¢ããªã±ãŒã·ã§ã³ãèµ·åãããå Žæã§ãã ããŒãã«ã¯ã³ã³ãã㌠ã©ã³ã¿ã€ã ç°å¢ãå«ãŸããŸãã ç§ãã¡ã®å Žåãããã¯ã³ã³ãããŒé¢é£ã®æäœãæ
åœãã Docker ã§ãã ãã ãã代æ¿ã®è§£æ±ºçããããŸããããšãã°ã
ã¹ã±ãŒãªã³ã°æ©èœã¯éèŠã§ãããã¯ã©ã¹ã¿ãŒ ããŒã ããŒã«å ã®ããŒããšããŒãå ã®ãããã®äž¡æ¹ã«é©çšã§ããŸãã ããŒããšãããã®äž¡æ¹ã«é©çšããã 2 çš®é¡ã®ã¹ã±ãŒãªã³ã°ããããŸãã æåã®ã¿ã€ãã¯æ°Žå¹³æ¹åã§ããã¹ã±ãŒãªã³ã°ã¯ããŒã/ãããã®æ°ãå¢ããããšã«ãã£ãŠè¡ãããŸãã ãã®ã¿ã€ãã®æ¹ã奜ãŸããã ãããã£ãŠãXNUMX çªç®ã®ã¿ã€ãã¯åçŽåã§ãã ã¹ã±ãŒãªã³ã°ã¯ãããŒã/ãããã®æ°ã§ã¯ãªãããµã€ãºãå¢ããããšã«ãã£ãŠå®è¡ãããŸãã
次ã«ãäžèšã®çšèªã«ç §ãããŠããŒã«ãèŠãŠã¿ãŸãããã
ã»ã¬ã³ã°ãªãã
åè¿°ããããã«ãSelenium ã°ãªããã¯éåžžã«äººæ°ã®ããããŒã«ã§ãããã³ã³ããåãããŠããããšã¯é©ãã¹ãããšã§ã¯ãããŸããã ãããã£ãŠãSelenium ã°ãªããã K8 ã«å°å ¥ã§ããããšã¯é©ãã¹ãããšã§ã¯ãããŸããã ãããè¡ãæ¹æ³ã®äŸã¯ãå ¬åŒ K8s ãªããžããªã«ãããŸãã ãã€ãã®ããã«ãã»ã¯ã·ã§ã³ã®æåŸã«ãªã³ã¯ã貌ãä»ããŸãã ããã«ãããŠã㌠ã¬ã€ãã«ã¯ãTerraform ã§ãããè¡ãæ¹æ³ã瀺ãããŠããŸãã ãã©ãŠã¶ãŒ ã³ã³ãããŒãå«ããããã®æ°ãã¹ã±ãŒã«ããæ¹æ³ã«ã€ããŠã説æããŸãã ããããK8s ã®ã³ã³ããã¹ãã«ãããèªåã¹ã±ãŒãªã³ã°æ©èœã¯ããŸã å®å šã«æãããªã¿ã¹ã¯ã§ã¯ãããŸããã ç§ãå匷ãå§ãããšããå®è·µçãªæå°ãæšå¥šäºé ã¯èŠã€ãããŸããã§ããã DevOps ããŒã ã®ãµããŒããåããŠããã€ãã®èª¿æ»ãšå®éšãè¡ã£ãåŸã4 ã€ã®ã¯ãŒã«ãŒ ããŒãå ã«ãã XNUMX ã€ã®ãããå ã§å¿ èŠãªãã©ãŠã¶ãŒãåããã³ã³ãããæ§ç¯ããã¢ãããŒããéžæããŸããã ãã®æ¹æ³ã§ã¯ãããŒãã®æ°ãå¢ããããšã§ããŒãã®æ°Žå¹³ã¹ã±ãŒãªã³ã°æŠç¥ãé©çšã§ããŸãã ãããå°æ¥çã«å€ãããç¹ã«å éšã¢ãŒããã¯ãã£ãå€æŽããã Selenium Grid XNUMX ã®ãªãªãŒã¹åŸã¯ãããè¯ãã¢ãããŒããæ¢æã®ãœãªã¥ãŒã·ã§ã³ã«é¢ããèšè¿°ããŸããŸãå¢ããããšãé¡ã£ãŠããŸãã
ã»ã¬ãã€ã:
K8s ã§ã® Selenoid ã®å°å ¥ã¯ãçŸæç¹ã§æ倧ã®å€±æã§ãã äºææ§ããããŸããã çè«çã«ã¯ããããå 㧠Selenoid ã³ã³ãããèµ·åã§ããŸãããSelenoid ããã©ãŠã¶ã§ã³ã³ããã®èµ·åãéå§ãããšãã³ã³ããã¯äŸç¶ãšããŠåããããå ã«ãããŸãã ããã«ããã¹ã±ãŒãªã³ã°ãäžå¯èœã«ãªãããã®çµæãã¯ã©ã¹ã¿ãŒå ã® Selenoid ã®äœæ¥ã¯ä»®æ³ãã·ã³å ã®äœæ¥ãšå€ãããªããªããŸãã ç©èªã®çµããã
æ:
Selenoid ã䜿çšããéã®ãã®ããã«ããã¯ãèªèããéçºè ã¯ãMoon ãšåŒã°ãããã匷åãªããŒã«ããªãªãŒã¹ããŸããã ãã®ããŒã«ã¯ããšããš Kubernetes ã§åäœããããã«èšèšãããŠãããããèªåã¹ã±ãŒãªã³ã°æ©èœã¯äœ¿çšå¯èœã§ããã䜿çšããå¿ èŠããããŸãã ããã«èšãã°ãçŸæç¹ã§ã¯ã ã·ã³ã°ã« Selenium ã®äžçã®ããŒã«ã§ãããã«ãã€ãã£ã K8s ã¯ã©ã¹ã¿ãŒããµããŒãããŸã (ããå©çšã§ããŸããã次ã®ããŒã«ãåç §ããŠãã ãã ïŒã ãã®ãµããŒããæäŸãã Moon ã®äž»ãªæ©èœã¯æ¬¡ã®ãšããã§ãã
å®å šã«ç¡åœç±ã Selenoid ã¯ãçŸåšå®è¡äžã®ãã©ãŠã¶ ã»ãã·ã§ã³ã«é¢ããæ å ±ãã¡ã¢ãªã«ä¿åããŸãã äœããã®çç±ã§ããã»ã¹ãã¯ã©ãã·ã¥ãããšãå®è¡äžã®ã»ãã·ã§ã³ã¯ãã¹ãŠå€±ãããŸãã å¯Ÿç §çã«ãMoon ã«ã¯å éšç¶æ ããªããããŒã¿ã»ã³ã¿ãŒéã§è€è£œã§ããŸãã XNUMX ã€ä»¥äžã®ã¬ããªã«ãããŠã³ããŠãããã©ãŠã¶ ã»ãã·ã§ã³ã¯åç¶ããŸãã
ã€ãŸããMoon ã¯åªãããœãªã¥ãŒã·ã§ã³ã§ãããç¡æã§ã¯ãªããšããåé¡ã 0 ã€ãããŸãã æéã¯ã»ãã·ã§ã³æ°ã«ãã£ãŠç°ãªããŸãã ç¡æã§å®è¡ã§ããã®ã¯ 4 ïœ 5 ã»ãã·ã§ã³ã®ã¿ã§ãããç¹ã«äŸ¿å©ã§ã¯ãããŸããã ãã ãã500 åç®ã®ã»ãã·ã§ã³ããã¯ã500 åããã 5 ãã«ãæ¯æãå¿ èŠããããŸãã äŒæ¥ã«ãã£ãŠç¶æ³ã¯ç°ãªããããããŸããããåŒç€Ÿã®å Žåã¯Moonã䜿ãæå³ããããŸããã äžã§èª¬æããããã«ããªã³ããã³ã㧠Selenium Grid ã䜿çšã㊠VM ãå®è¡ããããã¯ã©ã¹ã¿ãŒå ã®ããŒãã®æ°ãå¢ããããã§ããŸãã çŽ 2500 ã€ã®ãã€ãã©ã€ã³ã«ã€ããŠãXNUMX åã®ãã©ãŠã¶ãèµ·åãããã¹ãã®å®äºåŸã«ãã¹ãŠã®ãªãœãŒã¹ãåæ¢ããŸãã Moon ã䜿çšããå Žåããã¹ããå®è¡ããé »åºŠã«é¢ä¿ãªããæ¯æ XNUMX x XNUMX = XNUMX ãã«ãè¿œå ã§æ¯æãå¿ èŠããããŸãã ç¹°ãè¿ããŸãããç§ã¯Moonã䜿ããªãšèšã£ãŠããããã§ã¯ãããŸããã ããã¯ãçµç¹å ã«å€ãã®ãããžã§ã¯ã/ããŒã ããããå šå¡ã«å·šå€§ãªå ±éã¯ã©ã¹ã¿ãŒãå¿ èŠãªå Žåãªã©ãã¿ã¹ã¯ã«ãšã£ãŠäžå¯æ¬ ãªãœãªã¥ãŒã·ã§ã³ãšãªãå¯èœæ§ããããŸãã ãã€ãã®ããã«ãæåŸã«ãªã³ã¯ãæ®ããã¿ã¹ã¯ã®ã³ã³ããã¹ãã§å¿ èŠãªèšç®ããã¹ãŠå®è¡ããããšããå§ãããŸãã
ã«ãªã¹ãïŒïŒæ³šæïŒ ããã¯å ã®èšäºã«ã¯ãªãããã·ã¢èªç¿»èš³ã«ã®ã¿å«ãŸããŠããŸã)
å ã»ã©ãè¿°ã¹ãããã«ãSelenium ã¯éåžžã«äººæ°ã®ããããŒã«ã§ãããIT åéã¯éåžžã«æ¥éã«çºå±ããŠããŸãã ç§ã翻蚳ã«åãçµãã§ããéã«ãCallisto ãšåŒã°ããæ°ããææãªããŒã«ã Web äžã«ç»å ŽããŸãã (ããã«ã¡ã¯ãCypress ããã®ä»ã® Selenium ãã©ãŒã§ã)ã K8 ã§ãã€ãã£ãã«åäœããããŒãå šäœã«åæ£ããããããå 㧠Selenoid ã³ã³ãããå®è¡ã§ããŸãã èªåã¹ã±ãŒãªã³ã°ãå«ãããã¹ãŠãç®±ããåºããŠããã«æ©èœããŸãã çŽ æŽãããã§ããããã¹ãããå¿ èŠããããŸãã ç§ã¯ãã§ã«ãã®ããŒã«ããããã€ããããã€ãã®å®éšãå®è¡ããããšãã§ããŸããã ããããçµè«ãåºãã®ã¯ææå°æ©ã§ããé·è·é¢ã§çµæãåºãããå°æ¥ã®èšäºã§ã¬ãã¥ãŒãããããããŸããã ä»ã®ãšãããç¬ç«ããç 究ã®ããã®ãªã³ã¯ã®ã¿ãæ®ããŠãããŸãã
ã€ã³ãã©ã®çŸç¶ã€ã¡ãŒãž
æ¢çŽ¢ããããã®ãªã³ã¯
Kubernetes:ã»ããã¢ãã Kubernetes: å°é£ãªé Kubernetes: ã»ã¬ã³ GCP: Kubernetes ãšã³ãžã³ æ Kubernetes ã®æ¬ Kubernetes ã䜿çšããåæ£ãªãŒãã¡ãŒã·ã§ã³ Seleniumã°ãªãã4 ã«ãªã¹ã GitHub Wrike TechClub (ã«ãªã¹ã)
åæ§ã®ããŒã«
7. ã³ãŒããšããŠã®ã€ã³ãã©ã¹ãã©ã¯ã㣠(IaC)
ãã¯ãããžãŒã®ç°¡åãªèª¬æ
ãããŠããããæåŸã®ã»ã¯ã·ã§ã³ã§ãã éåžžããã®ãã¯ãããžãŒãšé¢é£ã¿ã¹ã¯ã¯èªååãšã³ãžãã¢ã®è²¬ä»»ã§ã¯ãããŸããã ããã«ã¯çç±ããããŸãã ãŸããå€ãã®çµç¹ã§ã¯ãã€ã³ãã©ã¹ãã©ã¯ãã£ã®åé¡ã¯ DevOps éšéã®ç®¡çäžã«ãããéçºããŒã ã¯ãäœããã€ãã©ã€ã³ãæ©èœãããã®ãããã€ãã©ã€ã³ã«æ¥ç¶ãããŠãããã¹ãŠã®ãã®ãã©ã®ããã«ãµããŒãããå¿ èŠãããã®ãââã«ã€ããŠããŸãæ°ã«ããŠããŸããã 第 XNUMX ã«ãæ£çŽã«èšããšãInfrastructure as Code (IaC) ã®å®è·µã¯ãŸã å€ãã®äŒæ¥ã§æ¡çšãããŠããŸããã ããããããã¯ééããªã人æ°ã®ãã¬ã³ãã«ãªã£ãŠãããããã«é¢é£ããããã»ã¹ãã¢ãããŒããããŒã«ã«åå ããããšããããšãéèŠã§ãã ãŸãã¯å°ãªããšãææ°ã®ç¶æ ãç¶æããŠãã ããã
ãã®ã¢ãããŒãã䜿çšããåæ©ããå§ããŸãããã GitlabCI ã§ãã¹ããå®è¡ããã«ã¯ãå°ãªããšã Gitlab Runner ãå®è¡ããããã®ãªãœãŒã¹ãå¿ èŠã§ããããšã«ã€ããŠã¯ãã§ã«èª¬æããŸããã ãŸãããã©ãŠã¶/ãšãã¥ã¬ãŒã¿ã§ã³ã³ãããå®è¡ããã«ã¯ãVM ãŸãã¯ã¯ã©ã¹ã¿ãäºçŽããå¿ èŠããããŸãã ãªãœãŒã¹ã®ãã¹ãã«å ããŠãéçºãã¹ããŒãžã³ã°ãéçšç°å¢ããµããŒãããããã®å€§éã®å®¹éãå¿ èŠã§ããããã«ã¯ãããŒã¿ããŒã¹ãèªåã¹ã±ãžã¥ãŒã«ããããã¯ãŒã¯æ§æãããŒã ãã©ã³ãµãŒããŠãŒã¶ãŒæš©éãªã©ãå«ãŸããŸãã éèŠãªåé¡ã¯ãããããã¹ãŠãµããŒãããããã«å¿ èŠãªåŽåã§ãã å€æŽãå ããŠæŽæ°ãããŒã«ã¢ãŠãããã«ã¯ãããã€ãã®æ¹æ³ããããŸãã ããšãã°ãGCP ã®ã³ã³ããã¹ãã§ã¯ããã©ãŠã¶ã§ UI ã³ã³ãœãŒã«ã䜿çšãããã¿ã³ãã¯ãªãã¯ããããšã§ãã¹ãŠã®ã¢ã¯ã·ã§ã³ãå®è¡ã§ããŸãã 代ããã«ãAPI åŒã³åºãã䜿çšããŠã¯ã©ãŠã ãšã³ãã£ãã£ãšå¯Ÿè©±ããããgcloud ã³ãã³ã ã©ã€ã³ ãŠãŒãã£ãªãã£ã䜿çšããŠå¿ èŠãªæäœãå®è¡ããããšãã§ããŸãã ããããéåžžã«å€ãã®ç°ãªããšã³ãã£ãã£ãã€ã³ãã©ã¹ãã©ã¯ãã£èŠçŽ ãããå Žåããã¹ãŠã®æäœãæåã§å®è¡ããããšã¯å°é£ããŸãã¯äžå¯èœã«ãªããŸãã ããã«ããããã®æåæäœã¯ãã¹ãŠå¶åŸ¡ã§ããŸããã å®è¡åã«ã¬ãã¥ãŒã®ããã«éä¿¡ããããããŒãžã§ã³ç®¡çã·ã¹ãã ã䜿çšããããã€ã³ã·ãã³ãã®åå ãšãªã£ãå€æŽãè¿ éã«ããŒã«ããã¯ãããããããšã¯ã§ããŸããã ãã®ãããªåé¡ã解決ããããã«ããšã³ãžãã¢ã¯èªå bash/ã·ã§ã« ã¹ã¯ãªãããäœæããã³äœæããŸããããæç¶ãåã¹ã¿ã€ã«ã§ããã«èªã¿ãç解ããä¿å®ããå€æŽããã®ã¯ããã»ã©ç°¡åã§ã¯ãªãããã以åã®æ¹æ³ãããããã»ã©åªããŠããããã§ã¯ãããŸããã
ãã®èšäºãšããŠã㌠ã¬ã€ãã§ã¯ãIaC ã®å®è·µã«é¢é£ãã 2 ã€ã®ããŒã«ã䜿çšããŸãã ãããTerraformãšAnsibleã§ãã ãããã®æ©èœã¯äŒŒãŠãããäºææ§ããããããåæã«äœ¿çšããã®ã¯æå³ããªããšèãã人ãããŸãã ãããå®éã«ã¯ãæåã¯ãŸã£ããç°ãªãã¿ã¹ã¯ãäžããããŸãã ãããŠããããã®ããŒã«ãçžäºã«è£å®ãåãã¹ãã§ãããšããäºå®ã¯ãHashiCorp ãš RedHat ã代衚ããéçºè ã«ããå ±åãã¬ãŒã³ããŒã·ã§ã³ã§ç¢ºèªãããŸããã æŠå¿µçãªéãã¯ãTerraform ããµãŒããŒèªäœã管çããããã®ããããžã§ãã³ã° ããŒã«ã§ããããšã§ãã Ansible ã¯æ§æ管çããŒã«ã§ããããã®ã¿ã¹ã¯ã¯ãããã®ãµãŒããŒã«ãœãããŠã§ã¢ãã€ã³ã¹ããŒã«ãæ§æã管çããããšã§ãã
ãããã®ããŒã«ã®ãã 10 ã€ã®éèŠãªç¹åŸŽã¯ãã³ãŒãã£ã³ã° ã¹ã¿ã€ã«ã§ãã bash ã Ansible ãšã¯ç°ãªããTerraform ã¯ãå®è¡ã®çµæãšããŠéæãããæãŸããæçµç¶æ ã®èšè¿°ã«åºã¥ã宣èšåã¹ã¿ã€ã«ã䜿çšããŸãã ããšãã°ã10 åã® VM ãäœæããTerraform ãéããŠå€æŽãé©çšããå Žåã10 åã® VM ãåŸãããŸãã ã¹ã¯ãªãããå床å®è¡ããŠãããã§ã« 10 åã® VM ãããããäœãèµ·ãããŸãããTerraform ã¯ã€ã³ãã©ã¹ãã©ã¯ãã£ã®çŸåšã®ç¶æ ãç¶æ ãã¡ã€ã«ã«ä¿åããŠããããããããèªèããŸãã ãã ããAnsible ã¯æç¶ãåã¢ãããŒãã䜿çšããŠããã10 åã® VM ãäœæããããã«èŠæ±ãããšãTerraform ãšåæ§ã«ãæåã®èµ·åæã« 20 åã® VM ãååŸããŸãã ãã ããåèµ·ååŸã¯ãã§ã« XNUMX åã® VM ãååšããŸãã ãããéèŠãªéãã§ãã æç¶ãåã¹ã¿ã€ã«ã§ã¯ãçŸåšã®ç¶æ ãä¿åãããå®è¡ããå¿ èŠãããäžé£ã®ã¹ããããåã«èšè¿°ããã ãã§ãã ãã¡ããããªãœãŒã¹ã®ååšãšçŸåšã®ç¶æ ã«ã€ããŠããã€ãã®ãã§ãã¯ãè¿œå ããŠãããŸããŸãªç¶æ³ã«å¯ŸåŠããããšã¯ã§ããŸããããã®ããžãã¯ã®å¶åŸ¡ã«æéãç¡é§ã«ããŠåŽåãè²»ããããšã¯æå³ããããŸããã ããã«ãééããç¯ããªã¹ã¯ãé«ãŸããŸãã
äžèšããã¹ãŠèŠçŽãããšãTerraform ãšå®£èšçè¡šèšæ³ããµãŒããŒã®ããããžã§ãã³ã°ã«é©ããããŒã«ã§ãããšçµè«ä»ããããšãã§ããŸãã ãã ããæ§æ管çã®äœæ¥ã Ansible ã«å§ä»»ããæ¹ãè¯ãã§ãããã ããã¯ããŠãããèªååã®ã³ã³ããã¹ãã§ãŠãŒã¹ã±ãŒã¹ãèŠãŠã¿ãŸãããã
èªååã€ã³ãã©ã¹ãã©ã¯ãã£ã®äŸ¡å€
ããã§ç解ãã¹ãå¯äžã®éèŠãªããšã¯ããã¹ãèªååã€ã³ãã©ã¹ãã©ã¯ãã£ã¯äŒæ¥ã€ã³ãã©ã¹ãã©ã¯ãã£å šäœã®äžéšãšããŠèæ ®ãããã¹ãã§ãããšããããšã§ãã ããã¯ããã¹ãŠã® IaC ãã©ã¯ãã£ã¹ãçµç¹å šäœã®ãªãœãŒã¹ã«ã°ããŒãã«ã«é©çšããå¿ èŠãããããšãæå³ããŸãã 誰ãããã«è²¬ä»»ãæã€ãã¯ããã»ã¹ã«ãã£ãŠç°ãªããŸãã DevOps ããŒã ã¯ãããã®åé¡ã«é¢ããŠããçµéšãè±å¯ã§ãäœãèµ·ãã£ãŠãããã®å šäœåãææ¡ããŠããŸãã ãã ããQA ãšã³ãžãã¢ã¯èªååã®æ§ç¯ããã»ã¹ãšãã€ãã©ã€ã³ã®æ§é ã«ããæ·±ãé¢äžãããããå¿ èŠãªãã¹ãŠã®å€æŽãšæ¹åã®æ©äŒãããããç解ã§ããããã«ãªããŸãã æåã®éžæè¢ã¯ãæåŸ ãããçµæãéæããããã«ååããç¥èãã¢ã€ãã¢ã亀æããããšã§ãã
ããã§ã¯ããã¹ãèªååãšä»¥åã«èª¬æããããŒã«ã®ã³ã³ããã¹ãã§ã® Terraform ãš Ansible ã®äœ¿çšäŸãããã€ã瀺ããŸãã
1. Terraform ã䜿çšããŠãVM ãšã¯ã©ã¹ã¿ãŒã«å¿ èŠãªç¹æ§ãšãã©ã¡ãŒã¿ãŒãèšè¿°ããŸãã
2. Ansible ã䜿çšããŠããã¹ãã«å¿ èŠãªããŒã« (dockerãSelenoidãSelenium Grid) ãã€ã³ã¹ããŒã«ãããã©ãŠã¶/ãšãã¥ã¬ãŒã¿ã®å¿ èŠãªããŒãžã§ã³ãããŠã³ããŒãããŸãã
3. Terraform ã䜿çšããŠãGitLab Runner ãèµ·åããã VM ã®ç¹æ§ãèšè¿°ããŸãã
4. Ansible ã䜿çšã㊠GitLab Runner ãšå¿ èŠãªä»å±ããŒã«ãã€ã³ã¹ããŒã«ããèšå®ãšæ§æãèšå®ããŸãã
ã€ã³ãã©ã®çŸç¶ã€ã¡ãŒãž
æ¢çŽ¢ãããªã³ã¯:
ãã©ãã©ãŒã Ansible Ansible ãš Terraform ã䜵çšãããšããå¹æçã§ã Terraform ã®å æ¬çãªã¬ã€ã ChefãPuppetãAnsibleãSaltStackãCloudFormation ã§ã¯ãªã Terraform ã䜿çšããçç± GCP: IaC
åæ§ã®ããŒã«
ãŸãšããŠã¿ãŸãããïŒ
æé
ãã¯ãããžãŒ
ããŒã«
èªååã€ã³ãã©ã¹ãã©ã¯ãã£ã®äŸ¡å€
1
ããŒã«ã«å®è¡
Node.jsãSeleniumãAppium
- Web ããã³ã¢ãã€ã«çšã®æã人æ°ã®ããããŒã«
- å€ãã®èšèªãšãã©ãããã©ãŒã ããµããŒã (Node.js ãå«ã)
2
ããŒãžã§ã³ç®¡çã·ã¹ãã
Gitã®
- éçºã³ãŒãã§ãåæ§ã®å©ç¹ããããŸã
3
ã³ã³ããå
DockerãSelenium ã°ãªãããSelenoid (WebãAndroid)
- ãã¹ãã䞊è¡ããŠå®è¡ãã
- éé¢ãããç°å¢
- ã·ã³ãã«ãã€æè»ãªããŒãžã§ã³ã¢ããã°ã¬ãŒã
- æªäœ¿çšã®ãªãœãŒã¹ãåçã«åæ¢ãã
- ã»ããã¢ãããç°¡å
4
CI/CD
Gitlab CI
- ãã€ãã©ã€ã³ã®äžéšããã¹ãããŸã
- ã¯ã€ãã¯ãã£ãŒãããã¯
- äŒç€Ÿ/ããŒã å šäœã®å¯èŠæ§
5
ã¯ã©ãŠããã©ãããã©ãŒã
Google Cloud Platform
- ãªã³ããã³ãã®ãªãœãŒã¹ (å¿ èŠãªå Žåã«ã®ã¿æéãæ¯æããŸã)
- 管çãšæŽæ°ãç°¡å
- ãã¹ãŠã®ãªãœãŒã¹ã®å¯èŠåãšå¶åŸ¡
6
ç·šæ
Kubernetes
ãããå
ã®ãã©ãŠã¶/ãšãã¥ã¬ãŒã¿ãåããã³ã³ããã®ã³ã³ããã¹ãã§ã¯ã次ã®ããã«ãªããŸãã
- ã¹ã±ãŒãªã³ã°/ãªãŒãã¹ã±ãŒãªã³ã°
- èªå·±ä¿®åŸ©
- äžæã®ãªãæŽæ°ãšããŒã«ããã¯
7
ã³ãŒããšããŠã®ã€ã³ãã©ã¹ãã©ã¯ã㣠(IaC)
TerraformãAnsible
- éçºã€ã³ãã©ã¹ãã©ã¯ãã£ã§ãåæ§ã®ã¡ãªãããåŸãããŸã
- ã³ãŒãã®ããŒãžã§ã³ç®¡çã®ãã¹ãŠã®å©ç¹
- å€æŽãšã¡ã³ããã³ã¹ãç°¡å
- å®å šèªåå
ãã€ã³ã ãããå³: ã€ã³ãã©ã¹ãã©ã¯ãã£ã®é²å
ã¹ããã1: ããŒã«ã«
ã¹ããã2: VCS
step3: ã³ã³ããå
ã¹ããã4: CI/CD
step5: ã¯ã©ãŠããã©ãããã©ãŒã
step6:ãªãŒã±ã¹ãã¬ãŒã·ã§ã³
ã¹ããã7:IaC
次ã¯äœã§ããïŒ
ããã§ãã®èšäºã¯çµããã§ãã ãããçµè«ãšããŠãç§ã¯ããªããšããã€ãã®åå®ãçµã³ãããšæããŸãã
ããªãã®åŽãã
åé ã§è¿°ã¹ãããã«ããã®èšäºãå®è·µã«åœ¹ç«ã¡ãåŸãããç¥èãå®éã®ä»äºã«é©çšããã®ã«åœ¹ç«ã€ããšãé¡ã£ãŠããŸãã ããäžåºŠè¿œå ããŸã
ããããã®åŸããç«ã¡æ¢ãŸããã«ç·Žç¿ããé¢é£ãããªã³ã¯ãæžç±ãç 究ãã瀟å ã§ã©ã®ããã«æ©èœãããã調ã¹ãæ¹åã§ããç®æãèŠã€ããŠåå ããŠãã ããã 幞éãïŒ
ç§ã®åŽãã
ã¿ã€ãã«ããããŠãããã¯ãŸã æåã®éšåã«ãããªãããšãããããŸãã ããªã倧èŠæš¡ãªãã®ã«ãªã£ãã«ãããããããéèŠãªãããã¯ã¯ãŸã ããã§ã¯åãäžããããŠããŸããã XNUMX çªç®ã®ããŒãã§ã¯ãIOS ã®ã³ã³ããã¹ãã§èªååã€ã³ãã©ã¹ãã©ã¯ãã£ãæ€èšããäºå®ã§ãã iOS ã·ãã¥ã¬ãŒã¿ã macOS ã·ã¹ãã äžã§ã®ã¿å®è¡ãããšãã Apple ã®å¶éã«ãããåœç€Ÿã®ãœãªã¥ãŒã·ã§ã³ã®ç¯å²ã¯çããªã£ãŠããŸãã ããšãã°ãDocker ã䜿çšããŠã·ãã¥ã¬ãŒã¿ãŒãå®è¡ãããããããªã㯠ã¯ã©ãŠãã䜿çšããŠä»®æ³ãã·ã³ãå®è¡ãããããããšã¯ã§ããŸããã ããããããã¯ä»ã®éžæè¢ããªããšããæå³ã§ã¯ãããŸããã é«åºŠãªãœãªã¥ãŒã·ã§ã³ãšææ°ã®ããŒã«ã«ã€ããŠææ°æ å ±ãæäŸã§ããããåªããŸãã
ãŸããç£èŠã«é¢ããããªã倧ããªè©±é¡ã«ã€ããŠã¯è§ŠããŠãããŸããã ããŒã 3 ã§ã¯ãæãäžè¬çãªã€ã³ãã©ã¹ãã©ã¯ãã£ç£èŠããŒã«ãšãèæ ®ãã¹ãããŒã¿ãšææšã«ã€ããŠèŠãŠãããŸãã
ãããŠæåŸã«ã å°æ¥çã«ã¯ããã¹ã ã€ã³ãã©ã¹ãã©ã¯ãã£ãšäžè¬çãªããŒã«ã®æ§ç¯ã«é¢ãããã㪠ã³ãŒã¹ããªãªãŒã¹ããäºå®ã§ãã çŸåšãã€ã³ã¿ãŒãããäžã«ã¯ DevOps ã«é¢ããããªãã®æ°ã®ã³ãŒã¹ãè¬çŸ©ããããŸããããã¹ãŠã®è³æã¯ãã¹ãèªååã§ã¯ãªããéçºã®ã³ã³ããã¹ãã§æ瀺ãããŠããŸãã ãã®åé¡ã«é¢ããŠã¯ããã®ãããªã³ãŒã¹ããã¹ã¿ãŒãèªååãšã³ãžãã¢ã®ã³ãã¥ããã£ã«ãšã£ãŠèå³æ·±ã䟡å€ããããã©ããã«ã€ããŠã®ãã£ãŒãããã¯ãæ¬åœã«å¿ èŠã§ãã ãããããé¡ãããŸãïŒ
åºæïŒ habr.com