è€æ°è£œåã®ãœãããŠã§ã¢ ãã³ããŒããã°ãã°çŽé¢ããåé¡ã® XNUMX ã€ã¯ãéçºè
ããã¹ã¿ãŒãã€ã³ãã©ã¹ãã©ã¯ãã£ç®¡çè
ãªã©ã®ãšã³ãžãã¢ã®èœåãã»ãŒãã¹ãŠã®ããŒã ã§éè€ããŠããããšã§ãã ããã¯ãè² è·ãã¹ãã®åéã®å°é家ã§ããé«äŸ¡ãªãšã³ãžãã¢ã«ãåœãŠã¯ãŸããŸãã
ãšã³ãžãã¢ã¯ãçŽæ¥ã®æ¥åãéè¡ããç¬èªã®çµéšã掻ãããŠè² è·ãã¹ã ããã»ã¹ãæ§ç¯ããæ¹æ³è«ãæé©ãªã¡ããªã¯ã¹ãéžæããè² è·ãããã¡ã€ã«ã«åŸã£ãŠèªåãã¹ããäœæãã代ããã«ãå€ãã®å Žåããã¹ã ã€ã³ãã©ã¹ãã©ã¯ãã£ãæåããå±éããè² è·ããŒã«ãæ§æããããããåã蟌ãå¿ èŠããããŸãã CI ã·ã¹ãã å ã§ç£èŠãèšå®ããã¬ããŒããçºè¡ããŸãã
çµç¹ã®åé¡ã®è§£æ±ºçã¯ãPositive Technologies ã§äœ¿çšãããŠãããã¹ãã§èŠã€ããããšãã§ããŸãã
ã³ã³ã»ããã®æ¬è³ª
ãµãŒãã¹ãšããŠã®è² è·ãã¹ãã®æŠå¿µã¯ãè² è·ããŒã« Apache JMeterãYandex.Tankãããã³ç¬èªã®ãã¬ãŒã ã¯ãŒã¯ãä»»æã®ç¶ç¶ççµ±åã·ã¹ãã ã«çµ±åã§ããæ©èœãæå³ããŸãã ãã®ãã¢ã¯ GitLab CI çšã§ãããååã¯ãã¹ãŠã® CI ã·ã¹ãã ã«å ±éã§ãã
ãµãŒãã¹ãšããŠã®è² è·ãã¹ãã¯ãè² è·ãã¹ãã®ããã®äžå çãªãµãŒãã¹ã§ãã è² è·ãã¹ãã¯å°çšã®ãšãŒãžã§ã³ã ããŒã«ã§å®è¡ãããçµæ㯠GitLab PagesãInflux DBãGrafanaããŸãã¯ãã¹ã ã¬ããŒã ã·ã¹ãã (TestRailãReportPortal ãªã©) ã§èªåçã«å ¬éãããŸãã èªååãšã¹ã±ãŒãªã³ã°ã¯ãGitLab CI ãããžã§ã¯ãã«éåžžã® gitlab-ci.yml ãã³ãã¬ãŒããè¿œå ããŠãã©ã¡ãŒã¿åããããšã§ãã§ããã ãç°¡åã«å®è£ ãããŸãã
ãã®ã¢ãããŒãã®å©ç¹ã¯ãCI ã€ã³ãã©ã¹ãã©ã¯ãã£å šäœãããŒã ãšãŒãžã§ã³ããããŒã ãœãŒã¹ã® Docker ã€ã¡ãŒãžããã¹ã ãã€ãã©ã€ã³ãããã³ã¬ããŒãã®çºè¡ãéäžåãããèªååéšé (DevOps ãšã³ãžãã¢) ã«ãã£ãŠç¶æãããäžæ¹ãããŒã ãã¹ã ãšã³ãžãã¢ã¯ãã¹ãéçºã«éäžã§ããããšã§ããã€ã³ãã©ã¹ãã©ã¯ãã£ã®åé¡ã«å¯ŸåŠããããšãªãããã®çµæãåæããŸãã
説æãç°¡åã«ããããããã¹ã察象ã®ã¿ãŒã²ãã ã¢ããªã±ãŒã·ã§ã³ãŸãã¯ãµãŒããŒãäºåã«ãããã€ããã³æ§æãããŠãããšä»®å®ããŸã (ããã«ã¯ãPythonãSaltStackãAnsible ãªã©ã®èªåã¹ã¯ãªããã䜿çšã§ããŸã)ã ãããã£ãŠããµãŒãã¹ãšããŠã®è² è·ãã¹ãã®æŠå¿µå šäœã¯ã次㮠XNUMX ã€ã®æ®µéã«åœãŠã¯ãŸããŸãã ã¬ããŒãã®æºåããã¹ããçºè¡ã å³ã®è©³çŽ° (ãã¹ãŠã®åçã¯ã¯ãªãã¯å¯èœã§ã):
è² è·ãã¹ãã®åºæ¬æŠå¿µãšå®çŸ©
è² è·ãã¹ããå®æœããéã«ã¯ã次ã®ããšãéµå®ããããåªããŸãã
ããŒããšãŒãžã§ã³ã - ã¢ããªã±ãŒã·ã§ã³ãèµ·åãããä»®æ³ãã·ã³ - ããŒã ãœãŒã¹ (Apache JMeterãYandex.TankããŸãã¯èªå·±äœæã®ããŒã ã¢ãžã¥ãŒã«)ã
ãã¹ãã®ãŽãŒã«ïŒç®æšïŒ - ãµãŒããŒããŸãã¯ãµãŒããŒã«ã€ã³ã¹ããŒã«ãããŠããè² è·ã®ãããã¢ããªã±ãŒã·ã§ã³ã
ãã¹ãã·ããªãªïŒãã¹ãã±ãŒã¹ïŒ - ãã©ã¡ãŒã¿åãããäžé£ã®ã¹ããã: æå®ããããã©ã¡ãŒã¿ã«å¿ããŠãåºå®ã®ãããã¯ãŒã¯èŠæ±ãšå¿çã䌎ãããŠãŒã¶ãŒã®ã¢ã¯ã·ã§ã³ãšãããã®ã¢ã¯ã·ã§ã³ã«å¯Ÿããäºæ³ãããåå¿ã
ãããã¡ã€ã«ãŸãã¯è² è·èšç» (ãããã¡ã€ã«) - ã§
ãã¹ã â äºåã«èšå®ããããã©ã¡ãŒã¿ã®ã»ãããå«ãã¹ã¯ãªããã
ãã¹ãèšç» (ãã¹ãèšç») - äžé£ã®ãã¹ããšè² è·ãããã¡ã€ã«ã
ãã¹ãã©ã³ (ãã¹ãã©ã³) - å®å šã«å®è¡ãããè² è·ã·ããªãªãšåä¿¡ããã¬ããŒãã䜿çšã㊠XNUMX ã€ã®ãã¹ããå®è¡ãã XNUMX åã®å埩ã
ãããã¯ãŒã¯ãªã¯ãšã¹ãïŒãªã¯ãšã¹ãïŒ â ãšãŒãžã§ã³ãããã¿ãŒã²ããã«éä¿¡ããã HTTP ãªã¯ãšã¹ãã
ãããã¯ãŒã¯å¿çïŒå¿çïŒ â ã¿ãŒã²ãããããšãŒãžã§ã³ãã«éä¿¡ããã HTTP å¿çã
HTTP å¿çã³ãŒã (HTTP å¿çã¹ããŒã¿ã¹) - ã¢ããªã±ãŒã·ã§ã³ ãµãŒããŒããã®æšæºå¿çã³ãŒãã
ãã©ã³ã¶ã¯ã·ã§ã³ã¯ãå®å
šãªèŠæ±ãšå¿çã®ãµã€ã¯ã«ã§ãã ãã©ã³ã¶ã¯ã·ã§ã³ã¯ããªã¯ãšã¹ãïŒãªã¯ãšã¹ãïŒã®éä¿¡ãéå§ããŠããå¿çïŒã¬ã¹ãã³ã¹ïŒã®åä¿¡ãå®äºãããŸã§ã«ãŠã³ããããŸãã
ååŒã¹ããŒã¿ã¹ - èŠæ±ãšå¿çã®ãµã€ã¯ã«ãæ£åžžã«å®äºã§ãããã©ããã ãã®ãµã€ã¯ã«ã§ãšã©ãŒãçºçããå Žåããã©ã³ã¶ã¯ã·ã§ã³å šäœã倱æãããšã¿ãªãããŸãã
å¿çæéïŒã¬ã€ãã³ã·ïŒ - ãªã¯ãšã¹ãïŒãªã¯ãšã¹ãïŒã®éä¿¡ãçµäºããŠããå¿çïŒã¬ã¹ãã³ã¹ïŒã®åä¿¡ãéå§ããããŸã§ã®æéã
ããŒãã¡ããªã¯ã¹ â è² è·ãã¹ãã®ããã»ã¹ã§æ±ºå®ããããè² è·ããããµãŒãã¹ãšè² è·ãšãŒãžã§ã³ãã®ç¹æ§ã
è² è·ãã©ã¡ãŒã¿ã枬å®ããããã®åºæ¬çãªã¡ããªã¯ã¹
æ¹æ³è«ã§æãäžè¬çã«äœ¿çšãããæšå¥šããããã®ã®ããã€ã
ããŒããšãŒãžã§ã³ãã®ã¡ããªã¯ã¹
è² è·äžã§ãã¹ããããã¿ãŒã²ãã ã·ã¹ãã ãŸãã¯ã¢ããªã±ãŒã·ã§ã³ã®ã¡ããªã¯ã¹
æ° vCPU ãããŠèšæ¶ RAM,
ãã£ã¹ã¯ - è² è·å€ã®ãéãç¹æ§
CPU, ã¡ã¢ãªããã£ã¹ã¯äœ¿çšé - CPUãã¡ã¢ãªããã£ã¹ã¯è² è·ã®ãã€ããã¯ã¹
ãã¹ãäžã§ãã éåžžã次ã®å²åãšããŠæž¬å®ãããŸãã
å©çšå¯èœãªæ倧å€
ãããã¯ãŒã¯ã¹ã«ãŒããã (ãšãŒãžã§ã³ãè² è·æ) - ã¹ã«ãŒããã
ãµãŒããŒäžã®ãããã¯ãŒã¯ã€ã³ã¿ãŒãã§ã€ã¹ã
ããŒã ãšãŒãžã§ã³ããã€ã³ã¹ããŒã«ãããŠããå Žæã
éåžžãXNUMX ç§ãããã®ãã€ãæ° (bps) ã§æž¬å®ãããŸãã
ãããã¯ãŒã¯ã¹ã«ãŒããã(ç®æšéã) - ãããã¯ãŒã¯ ã€ã³ã¿ãŒãã§ã€ã¹ã®åž¯åå¹
ã¿ãŒã²ãããµãŒããŒäžã§ã éåžžãXNUMX ç§ãããã®ãã€ãæ° (bps) ã§æž¬å®ãããŸãã
ä»®æ³ãŠãŒã¶ãŒ- ä»®æ³ãŠãŒã¶ãŒã®æ°ã
è² è·ã·ããªãªã®å®è£
ãš
å®éã®ãŠãŒã¶ãŒã®ã¢ã¯ã·ã§ã³ãæš¡å£ãã
ä»®æ³ãŠãŒã¶ãŒã®ã¹ããŒã¿ã¹ãæå/倱æ/åèš - æåããæ°ãšå€±æããæ°
ä»®æ³ãŠãŒã¶ãŒã®å€±æã¹ããŒã¿ã¹
è² è·ã·ããªãªãšãã®åèšæ°ã
äžè¬ã«ããã¹ãŠã®ãŠãŒã¶ãŒãå®äºã§ããããšãæåŸ
ãããŸãã
è² è·ãããã¡ã€ã«ã§æå®ããããã¹ãŠã®ã¿ã¹ã¯ã
ãšã©ãŒãçºçãããšãå®éã®ãŠãŒã¶ãŒã¯æ¬¡ã®æäœãè¡ãããšãã§ããªããªããŸãã
ã·ã¹ãã ãæäœããéã®åé¡ã解決ãã
XNUMX ç§ãããã®ãªã¯ãšã¹ãæ° (å)- XNUMX ç§ (ãŸã㯠XNUMX å) ãããã®ãããã¯ãŒã¯ ãªã¯ãšã¹ãã®æ°ã
ããŒã ãšãŒãžã§ã³ãã®éèŠãªç¹æ§ã¯ãçæã§ãããªã¯ãšã¹ãã®æ°ã§ãã
å®éãããã¯ä»®æ³ãŠãŒã¶ãŒã«ããã¢ããªã±ãŒã·ã§ã³ãžã®ã¢ã¯ã»ã¹ãæš¡å£ãããã®ã§ãã
XNUMX ç§ãããã®å¿çæ° (å)
- XNUMX ç§ (ãŸã㯠XNUMX å) ãããã®ãããã¯ãŒã¯å¿çã®æ°ã
察象ãµãŒãã¹ã®éèŠãªç¹åŸŽ: éé¡
ã¯ãšãªã«å¯Ÿããå¿çãçæããŠéä¿¡ããŸãã
ããŒãã£ã³ã°ãšãŒãžã§ã³ã
HTTPå¿çã¹ããŒã¿ã¹â ç°ãªãå¿çã³ãŒãã®æ°
ããŒã ãšãŒãžã§ã³ããåä¿¡ããã¢ããªã±ãŒã·ã§ã³ ãµãŒããŒããã
ããšãã°ã200 OK ã¯åŒã³åºããæåããããšãæå³ããŸãã
ããã³ 404 - ãªãœãŒã¹ãèŠã€ãããªãã£ãããš
ã¬ã€ãã³ã· (å¿çæé) - çµäºããã®æé
å¿ç (å¿ç) ã®åä¿¡ãéå§ããåã«èŠæ± (ãªã¯ãšã¹ã) ãéä¿¡ããŸãã
éåžžã¯ããªç§ (ms) åäœã§æž¬å®ãããŸãã
ãã©ã³ã¶ã¯ã·ã§ã³å¿çæéâ XNUMX ã€ã®å®äºãããã©ã³ã¶ã¯ã·ã§ã³ã®æéã
èŠæ±ãšå¿çã®ãµã€ã¯ã«ãå®äºããããšã
ãªã¯ãšã¹ãïŒãªã¯ãšã¹ãïŒã®éä¿¡éå§ããã®æéã§ã
å¿çïŒã¬ã¹ãã³ã¹ïŒã®åä¿¡ãå®äºãããŸã§ã
ãã©ã³ã¶ã¯ã·ã§ã³æéã¯ç§ (ãŸãã¯å) åäœã§æž¬å®ã§ããŸãã
ããã€ãã®æ¹æ³ã§: æå°éãèæ
®ãã
æ倧å€ãå¹³åå€ãããã³ããšãã° 90 ããŒã»ã³ã¿ã€ã«ã
æå°å€ãšæ倧å€ã極端ã«å€§ãã
ã·ã¹ãã ã®ããã©ãŒãã³ã¹ã¹ããŒã¿ã¹ã
XNUMX ããŒã»ã³ã¿ã€ã«ãæãäžè¬çã«äœ¿çšãããŸãã
ã»ãšãã©ã®ãŠãŒã¶ãŒã衚瀺ãããŠããããã
ã·ã¹ãã ããã©ãŒãã³ã¹ã®éŸå€ã§å¿«é©ã«åäœãã
XNUMX ç§ãããã®ãã©ã³ã¶ã¯ã·ã§ã³æ° (å) - å®äºããæ°
XNUMX ç§ãããã®ãã©ã³ã¶ã¯ã·ã§ã³ (å)ã
ã€ãŸããã¢ããªã±ãŒã·ã§ã³ãã©ãã ãåãå
¥ããããšãã§ãããã
ãªã¯ãšã¹ããåŠçããã¬ã¹ãã³ã¹ãçºè¡ããŸãã
å®éãããã¯ã·ã¹ãã ã®ã¹ã«ãŒãããã§ãã
ååŒã¹ããŒã¿ã¹ ãåæ Œ / 倱æ / åèš - æ°
æåã倱æãããã³ãã©ã³ã¶ã¯ã·ã§ã³ã®åèšæ°ã
å®éã®ãŠãŒã¶ãŒã倱æããå Žå
ãã©ã³ã¶ã¯ã·ã§ã³ã¯å®éã«ã¯æ¬¡ã®ããšãæå³ããŸã
è² è·ãããããšã·ã¹ãã ãåäœããªããªã
è² è·ãã¹ãã®æŠç¥å³
è² è·ãã¹ãã®æŠå¿µã¯éåžžã«ã·ã³ãã«ã§ããã§ã«è¿°ã¹ã XNUMX ã€ã®äž»èŠãªæ®µéã§æ§æãããŠããŸãã ãã¹ãã¬ããŒãã®æºåã€ãŸãããã¹ãç®æšãæºåããè² è·ãœãŒã¹ã®ãã©ã¡ãŒã¿ãŒãèšå®ãã次ã«è² è·ãã¹ããå®è¡ããæåŸã«ãã¹ã ã¬ããŒããçæããŠå ¬éããŸãã
åè·¯å³ã®ã¡ã¢:
- QA.Tester ã¯è² è·ãã¹ãã®å°é家ã§ãã
- Target ã¯ãè² è·æã®åäœãç¥ãããã¿ãŒã²ãã ã¢ããªã±ãŒã·ã§ã³ã§ãã
å³å ã®ãšã³ãã£ãã£ãã¹ããŒãžãã¹ãããã®åé¡å
段éãšã¹ããã
äœãèµ·ãã
å
¥ãå£ã«ã¯äœããããŸãã
åºåã¯äœã§ãã
æºå: ãã¹ãã®æºå段é
ããŒããã©ã¡ãŒã¿
èšå®ãšåæå
ãŠãŒã¶ãŒ
ãã©ã¡ãŒã¿ãããŒããã
ã¡ããªã¯ã¹ã®éžæãš
ãã¹ãèšç»ã®æºå
(è² è·ãããã¡ã€ã«)
ã«ã¹ã¿ã ãªãã·ã§ã³
ããŒããšãŒãžã§ã³ãã®åæå
ãã¹ãèšç»
ãã¹ãã®ç®ç
VM
ã¯ã©ãŠãå±é
ä»®æ³ãã·ã³ãš
å¿
èŠãªç¹æ§
ããŒããšãŒãžã§ã³ãã®VMèšå®
èªååã¹ã¯ãªãã
VMã®äœæ
VM ãæ§æãããŠãã
ã¯ã©ãŠã
ç°å¢
OSã®ã»ããã¢ãããšæºå
ã®ããã®ç°å¢
ãšãŒãžã§ã³ãã®äœæ¥ãããŒããã
ã®ç°å¢èšå®
ããŒããšãŒãžã§ã³ã
èªååã¹ã¯ãªãã
ç°å¢èšå®
çšæãããç°å¢ïŒ
OSããµãŒãã¹ãã¢ããªã±ãŒã·ã§ã³ã
ä»äºã«å¿
èŠãª
ããŒããšãŒãžã§ã³ã
ããŒããšãŒãžã§ã³ã
ã€ã³ã¹ããŒã«ãæ§æããã©ã¡ãŒã¿èšå®
ç©ã¿èŸŒã¿ãšãŒãžã§ã³ãã
ãŸãã¯ããã Docker ã€ã¡ãŒãžãããŠã³ããŒãããŸãã
äºåæ§æãããããŒããœãŒã¹
ãœãŒã¹ Docker ã€ã¡ãŒãžãããŒããã
(YATãJMããŸãã¯èªäœãã¬ãŒã ã¯ãŒã¯)
èšå®
ããŒããšãŒãžã§ã³ã
ã»ããã¢ããããŠæºåå®äº
äœæ¥è² è·ãšãŒãžã§ã³ããž
ãã¹ã: è² è·ãã¹ãã®å®è¡æ®µéã ãœãŒã¹ã¯ãGitLab CI ã®å°çšãšãŒãžã§ã³ã ããŒã«ã«ãããã€ãããããŒã ãšãŒãžã§ã³ãã§ã
è² è·
ããŒããšãŒãžã§ã³ãã®éå§
éžæãããã¹ãèšç»ã䜿çšããŠ
ãããŠãã©ã¡ãŒã¿ãããŒãããŸã
ãŠãŒã¶ãŒãªãã·ã§ã³
åæåçš
ããŒããšãŒãžã§ã³ã
ãã¹ãèšç»
ãã¹ãã®ç®ç
å®è¡ãã°
è² è·ãã¹ã
ã·ã¹ãã ãã°
ç®æšææšãšè² è·ãšãŒãžã§ã³ãã®å€åã®ãã€ããã¯ã¹
ãšãŒãžã§ã³ãã®å®è¡
ãšãŒãžã§ã³ãã®å®è¡
倧éã®ãã¹ãã¹ã¯ãªãã
вÑППÑвеÑÑÑвООÑ
è² è·ãããã¡ã€ã«
ããŒããšãŒãžã§ã³ãã®å¯Ÿè©±
ãã¹ãã®ç®çã§
ãã¹ãèšç»
ãã¹ãã®ç®ç
ãã°
ãçããã°ã®åé
è² è·ãã¹ãäž:
ãšãŒãžã§ã³ãã®ã¢ã¯ãã£ããã£èšé²ãããŒããã
ãã¹ã察象ã®ç¶æ
ããã³ãšãŒãžã§ã³ããå®è¡ããŠãã VM
å®è¡ãã°
è² è·ãã¹ã
ã·ã¹ãã ãã°
ã¡ããªãã¯
ãã¹ãäžã«ãçã®ãã¡ããªã¯ã¹ãåéãã
ç®æšææšã®å€åã®ãã€ããã¯ã¹
ãããŠãšãŒãžã§ã³ããããŒãããŸã
ã¬ããŒãïŒãã¹ãã¬ããŒãäœæ段é
çºçåš
åéãããåŠç
ããŒãã£ã³ã°ã·ã¹ãã ãš
ã¢ãã¿ãªã³ã°ã·ã¹ãã ãçã
ã¡ããªã¯ã¹ãšãã°
ã§ã®ã¬ããŒãã®äœæ
人éãèªãã圢åŒ
èŠçŽ ã§å¯èœ
ã¢ããªã¹ã
å®è¡ãã°
è² è·ãã¹ã
ã·ã¹ãã ãã°
ææšã®å€åã®ãã€ããã¯ã¹
ã¿ãŒã²ãããšããŒããšãŒãžã§ã³ã
åŠçããããçããã°
ã«é©ãããã©ãŒãããã§
å€éšã¹ãã¬ãŒãžã«ã¢ããããŒããã
éè·éã¬ããŒãã
人éãèªãã
ãããªãã·ã¥
å ±åæžã®çºè¡
è² è·ã«ã€ããŠ
å€éšã§ã®ãã¹ã
ãµãŒãã¹
å å·¥ããããçã
é©åãªåœ¢åŒã®ãã°
å€éšãžã®è·éããçš
ããŒã«ã
å€éšã«ä¿å
ã¹ãã¬ãŒãžã¬ããŒã
è² è·ãé©åãª
人éã®åæçš
CI ãã³ãã¬ãŒãã§ã®ããŒã ãœãŒã¹ã®æ¥ç¶
å®è·µçãªéšåã«ç§»ããŸãããã 瀟å
ã®ããã€ãã®ãããžã§ã¯ãã§ãã®æ¹æ³ã瀺ããã
ãŸããDevOps ãšã³ãžãã¢ã®ååãåŸãŠãGitLab CI ã«è² è·ãã¹ããå®è¡ããããã®å°çšã®ãšãŒãžã§ã³ã ããŒã«ãäœæããŸããã ãã³ãã¬ãŒãå
ã§ã¢ã»ã³ã㪠ããŒã«ãªã©ã®ä»ã®ãšãŒãžã§ã³ããšæ··åããªãããã«ããããã®ãšãŒãžã§ã³ãã«ã¿ã°ãè¿œå ããŸããã
ããŒããŠã§ã¢ããšã«å¿
èŠãªé»åã調ã¹ãã«ã¯ã©ãããã°ããã§ãã? ããŒã ãšãŒãžã§ã³ãã®ç¹æ§ (ååãªæ°ã® vCPUãRAMããã£ã¹ã¯) ã¯ãDockerãPython (Yandex.Tank çš)ãGitLab CI ãšãŒãžã§ã³ããJava (Apache JMeter çš) ããšãŒãžã§ã³ãäžã§å®è¡ãããå¿
èŠããããšããäºå®ã«åºã¥ããŠèšç®ã§ããŸãã ã JMeter ã§ã® Java ã®å Žåãæäœ 512 MB ã® RAM ã䜿çšããããšãæšå¥šãããŸããäžéãšããŠã
ãããã£ãŠãçµéšã«åºã¥ããŠãããŒã ãšãŒãžã§ã³ãã«ã¯å°ãªããšã 4 ã€ã® vCPUã4 GB RAMã60 GB SSD ã䜿çšããããšããå§ãããŸãã ãããã¯ãŒã¯ ã«ãŒãã®ã¹ã«ãŒãããã¯ãè² è·ãããã¡ã€ã«ã®èŠä»¶ã«åºã¥ããŠæ±ºå®ãããŸãã
ç§ãã¡ã¯äž»ã« XNUMX ã€ã®ããŒã ãœãŒã¹ãApache JMeter ãš Yandex.Tank Docker ã€ã¡ãŒãžã䜿çšããŸãã
瀟å
ã§ã®äœ¿ãããããšããã¹ã¿ãŒèªèº«ãç°å¢ãå€æŽããã³è¿œå ã§ããããã«ãããŒã ãœãŒã¹ã® Docker ã€ã¡ãŒãžã®ãã«ãã GitLab CI äžã«äœæãã瀟å
ã«å
¬éããŸããã
Yandex.Tank çšã«æ¬¡ã®åºæ¬ç㪠Docker ãã¡ã€ã«ã䜿çšããŸããã
Dockerfile
1 | FROM direvius/yandex-tank
2 | ENTRYPOINT [""]
Apache JMeter ã®å Žåã¯æ¬¡ã®ããã«ãªããŸãã
Dockerfile
1 | FROM vmarrazzo/jmeter
2 | ENTRYPOINT [""]
åœç€Ÿã®ç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ ã·ã¹ãã ãã©ã®ããã«æ©èœãããã«ã€ããŠã¯ãèšäºãããã芧ãã ããã
ãã³ãã¬ãŒããšãã€ãã©ã€ã³
è² è·ãã¹ããå®æœããããã®ãã³ãã¬ãŒãã®äŸã¯ããããžã§ã¯ãã§å
¥æã§ããŸãã
ãã®ãã³ãã¬ãŒãã¯éåžžã«ã·ã³ãã«ã§ãäžã®å³ã§èª¬æãããŠããè² è·ãã¹ãã® XNUMX ã€ã®æ®µé (ã¬ããŒãã®æºåããã¹ããå
¬é) ã瀺ããŠããŸãã ãã®è²¬ä»»è
- ã¹ããŒãž
æºå ãã¹ã ã¿ãŒã²ãããäºåèšå®ãããããã®å¯çšæ§ã確èªããããã«äœ¿çšããå¿ èŠããããŸãã ããŒã ãœãŒã¹ã®ç°å¢ãæ§æããå¿ èŠã¯ãããŸãããããŒã ãœãŒã¹ã¯ Docker ã€ã¡ãŒãžãšããŠäºåã«æ§ç¯ãããDocker ã¬ãžã¹ããªã«ãã¹ããããŸãããã¹ã段éã§å¿ èŠãªããŒãžã§ã³ãæå®ããã ãã§ãã ãã ããããããåæ§ç¯ããŠãå€æŽãå ããç¬èªã®ã€ã¡ãŒãžãäœæããããšã¯ã§ããŸãã - ã¹ããŒãž
ãã€ãŒã«è©Šä¹ ããŒã ãœãŒã¹ã®æå®ããã¹ãã®å®è¡ããã¹ã ã¢ãŒãã£ãã¡ã¯ãã®ä¿åã«äœ¿çšãããŸãã ããŒã ãœãŒã¹ã¯ãYandex.TankãApache JMeterãç¬èªã®ãã®ããŸãã¯ãã¹ãŠãäžç·ã«éžæã§ããŸãã äžèŠãªãœãŒã¹ãç¡å¹ã«ããã«ã¯ããžã§ããã³ã¡ã³ãã¢ãŠããããåé€ããŸãã ããŒã ãœãŒã¹ã®ãšã³ã㪠ãã€ã³ã:- Yandex.Tank ã®èµ·åãã©ã¡ãŒã¿ã¯ ã§æå®ãããŸãã
/tests/yandextank.sh , - Apache JMeter èµ·åãã©ã¡ãŒã¿ã¯ãã¡ã€ã«ã§æå®ãããŸã
./tests/jmeter.sh .
泚: ã¢ã»ã³ããªæ§æãã³ãã¬ãŒãã¯ãCI ã·ã¹ãã ãšã®å¯Ÿè©±ãã»ããã¢ããããããã«äœ¿çšãããããã«ãã¹ã ããžãã¯ãé 眮ããããšãæå³ãããã®ã§ã¯ãããŸããã ãã¹ãã®å Žåãå¶åŸ¡ bash ã¹ã¯ãªãããé 眮ããããšã³ã㪠ãã€ã³ããæå®ãããŸãã ãã¹ãã®å®è¡æ¹æ³ãã¬ããŒãã®çææ¹æ³ãããã³ãã¹ã ã¹ã¯ãªããèªäœã¯ãQA ãšã³ãžãã¢ã«ãã£ãŠå®è£ ãããå¿ èŠããããŸãã ãã¢ã§ã¯ãäž¡æ¹ã®ããŒã ãœãŒã¹ã«å¯ŸããŠãYandex ã¡ã€ã³ ããŒãž ãªã¯ãšã¹ããæãåçŽãªãã¹ããšããŠäœ¿çšãããŸãã ã¹ã¯ãªãããšãã¹ããã©ã¡ãŒã¿ã¯ãã£ã¬ã¯ããªã«ãããŸã
./ãã¹ã . - Yandex.Tank ã®èµ·åãã©ã¡ãŒã¿ã¯ ã§æå®ãããŸãã
- ã¹ããŒãžäž
ã¬ããŒã ãã¹ã段éã§ååŸãããã¹ãçµæãå€éšã¹ãã¬ãŒãž (GitLab Pages ãç¹å¥ãªã¬ããŒã ã·ã¹ãã ãªã©) ã«å ¬éããæ¹æ³ãèšè¿°ããå¿ èŠããããŸãã GitLab Pages ã§ã¯ããã¹ãçµäºåŸã« ./public ãã£ã¬ã¯ããªã空ã§ã¯ãªããå°ãªããšãindex.html ãã¡ã€ã«ãå«ãå¿ èŠããããŸãã GitLab Pages ãµãŒãã¹ã®åŸ®åŠãªéãã«ã€ããŠã¯ããã¡ããã芧ãã ããããªã³ã¯ .ããŒã¿ããšã¯ã¹ããŒãããæ¹æ³ã®äŸ:
- JMeterãããž
GitLab ããŒãž , - Yandex.Tank ãã
InfluxDB ãš Grafana .
èšå®æé ã®æçš¿:
- HTML éç
GitLab ããŒãž , - InfluxDB ãžããããŠæ¬¡ã«
ã°ã©ãã¡ã .
- JMeterãããž
ãã¢ã®äŸã§ã¯ãè² è·ãã¹ããš XNUMX ã€ã®è² è·ãœãŒã¹ (äžèŠãªè² è·ãœãŒã¹ã¯ç¡å¹ã«ã§ããŸã) ãå«ããã€ãã©ã€ã³ã¯æ¬¡ã®ããã«ãªããŸãã
Apache JMeter ã¯ããèªäœã§ HTML ã¬ããŒããçæã§ãããããæšæºããŒã«ã䜿çšã㊠GitLab Pages ã«ä¿åããæ¹ãæçã§ãã Apache JMeter ã¬ããŒãã¯æ¬¡ã®ããã«ãªããŸãã
Yandex.Tank ã®ãã¢ã®äŸã§ã¯ã次ã®ãããªãã®ã ãã衚瀺ãããŸãã
ãµããªãŒ
ãã®èšäºã§ã¯ããLoad testing as a ServiceãïŒãµãŒãã¹ãšããŠã®è² è·ãã¹ãïŒã®æŠå¿µã«ã€ããŠã話ããŸããã äž»ãªã¢ã€ãã¢ã¯ãäºåã«æ§æãããããŒã ãšãŒãžã§ã³ãã®ããŒã«ãããŒã ãœãŒã¹ã® Docker ã€ã¡ãŒãžãã¬ããŒã ã·ã¹ãã ãããã³ããããåçŽãª .gitlab-ci.yml ãã³ãã¬ãŒãã«åºã¥ã㊠GitLab CI ã§çµã¿åããããã€ãã©ã€ã³ã®ã€ã³ãã©ã¹ãã©ã¯ãã£ã䜿çšããããšã§ã (äŸ)
PS: åœç€Ÿã§ã®ãµãŒãã¹ãšããŠã®è² è·ãã¹ãã®æŠå¿µã®å®è£ ã«é¢ããŠæè¡æ¯æŽãããŠããã ããååã® Sergey Kurbanov æ°ãš Nikolai Yusev æ°ã«å€å€§ãªæè¬ãç³ãäžããããšæããŸãã
èè
:
åºæïŒ habr.com