ããã«ã¡ã¯ïŒ ç§ã®åå㯠Pasha Chernyak ã§ããQIWI ã®äž»èŠãªéçºè ã§ããä»æ¥ã¯é¿ããããªãããšã«ã€ããŠè©±ããããšæããŸãã ã¬ã¬ã·ãŒã«ã€ããŠã
ãŸãã¯ãã¬ã¬ã·ãŒ ãµãŒãã¹ãšã¯äœã§ãã?ããšãã質åããå§ããŸãããã ã¬ã¬ã·ãŒ ãµãŒãã¹ãšã¯ãéçºè ã XNUMX é±éãXNUMX ãæããŸã㯠XNUMX 幎é觊ã£ãŠããªããµãŒãã¹ã§ãã? ãããšããããã¯çµéšã®æµ ãããã°ã©ããŒãããšãã°ããªãã XNUMX 幎åã«æžãããµãŒãã¹ã§ãã? ãããŠä»ãããªãã¯ããã¯ãŒã«ã«ãªããããçµéšè±å¯ã«ãªããŸããã ãããšããã¬ã¬ã·ãŒ ãµãŒãã¹ã¯äºåºŠãšã³ãããããªããšæ±ºããŠããŠãããã«ä»£ãããã®ãåŸã ã«æºåããŠãããµãŒãã¹ãªã®ã§ãããã? ãããã«ããããã®ãããªãµãŒãã¹ãæŽæ°ããã«æŸçœ®ããããšã¯ãåŸã§ççºããå¯èœæ§ã®ããæéç匟ã§ãã
QIWI ãã¬ã¬ã·ãŒ ãµãŒãã¹ãšã©ã®ããã«é£æºããŠãããã«é²ãåã«ããŠã©ã¬ããå ã®ãµãŒãã¹ã«ã©ã®ããã«ç§©åºãããããããã«ã€ããŠèª¬æããŸãã ç§ã¯ 11 幎éããã®ããã©ãŒãã³ã¹ãæ åœããŠããŸããã äœãåé¡ãããã°ã圌ãã¯ãã€ãæåã«ç§ã«é»è©±ããŸãã ç§ã¯éåžžãååŸ XNUMX æã«ä»ã®äººã«é»è©±ããåæ°ããªãã®ã§ã座ã£ãŠãã¡ã€ã³äžã®ãã¹ãŠã®ãµãŒãã¹ãææ¡ããå¿ èŠããããŸããã
ããããç§ã¯ä»ã®äººãšåãããã«å€å¯ãã®ã奜ããªã®ã§ããã¿ããªããªãç§ã«é»è©±ããããŠããã®ã§ããïŒããšããæŸåã«å¯ŸåŠããããšããŸããã ããã«å¯ŸããŠããä»ã«èª°ãããŸããïŒããšããéåžžã«ç°¡æœãªçããè¿ãããŸããã ãªããªããç§ã¯ãµãŒãã¹ãä¿®çããŠããã®ã§ããã圌ãã¯èª°ã«é»è©±ããã°ããã®ãããããªãããã§ãã
ãããã£ãŠããŠã©ã¬ãã ããã¯ãšã³ã ããŒã ã®å顧å±ã® XNUMX ã€ã§ããµãŒãã¹ããã€ã¯ããµãŒãã¹ããŠã©ã¬ãã ã¢ããªã¹ãšãããã®è²¬ä»»è
ã®ãªã¹ããèšèŒããçæ¿ãäœæããå¿
èŠããããšå€æããŸããã æšèã¯äžè¬ã«ã劥åœãªç¯å²å
ã§åœ¹ã«ç«ã¡ãŸãã
誰ãäœãæ
åœãããã«é¢ããæ
å ±ã«å ããŠããµãŒãã¹ã®ææè
ã¯èª°ãªã®ãããµãŒãã¹ã®éçºãã¢ãŒããã¯ãã£ãã©ã€ããµã€ã¯ã«ã®è²¬ä»»è
ã¯èª°ãªã®ããšãã質åã«å¯ŸããçãããããŸããã ãã®ãµãŒãã¹ã®è²¬ä»»è
ã¯ãäœããèµ·ãã£ãå Žåã«ããã解決ã§ãã人ã§ãã ãµãŒãã¹ã®ææè
ã¯ã³ãããã« +2 ãæ®ãæš©å©ãæã¡ããã®ãµãŒãã¹ãæ°ããã³ããããåãå
¥ããåã«è²¬ä»»è
ãã¬ãã¥ãŒã«åºåžããå¿
èŠããããŸãã
æéãçµã€ã«ã€ããŠãKubernetes ãžã®ç§»è¡ãããããçš®é¡ã®ãã§ãã¯ã¹ã¿ã€ã«ãã¹ããããã°ãktlintãKibana ã§ã®ãã°ã®ååšãã¢ãã¬ã¹ããã®ä»ã®äŸ¿å©ãªãã®ãçŽæ¥æå®ãã代ããã®èªåæ€åºãµãŒãã¹ãªã©ãæ°ãããã©ã¯ãã£ã¹ãé©çšããå§ããŸããã ãããŠãããŒãã«ã®ã©ãã«ããŠãããµãŒãã¹ã®é¢é£æ§ãç¶æããããšãã§ããŸããã ç§ãã¡ã«ãšã£ãŠãããã¯ããã®ãµãŒãã¹ã§ãããã§ãããããŸã ã§ããŠããªããšããäžçš®ã®ãã§ãã¯ãªã¹ãã§ãããããããµãŒãã¹ã«é¢ããæ å ±ãç£èŠããŠããæ å ±ããµãŒãã¹ ãœãŒã¹ã®å Žæãäžè¶³ããŠããããšã«æ°ã¥ãã次ã«é²ã¿ãŸããã TeamCity ã§ã¢ã»ã³ã㪠ã¿ã¹ã¯ãèµ·åãããå Žæããã®å±éæ¹æ³ãend2end ãã¹ãã®ãœãŒã¹ãä¿åãããå Žæãã¢ãŒããã¯ãã£ã«é¢ããã°ã«ãŒãã³ã° ã»ãã·ã§ã³ã®åçãè¡ããã決å®ã«ã€ããŠã çæ³çã«ã¯ããããã®æ å ±ã¯ãã¹ãŠã©ããã«ä¿ç®¡ããŠãããŠãå¿ èŠãªãšãã«ããã«å©çšã§ããããã«ããããšèããŠããŸãã ãããã£ãŠãç§ãã¡ã®çæ¿ã¯æ å ±ãæ¢ãããã®åºçºç¹ãšãªããŸããã
ããããQIWI ã¯ã¹ã¿ãŒãã¢ããã®ç²Ÿç¥ãä¿ã£ãŠããŸããã倧äŒæ¥ã§ãã ç§ãã¡ã¯ãã§ã« 12 幎ãè¿ããŠãããããŒã ã¯å€åããŠããŸãã人ãå»ãã人ãæ¥ãŠãæ°ããããŒã ãçµæãããŠããŸãã ãããŠãç§ãã¡ãç¶æ¿ãããã¡ã€ã³äžã§ããã€ãã®ãµãŒãã¹ãçºèŠããŸããã ä»ã®ããŒã ã®éçºè ããæäŸããããã®ãããã°ããŠã©ã¬ããã«äœããã®åœ¢ã§éæ¥çã«é¢é£ãããã®ããããŸããããã®ãããçŸåšã§ã¯ãã©ã³ã¹ã·ãŒãã«ãµãŒãã¹ãèŒã£ãŠããŸãã äœãã©ã®ããã«æ©èœããã®ããç解ãã - ãªã? ãµãŒãã¹ã¯æ©èœããŠããŸããã補åã®æ©èœã«ã¯æ¹åãå¿ èŠãªç¹ããããŸãã
ãããã©ã®ããã«èµ·ããã®ã
ããããããæç¹ã§ããµãŒãã¹ããã®æ©èœã®å®è¡ãåæ¢ããäœããå£ããŠããããšãããããŸãããã®ãããªç¶æ³ã§ã¯ã©ãããã°ããã§ãããã? ãµãŒãã¹ã¯åã«åäœãåæ¢ããŸããã ãŸã£ããã ãããŠç§ãã¡ã¯ãã®ããšã第äžã«å¶ç¶ã第äºã«å幎åŸã«ç¥ããŸããã ããã¯èµ·ãããŸãã ç§ãã¡ãç¥ã£ãŠããå¯äžã®ããšã¯ããµãŒãã¹ãã©ã®ä»®æ³ãã·ã³ã«ãããã€ããããããã®ãœãŒã¹ãã©ãã«ããããããã ãã§ããã git clone ãå®è¡ããŠãæ°å¹Žåã«ãããæžãã人ã®é ã®äžãèŠããŠã¿ããšãäœãèŠããŠããã§ãããã? ç§ãã¡ã«ãšã£ãŠéŠŽæã¿ã®ãã Spring Boot ã¯ã©ãããããŸããããã¹ãŠã«æ £ããŠããŸããããã«ã¹ã¿ãã¯ãªã©ãã¹ãŠãæã£ãŠããŸãã ãã¶ãããã« Spring Framework ãããã§ãããã? ããããããã§ã¯ãããŸããã
ããããã¹ãŠæžãã人ã¯ã¿ãã§ããã¹ãŠãçŽç²ãª Java ã§æžããŸããã éçºè ã«ãšã£ãŠéåžžã®ããŒã«ã¯ååšããªããããããããã¹ãŠæžãçŽãå¿ èŠããããšããã¢ã€ãã¢ãçãŸããŸãã ç§ãã¡ã«ã¯ãã€ã¯ããµãŒãã¹ããããã©ã®ããŒã¹ã¿ãŒããããçããããã€ã¯ããµãŒãã¹ãããå¿ èŠãªã®ã§ãïŒããšããã決ãŸãã®å£°ãèãããŠããŸãã çªç¶äœãåé¡ãèµ·ãã£ãå Žåã§ããèœã¡çããŠã©ã®èšèªã§ã察å¿ã§ãããã¹ãŠãããŸããããŸãã
åé¡ã¯ãçŸåšããã®ãµãŒãã¹ãæ åœãã顧客ãããªããšããããšã§ãã 圌ã«ã¯ã©ã®ãããªããžãã¹èŠä»¶ãããããã®ãµãŒãã¹ã¯äœããã¹ãã§ãããã? ãŸãããã®ãµãŒãã¹ã¯ããžãã¹ ããã»ã¹ã«ç·å¯ã«çµ±åãããŠããŸãã
ã§ã¯ãããžãã¹èŠä»¶ãç¥ããã«ãµãŒãã¹ãæžãçŽãããšãã©ãã»ã©ç°¡åãªã®ãæããŠãã ããã ãµãŒãã¹ãã©ã®ããã«èšé²ããããã¯äžæã§ãããã¡ããªã¯ã¹ããããã©ãããäžæã§ãã ååšãããšããŠããããããäœã§ãããã¯ããã«äžæã§ãã ãããŠåæã«ããã®ãµãŒãã¹ã«ã¯ç解ã§ããªãããžãã¹ ããžãã¯ã®ã¯ã©ã¹ãèšå€§ã«å«ãŸããŠããŸãã ããçš®ã®ããŒã¿ããŒã¹ã«äœããå«ãŸããŠããŸãããããã«ã€ããŠããŸã äœãããã£ãŠããŸããã
äœãå§ãããšïŒ
æãè«ççãªç¹ããèšãã°ããã¹ãã®å©çšå¯èœæ§ã§ãã éåžžãããã«ã¯å°ãªããšãäœããã®ããžãã¯ãæžãããŠãããäœãèµ·ãã£ãŠããã®ãã«ã€ããŠçµè«ãåŒãåºãããšãã§ããŸãã ä»ã§ã¯ TDD ãæµè¡ããŠããŸããã5 幎åã¯ãã¹ãŠãçŸåšãšã»ãŒåãã ã£ãããšãããããŸããåäœãã¹ãã¯ã»ãšãã©ãªããäœãæããŠãããŸããã ãŸããããããããã XML ãã«ã¹ã¿ã 蚌ææžã§ã©ã®ããã«çœ²åãããããšãããããçš®ã®æ€èšŒãé€ããŠã¯ã
ã³ãŒãããã¯äœãç解ã§ããªãã£ãã®ã§ãä»®æ³ãã·ã³ã®å 容ã確èªããŠã¿ãŸããã ãµãŒãã¹ ãã°ãéãããšãããhttp ã¯ã©ã€ã¢ã³ã ãšã©ãŒãèŠã€ãããŸãããã¢ããªã±ãŒã·ã§ã³ ãªãœãŒã¹ã«åã蟌ãŸããŠããèªå·±çœ²å蚌ææžã¯ãæ¥ç¥ããã«ãå£ããŠããŸããã ç§ãã¡ã¯ã¢ããªã¹ãã«é£çµ¡ããæ°ãã蚌ææžãèŠæ±ãããšããããããçºè¡ããããµãŒãã¹ã¯åã³åäœããŸããã ããã ãã ãšæãããã§ãããã ãåŠãïŒ çµå±ã®ãšããããµãŒãã¹ã¯æ©èœããããžãã¹ã«å¿ èŠãªæ©èœãå®è¡ããŸãã ç§ãã¡ã¯ã¢ããªã±ãŒã·ã§ã³éçºã«é¢ããç¹å®ã®æšæºãæã£ãŠãããããããããªãããããæã£ãŠããã§ãããã ããšãã°ãããŒãäžã®ãã°ããã©ã«ããŒã«ä¿åããããšã©ã¹ãã£ãã¯ãªã©ã®äœããã®ã¹ãã¬ãŒãžã«ä¿åããKibana ã§ç¢ºèªããŸãã ãŽãŒã«ãã³ã¡ããªã¯ã¹ãèŠããŠããããšãã§ããŸãã ã€ãŸãããµãŒãã¹ã®è² è·ããµãŒãã¹ãžã®ãªã¯ãšã¹ãã®æ°ã圌ãçããŠãããã©ããã圌ã®ãã«ã¹ãã§ãã¯ã®ç¶æ³ã§ãã å°ãªããšãããããã®ææšã¯ãæ確ãªè¯å¿ãæã£ãŠãµãŒãã¹ãåæ¢ããæªã倢ã®ããã«å¿ããããææãç¥ãã®ã«åœ¹ç«ã¡ãŸãã
äœããã¹ãã
ãããã£ãŠããã®ãããªå€ããµãŒãã¹ãããŒãã«ã«è¿œå ãããã®ãµãŒãã¹ã管çããŠæŽçããŠããããã©ã³ãã£ã¢ãéçºè ã®äžããæ¢ããŸãã圌ãã¯ããµãŒãã¹ã«é¢ããå°ãªããšãããã€ãã®æ å ±ãæžãããžã®ãªã³ã¯ãè¿œå ããŸãã Grafana ã®ããã·ã¥ããŒããã¿ã¹ã¯ã®çµã¿ç«ãŠãããã³ã¢ããªã±ãŒã·ã§ã³ã®ãããã€æ¹æ³ãç解ããã«ã¯ãftp ã䜿çšããŠãã¡ã€ã«ãæåã§ã¢ããããŒãããªãã§ãã ããã
éèŠãªã®ã¯ããã®æçãªãã©ã³ãã£ã¢æŽ»åã«ã©ããããã®æéããããããšããããšã§ãã ããšãã°ãæè¡çè² åµã 20% ãããšãã®ãå€ããå°ãªããçµéšè±å¯ãªéçºè ã® XNUMX ã€ã®ã¹ããªã³ãã ç¹å®ã®åœå®¶ã·ã¹ãã ãšã®éä¿¡ã«æ ¹ä»ããããžãã¯ããã¹ãŠç解ãããããæ°ãããã¯ãããžãŒã«å°å ¥ããã®ã«ã©ããããæéãããããŸããã? ããã«ã€ããŠã¯ä¿èšŒã§ããŸããããããŒã ã®äœæ¥ã« XNUMX ãæã XNUMX ãæãããå¯èœæ§ããããŸãã ç§ã¯ããããããã€ãã®æ°ãããµãŒãã¹ãšã®çŸåšã®çµ±åã®çµéšããèšããŸãã
åæã«ãããžãã¹äŸ¡å€ã¯è§£æŸãããŸããã ãŸã£ããã ãµããŒãã®ããã«ãµãŒãã¹ãéã£ãŠãããã«å°ãæéãè²»ããã®ãäžè¬çã§ãã ããããç§ãã¡ã®æšæºçãªãµãŒãã¹ãšèžã£ãåŸããããããŒãã«ã«è¿œå ããããã«é¢ããæ å ±ãè¿œå ãããããããã€ãæžãçŽãã§ãããã ããããçŸåšã§ã¯åœç€Ÿã®ãµãŒãã¹åºæºãæºãããŠããŸãã
ãã®çµæãã¬ã¬ã·ãŒãµãŒãã¹ãã©ãããããšããèšç»ãç«ãŠãããšæã£ãŠããŸãã
ã¬ã¬ã·ãŒããŒãããæžãçŽãã®ã¯æªãèãã
çå£ã«ãããã«ã€ããŠèããå¿
èŠãããããŸããã ç§ããããæãã§ããããšã¯æããã§ãããããã€ãã®å©ç¹ããããŸãããéåžžã¯ãããªãèªèº«ãå«ãã誰ããããå¿
èŠãšããŸããã
ãã£ã¬ã¯ããª
ã¢ããªã±ãŒã·ã§ã³ã®ãœãŒã¹ ã³ãŒããæãåºããäœãã©ãã«ãããã©ã®ããã«æ©èœãããã瀺ãåèæžãäœæããããã«ãããžã§ã¯ãã®èª¬æ (æ¡ä»¶ä»ã readme.md) ãå
¥åããŠããã°ãšã¡ããªã¯ã¹ãã©ãã«ããããããã«ç解ããŸãã ããªãã®åŸã«ããã«å¯ŸåŠããéçºè
ã¯ãããããšããšèšãã ãã§ãã
ãã¡ã€ã³ãç解ãã
ãã¡ã€ã³ãææããŠããå Žåã¯ãææ°æ
å ±ãåžžã«ææ¡ããããã«ããŠãã ããã 確ãã«äºçŽ°ãªããšã®ããã«æããŸããã誰ãããµãŒãã¹ãåäžã®ããŒã«ããããšã確èªããŠããããã§ã¯ãããŸããã ããããå®éã«ã¯ãXNUMX ã€ã®æšæºã§äœæ¥ããæ¹ãã¯ããã«ç°¡åã§ãã
ç»é²ãŠãŒã¶ãŒã®ã¿ãã¢ã³ã±ãŒãã«åå ã§ããŸãã
ããªãã¯èªåã®éºç£ãã©ãããŸããïŒ
-
èŠèŽè ã®ïŒïŒ%ãäžããæžãçŽããŠãŸãã12ã®ã»ããæ£ããã§ã
-
èŠèŽè ã®ïŒïŒ%ãããªããšã»ãŒåãã§ã20
-
èŠèŽè ã®ïŒïŒ%ãç§ãã¡ã«ã¯éºç£ã¯ãããŸãããç§ãã¡ã¯çŽ æŽãããã§ã4
-
èŠèŽè ã®ïŒïŒ%ãã³ã¡ã³ãã«æžããŸã2
38 人ã®ãŠãŒã¶ãŒãæ祚ããŸããã 20åã®ãŠãŒã¶ãŒãæ£æš©ããã
åºæïŒ habr.com