ãã®èšäºã§ã¯ãSberbank TechnologiesãšPPRBã®äŸã䜿çšããŠãDevOpsããŒã«ã¹ã¿ãã¯ã®æ§æã«ã€ããŠèª¬æããŸãã ãã®èšäºã¯ãDevOpsãå®è£ ããããã®äœæ¥æ§é ã®å®¢èŠ³çãªè©äŸ¡ãå¿ èŠãªã€ã³ãã©ã¹ãã©ã¯ãã£ãªãŒãã¡ãŒã·ã§ã³ãšã³ãžãã¢ãããã³äœæ¥ã«ç²Ÿéããã人ã察象ãšããŠããŸãã
å°èŠæš¡ã§çµ±äžãããããŒã ã§DevOpsããã»ã¹ãç·šæããã®ãéåžžã«ç°¡åã§ããããšã¯åšç¥ã®äºå®ã§ãã ããã«ãææ°ã®æèœãªéçºè ãšç®¡çè ã«ãããéçºãšãµããŒãã®é«ãæåã®çµæãšããŠããã®ããã»ã¹ã¯ããèªäœã§åœ¢ããšãããšãã§ããŸãã ãããã10人ã®å°ããªããŒã ãæ°çŸäººã®ãªãã£ã¹ã«æé·ãå§ãããã©ãã§ããããã çµç¹ã«ãã§ã«æ°å人ã®äººãããããæªéã®ãããªåããããªãã£ããã©ãããŸããïŒ ãããã®è³ªåã«ãããSberbank-Technologyã®åŸæ¥å¡ã«ç®ãåããŸãããSberbank-Technologyã¯å€§èŠæš¡ãããžã§ã¯ãã§ã®DevOpsãã©ã¯ãã£ã¹ã®å®è£ ã«ç©æ¥µçãªçµéšããããäœããåŠã³ãŸããã
ã»ãŒãããŒããŒ
ãŸããå°ããªäºçŽã å€ãã®äººã ã¯ãä»ã®äŒæ¥ã§ãããã©ã®ããã«è¡ããããã«ã€ããŠã®èšäºãèªãçç±ãå°ããŸãã 圌ãã¯ãããããŸããããããŠç§ãã¡ã¯ãããããŸããããã¯ã©ã®ãããªéãããããããŸããïŒ
Sberbank Technologies補åã¯ãã¡ããSberbankã§äœ¿çšãããŠãããç§ãã¡ã®ãéã¯ä»äºã®å®å®æ§ãšã»ãã¥ãªãã£ã«äŸåããŠããŸãã ãŸãããã®èšäºã®ç»å Žã¯ã瀟å ã®æè¡ããã»ã¹ã«ã€ããŠè©±ãããšããã§ã«å¯èœã«ãªã£ããšãã«ãäŒç€Ÿãéçºã®ãã€ã³ãã«å°éããããšã瀺ããŠãããããã¯ãŸã£ããæ£åžžã§ãã ããã¯ãããŸããã«ããäœããã®ã»ãã¥ãªãã£ã§ã¯ãããŸããããæ¬åœã«åªããé«å質ã®ãããã°ã·ã¹ãã ã§ããããã¯ãã®äŸ¡å€ã§ãããçŸåšèªãã§ããããã¹ãã®äŸ¡å€ã§ãã ããã¯å®éã«æ©èœãããã®ã§ãã ãã®ç¥èãããã°ã奜ããªããšã¯äœã§ãã§ããŸããããšãã°ãåãã€ã³ãã©ã¹ãã©ã¯ãã£ãèªåã§ã³ããŒã¢ã³ãããŒã¹ãã§ããŸãã ãŸãã¯ãçªç¶ãã®ãããªã€ã³ãã©ã¹ãã©ã¯ãã£ã§ã®ç掻ã奜ãã«ãªã£ãå Žåã¯ãSberbank-Technologyã§åãã«è¡ããŸãã
ããã§ããdevopsã®åçšéçšãžã®å°å ¥ã«ã€ããŠã¯èª¬æããŸããã ããã¯ã»ãã¥ãªãã£ã®ããã ãã§ãªããå®è£ ããŸã é²è¡äžã§ãããããããã§æ®ºãããŠããªãçã®çµæãè°è«ããã®ã¯ééã£ãŠãããµããããŸãããã promã®dev PRPRBã®å®è£ ã¯ããã®å¹Žã®çµããããŸãã¯æ¥å¹Žã®åãã«è¡ããããšæ³å®ãããŠããŸããããããã圌ãã¯JBreak / JPoint 2018ã§ããã«ã€ããŠè©±ãã§ããããçŸåšã«éäžããŸãããã
ãããã«ãããèšäºã«ã¯ãšã©ãŒãèšèŒæŒããå«ãŸããå ŽåããããŸãã ãã®èšäºã¯ãSberbank-TechnologyãŸãã¯Sberbankã®å ¬åŒãªç«å Žã§ã¯ãããŸããã ãã®èšäºããååŸããæ å ±ã¯ãåæ¥çãŸãã¯ãã®ä»ã®éèŠãªæ±ºå®ã®åºç€ãšããŠäœ¿çšããããšã¯ã§ããŸããã
åé¡èŠæš¡
SBT devoãããžã§ã¯ãã®ç¹åŸŽã¯äœã§ããïŒãã®ãããªéå ¬åŒãªæ¹æ³ã§çµç¹ãåŒã³ãŸãããïŒã ãã¡ãããããã¯èŠæš¡ã§ãã 2017幎ãSBTã®åŸæ¥å¡æ°ã¯ãã·ã¢ã®17éœåžã«ãã9,800人ãè¶ ããŸããã
ãªãå€ãã®äººãå¿ èŠãªã®ãã圌ãã¯äœãããã®ãïŒ ïŒæ®éã®äººãå°ããŸãïŒã æ£åŒã«ã¯ã次ã®ããã«èãããŸãã
- SBTã¯ããã·ã¢ãšæ±ãšãŒãããã§æ倧ã®éè¡ïŒåŸæ¥å¡325å人ïŒåãã«ãœãããŠã§ã¢ãäœæããŠããŸã
- ãã·ã¢äººã®70ïŒ ã®ç掻ãæ¹åããè€éãªã€ã³ãã©ã¹ãã©ã¯ãã£ãšãµãŒãã¹ã¿ã¹ã¯ã解決ããŸãã
- äžçã®1å1,000äžäººã«SberbankãµãŒãã¹ã®å©äŸ¿æ§ãšã¢ã¯ã»ã·ããªãã£ãæäŸ
devopsã®å®è£ ã«é¢äžããã€ã³ãã©ã¹ãã©ã¯ãã£ãšã³ãžãã¢ã®èŠ³ç¹ããããã¯äœãæå³ããŸããïŒ èŠãŠãã ãããéåžžãå°ãªããšã次ã®äžé£ã®ã¿ã¹ã¯ãèšå®ããŠè§£æ±ºããå¿ èŠããããŸãã
- çç£ãšãµãŒãã¹ã®å šäœçãªæåã匷åãã
- å žåçãªã¿ã¹ã¯ïŒç¹ã«CI / CDããã€ããïŒã®ããã®ããŒã«ã»ãããçå®ããå®è£ ããŸãã
- æ¥åžžã®åé¡ã解決ããã¹ãã«ãåäžãããŸãïŒæ¥åžžçãªåé¡ãèªåçã«è§£æ±ºããã¹ãã«ïŒ
ãããã®ååé¡ã¯ããºãŒã ã¢ãŠãããããšã§åçã«è€éã«ãªããŸãã ããŒã å ã®ãšã³ãžãã¢ãªã³ã°ãã©ã¯ãã£ã¹ã«ããã«åæããããšãã§ããŸãããéçºã«é¢ããŠãŸã£ããç°ãªãèŠè§£ãæã€8,500人ãçžäºã«èª¿æŽããããšã¯å°é£ã§ãã éåžžã®ã®ã£ã©ãªãŒã«ã¯è¶³ããããŸãããSBTã¯ãããå æã§ããŸãã
ããããŒã ã®èªç±ïŒããšãã°ãäžå¿ èŠãªè©³çŽ°ã«ã€ããŠèããããšã®ã§ããªãæšæºåããããã€ãã©ã€ã³ã䜿çšããèªç±ïŒãå¥ã®ããŒã ã«ãšã£ãŠã¯ãããŒã«ã®éžæã®èªç±ã«å¯Ÿãã倧ããªå¶éã®ããã«èŠããŸãã éçºè ã«é¢ããçŸããããŒã±ãã£ã³ã°ãã¬ãŒã³ããŒã·ã§ã³ã§ã¯ãããããŒã ãUnified Universal Platform of Everythingãäœæããå Žåãå¥ã®100ããŒã ããæããRockãšHaskellã§ã¯ãªãããã®æšæºãã©ãããã©ãŒã ã䜿çšããå¿ èŠãããããããããå«ããšã¯èšããŸããã äžæ¹ã誰ããç°çš®ãœãªã¥ãŒã·ã§ã³ãéžæããæ©äŒãäžããããå Žåãå ±éã®è£œåã¯æ±ºããŠåºãŠããŸããã
ååã§ã¯ãããŸããã ããå°ãè€éã«ããŸãããïŒ å®éãPPRBã®Technological CoreïŒSBTã®äž»èŠãããžã§ã¯ãã®1ã€ïŒãªã©ã®ãããžã§ã¯ãã¯ãç¹å¥ãªã«ã¹ã¿ã ãããã€ã¡ã³ãããã»ã¹çšã«ç¹å¥ã«èšèšãããéåžžã«è€éãªèªå·±èšè¿°æè¡ã§ãã ïŒããã«ã€ããŠã®è©³çŽ°ã¯ä»¥äžïŒã å®éãããã¯ç¬èªã®Javaãã©ãããã©ãŒã ã§ãããéçºè ãåè«ãèšãã®ã奜ãã®ã§ããããå°ã-ãããŠãç¬èªã®Javaãã·ã³ãäœæããŸãïŒã ããã®ããŒã¿ããŒã¹ãç¹å¥ã§ã-GridGainãšããã®GridGainãã¯ãã¯ããæ¹æ³ã«é¢ããäžé£ã®ãŠããŒã¯ãªããŠããŠã ãã®è€éãã¯ãµããžã§ã¯ãé åã®äžéšã§ããããã¹ãŠãããããããŠã3ã€ã®ãã€ã¯ããµãŒãã¹ã®åœ¢ã§Golangã«æžãæããŸãããããšèšãããšã¯ã§ããŸããã ããã¯ãã®ããã«ã¯åäœããŸããïŒ
ãããã£ãŠãã€ã³ã¹ãã«ã¡ã³ã¿ã«ã¹ã¿ãã¯ã¯ãç°ãªãæåéã ãã§ãªããèšèšãšããã°ã©ãã³ã°ãžã®ç°ãªãã¢ãããŒãéã®ãã©ã³ã¹ã®ãã€ã³ãã§ããããŸãã
ãããã£ãŠãCBT CI / CDæ©åšæšæºã®åèŠçŽ ã¯åŠ¥åæ¡ã§ãã ãããã®æ±ºå®ã¯ã亀éã«ãŒã«ã®ããã«ãäœå¹Žãã®éè¡ã§æžãããŠããŸãã ãã®ããŒã«ã®æšæºã瀺ãæéã§ãïŒ
æ©åšæšæºCI / CD
ãããŠä»ãããªãã¯é©ãã§ãããã 圌ã®ãã€ãã«é©åã ãããåããŠç®ã«ããŠJUG.ruã«é©ããã®ã§ãSBTã€ã³ãã©ã¹ãã©ã¯ãã£ã¢ãŒããã¯ãããçµæããäœãåŸããããã«æ°ä»ããŸããã ããªãã¯ãSBTãæ³åã絶ããæ°ãããã¬ãŒã ã¯ãŒã¯ã絶ããæžããŠãããå¥åŠãªæ¹æ³ã§äœ¿çšããŠããã®ã§ãåŸã§ã«ã³ãã¡ã¬ã³ã¹ã§ããã«ã€ããŠè©±ãããšãã§ãããšããããšã«æ £ããŠããŸããïŒ ä»åã¯éããŸãã æè¯ã®æ¹æ³ïŒçŸæç¹ã§ã¯ã2017幎ç§ïŒã¯ã誰ãã䜿çšããŠãããã®ã䜿çšããé¡ã®èŒãã«è§£æ±ºçã磚ãããšã§ãã
æå§ãã«ãããããã¥ãŒïŒ
ã»ãŒãã¹ãŠã®ææ°ãããžã§ã¯ãã«ã¯ãåãæé ããããŸãã PSIã¯åãå ¥ããã¹ãã§ãã
åçãæºåž¯é»è©±ã§èªããªãããšãäºåã«è¬çœªããŸãã å°æ¥çã«ã¯ãããããã¹ãŠã®ã¢ã€ãã ã倧ããªçµµæåã«è€è£œããããããäœã倱ãããšã¯ãããŸããã
ã³ãŒãã£ã³ã°ãCI / CDèŠæ Œã®æãéèŠã§å€§èãªéšåã§ããããšã¯å€ãã®äººã«ãšã£ãŠã·ã§ãã¯ã§ãã å®éã®ãšãããå ã®ãœãããŠã§ã¢ãæ¹å€çã«èª€ã£ãŠèšè¿°ãããŠããå Žåããdevopsãã¯å«ãŸãããäœãå©ãã«ã¯ãªããŸããã
ãã®ããã圹å²ã«äŸåãã2ã€ã®åºæ¬çãªèŠçŽ ããããŸãã
- éçºè
éåžžãããã¯Java / Scala / Cppã¹ã¿ãã¯ã§ãããããŒã«ã«ãã·ã³ã§åäœããŠããŸãã
- ã³ãŒãããã³ãã®ä»ã®ã³ã³ãã³ãã®éçº
- ãªããžããªã«ã¢ããããŒãããåã«åäœãã¹ããå®è¡ãã
-
develop
ãã©ã³ããžã®ã³ãŒãã®å ¬é - ãã°ãã©ãã«ãŒã®ã¿ã¹ã¯ãžã®ãã€ã³ã
- äž»ãªéçºè
ã
- ã³ãŒãã¬ãã¥ãŒ
-
master
ãã©ã³ãã«ããŒãž
éçºè ã¯ãã¿ã¹ã¯ãå®äºããããã«å¿ èŠãªãã®ã䜿çšã§ããŸãã ããšãã°ãJavaéçºã®æšæºãšããŠãäžçäžã§äœ¿çšãããŠããããŒã«ïŒMavenïŒJavaèªäœïŒãNode Package ManagerïŒJSããã³ãçšïŒãJUnitãããã³TestNGïŒãã¹ãïŒïŒã䜿çšããããšããå§ãããŸãã SBTãç¬èªã®ãã«ãã·ã¹ãã ãéçºããã®ã¯ããããã§ããªãããã§ã¯ãªãïŒãªãGoogleãããæªãã®ã§ããããïŒãå ±éã®å¹³è¡¡ç¹ã®èãæ¹ã«éåããããã§ãã äŒç€Ÿã®å€éšã®ãããžã§ã¯ããå€ãããïŒSpring Frameworkãªãã§çããŠã¿ãŠãã ããïŒïŒMavenã®ãããªæšæºãŠãŒãã£ãªãã£ã«é¢é£ä»ããããŠããããã®çµ±åãå£ãæå³ã¯ãããŸããã
詳现ãªèŠä»¶ã¯ããã®æ®µéã§Wikiã®ãããªã·ã¹ãã ïŒConfluenceãªã©ïŒã«ä¿åãããŸãã ã¿ã¹ã¯ã®æäœã¯ãéžæããã¿ã¹ã¯ç®¡çã·ã¹ãã ïŒJIRAãªã©ïŒã«ãã€ãã£ãã«å®è£ ãããŠããæšæºã®ã¢ãžã£ã€ã«çšèªïŒãšããã¯ãæ©èœããŠãŒã¶ãŒã¹ããŒãªãŒãªã©ïŒã«åºã¥ããŠããŸãã ãããã®2ã€ã®ã·ã¹ãã ãæã€ããšã¯ãè¯ãçµæãåŸãããã«éèŠã§ãã ãã®ã«ãŒã«ã¯è¡ã§æžãããŠããŸã-å°ããªãããžã§ã¯ãã§ãããã«wikiãšãã°ãã©ãã«ãŒãçºè¡ããå¿ èŠããããŸãã
以äžã§ã¯ã2ã€ã®ç°ãªããªããžããªãéçºã«äœ¿çšãããããšã«æ³šæããããšãéèŠã§ãã
- ãªããžããªã®1ã€ã«å®éã®è£œåã³ãŒããä¿åãããŸãã
- ãã1ã€ã¯ããã«ãã¹ã¯ãªããã®ã¿ãä¿åããããã®ãã®ã§ã
Infrastructure as Codeã®ã¢ã€ãã¢ã®äžéšãšããŠãçŸåšã§ã¯ãããžã§ã¯ããšäžç·ã«ãããã€ã¡ã³ãã¹ã¯ãªããã1ã€ã®ãªããžããªã«ä¿åããããšãäžè¬çã§ãã é·æçãªå®è·µã®çµæãSBTã¯ãããã€ã¡ã³ãã¹ã¯ãªããçšã«å¥åã®ãªããžããªãçšæããå¿ èŠã«å¿ããŠããã°ã©ã ã§åŒ·åãªæ¥ç¶ãå®è£ ããããšãéžæããŸããã ãã®æ©èœã¯ãåããã¹ã¯ãªããããç°ãªã補åã§æ©èœããå Žåãã¹ã±ãŒã«ãšè€éã§é¢é£ããäžè¬åãããæ§æã®å¿ èŠæ§ã«ã®ã¿é¢é£ä»ããããŸãã ããã«ãéçºããŒã ãšç®¡çããŒã ã責任ãšã¢ã¯ã»ã¹ã¬ãã«ã®é åã«åããããšãã§ããŸãã ãã¡ãããç¹å®ã®ãããžã§ã¯ãèšå®ãšç¹æ®ãªã¹ã¯ãªããã¯ãããžã§ã¯ããšãšãã«ä¿åãããŸãã
以äžãJenkinsãå¶åŸ¡ã·ã¹ãã ãšããŠäœ¿çšãããŸãã 誰ããããã奜ãã§ã¯ãªããããããŸãããããã¯å€ä»£ã®ãœãããŠã§ã¢ã§ãããäžå®éã®ã¬ã¬ã·ãŒã§çãèããRAMãCPU䜿çšéãªã©ã«é¢ããŠæ·±å»ãªãããããªã³ããæã£ãŠããããã§ãã ãããããã©ã³ã¹ã®ãã€ã³ãã«ã€ããŠè©±ããŠããããšãèŠããŠããŸããïŒ äºå®ãJenkinsã¯ãã¹ãŠã®æ¬ ç¹ã«ã€ããŠãçŸæç¹ïŒ2017幎ç§ïŒã§ã誰ãã䜿çšããããšã«åæããã·ã¹ãã ã§ãããšããäºå®ã«å€ããã¯ãããŸããã ããã¯å°æ¥å€æŽãããå¯èœæ§ããããŸãã
Jenkinsã«å ããŠãã³ãŒãã£ã³ã°æ®µéããPROMãŸã§ç¶ããšã³ãããŒãšã³ãå±éããã»ã¹çšã®è¿œå ã®å¶åŸ¡ã·ã¹ãã ã䜿çšãããŸãã ããããããã¯ç¹å¥ãªå éšãœãããŠã§ã¢ã§ããããã®èšäºã§èª¬æããæå³ããããŸãããããã¯ããªãŒãã³ãœãŒã¹ã«ã¢ã¯ã»ã¹ã§ããªãããšã ãã§ãªããSBTã®ç¹å®ã®æ©èœã«åãããŠèª¿æŽãããŠããããã§ãã ååã«å€§ããªãã€ãã©ã€ã³ãæã€äŒæ¥ã¯ã åžžã«åæ§ã®ã·ã¹ãã ãäœæãããšããä»®å®ããããŸãã å°ããªãããžã§ã¯ãã®å ŽåãJenkinsã«äŸåããªãã¹ã¯ãªããã®ããã¯ã®åœ¢ã§ãåæ©çãªåœ¢ã§ååšã§ããŸãã ãã³ãã«ããã10以äžã®ãããžã§ã¯ãã«æ¡åŒµãããšãæ·±å»ãªãœãããŠã§ã¢ã«ãªãå¯èœæ§ããããŸãã
ã³ãŒãã£ã³ã°æ®µéããå§ããŠãå±éã¹ã¯ãªãããªããžããªãJenkinsãããã³ãšã³ãããŒãšã³ãã®ç®¡çããŒã«ãããã«å©çšã§ããããšãéèŠã§ãã éçºè ã®1人ãJenkinsã«è¡ããããã§æ°ããä»äºãããå¿ èŠãããå Žå-ããã¯åé¡ãããŸããã devopsããŒã«ã䜿çšããããšã¯ã空æ°ãåŒåžããã®ãšåããããèªç±ã«å©çšã§ãã移åäžå¯èœã§ãã
ããã§ã¯ãã¹ãŠãç°¡åã§ãã 䜿çšãããããŒã«ã¯ãåæã¢ã»ã³ããªãäœæããããã¹ããäœæãããããŒã«ã§ãã æãæ¡åŒµæ§ã®é«ãããŒã«ãããã®1ã€ã䜿çšããããã«ãèšèªã«å€§ããäŸåããŠããŸãã Javaã®å Žåãã»ãšãã©ã®å ŽåãJUnitã.NET-NUnitãJS-QUnitã«ãªããŸãã ãããã®ããŒã«çšã®Jenkinsã«é©åãªãã©ã°ã€ã³ãããããšã®ã¿ãéèŠã§ãã 極端ãªå Žåãèªåã§äœæããããšãã§ããŸãããããã¯æãŸãããããŸããã ã³ãŒãæ€èšŒã¯ãäœäžçŽã«ãããã£ãŠå®èšŒãããŠãããœãªã¥ãŒã·ã§ã³ã䜿çšããæ¹ãéèŠãªéèŠãªã¹ãããã§ãã
å€ãã®éçºè ã¯ç¬èªã®DEVã¹ã¿ã³ãïŒãµãŒããŒïŒãæã¡ãããã§ç°¡åãªã·ã¹ãã ãã¹ããã³ã³ãã¥ãŒã¿ãŒã®å€éšã§ã®äŸ¿å©ãªå®éšãè¡ãããšãã§ããŸãã ãã¡ããããããã®ã¹ã¿ã³ãã®ãªãœãŒã¹ã¯éåžžã«éãããŠããïŒãã©ãã€ãã®RAMãå²ãåœãŠãããšã¯çµæžçã«ç¡æå³ã§ãïŒãçµ±åãã¹ãã¯ãããã§å®è¡ã§ããŸããã ããããå®éšã®ããã«-ããã¯ããŸãã
ãã®æ®µéã§ã¯ãããã€ãã®éèŠãªããšãèµ·ãããŸãã
- éçã³ãŒãæ€èšŒ
- æ å ±ã»ãã¥ãªãã£ã«ãŒã«ãžã®æºæ ã確èªãã
- çºèŠãããæ¬ é¥ã¯éåžžã«éèŠã§ãããããããã«ä»äºã«éãããŸã
æ å ±ã»ãã¥ãªãã£ã«é¢ããŠã¯ãæãããªçç±ã§ããã«æ¡æ£ããããšã¯ãããŸããã ã»ãã¥ãªãã£ã«ã€ããŠæåŸã«è©±ããã®ã¯UFOã§ãã:-) CI / CDã®ãã¹ãŠã®èŠçŽ ãã»ãã¥ãªãã£èŠä»¶ãèæ ®ã«å ¥ããŠãããšèšãã ãã§ååã§ãããã®å ŽåãããŠã¹ã¯ããã«ã¹ãªããããŸããã éåžžãã»ãã¥ãªãã£ã¯CI / CDããŒã«ã®äœ¿ãããããäœäžããããããããã¯éåžžã«è€éãªãããã¯ã§ãããç¹å¥ãªãšã³ãžãã¢ãªã³ã°äžã®åŠ¥åã«æºã¡ãŠããŸãã
åŸæ¥ã®è¡šé¢é解æã§SonarQube
ã SonarQube
䜿çšãããŸãã å€ãã®ç°çš®ãããžã§ã¯ãã«ã¯ãããããçš®é¡ã®æ§æãšã³ãŒãã£ã³ã°ã«ãŒã«ã®ã»ãããååšããããšã¯æããã§ããããããããããåå¥ã«ã詳现ãç解ããŠã¢ãããŒãããå¿
èŠããããŸãã ãã¡ããããã¹ãŠã®Javaããã¯ãšã³ããããžã§ã¯ãã«ã¯ãæšæºçãªã«ãŒã«ã®ã»ãããäºåã«å®çŸ©ãããŠãããããããããªããšãæ°ã«ããå¿
èŠã¯ãããŸããã
åãããžã§ã¯ãã«ã¯ç¬èªã®ã¹ã¿ã³ãïŒãµãŒããŒïŒããããæ¢æã®ãœãªã¥ãŒã·ã§ã³ããã¹ãã§ããŸãã äžè¬çãªçµ±åãã¹ãçšã«æªæ€èšŒã®ãœãªã¥ãŒã·ã§ã³ãæ¡çšããŠå±éããããšã¯ã§ããŸããã ã¹ã¿ã³ãã¯ããããžã§ã¯ãå šäœãšç¹å®ã®éçºè ïŒå®éšãã©ã³ãã®ãã¹ãçšïŒã®äž¡æ¹ã«å²ãåœãŠãããšãã§ããŸãã ãããã®ã¹ã¿ã³ãã«ã¯ãéçºè ã®å人çãªDEVã¹ã¿ã³ããããæ·±å»ãªãªãœãŒã¹ããããŸãããåççãªãã®ã«ãã£ãŠå¶éãããŠããŸãã ãããžã§ã¯ãã«å²ãåœãŠããããªãœãŒã¹ã§ã€ã³ãã©ã¹ãã©ã¯ãã£å šäœãå®å šã«åçŸããããšã¯ãéåžžã«é£ãããé·ããçµæžçã«ç¡æå³ã§ãã ãããã£ãŠãéåžžã®çµ±åãã¹ãã¯ããã§ã¯æ©èœãããå¿ èŠãããŸããã
ãã®æ®µéã§çºçããããã€ãã®éèŠãªãã€ã³ãïŒ
- ãªããžããªå ã®ææç©ã®æçµçãªã¢ã»ã³ããªããã³å ¬éã ããšãã°Javaã®å ŽåãNexusã§ããããããžã§ã¯ãã¯Mavenã䜿çšããŠããŸãã¯çŽæ¥ãªã³ã¯ãä»ããŠãããã®ã¢ãŒãã£ãã¡ã¯ãã«ã¢ã¯ã»ã¹ã§ããŸãã
- ã¹ã¿ã³ãã«ã¢ããªã±ãŒã·ã§ã³ãã€ã³ã¹ããŒã«ããŸãã
- äžé£ã®èªåãã¹ããå®è¡ããŸãã
ãããã®DEVã¹ã¿ã³ãã®èå³æ·±ãæ©èœã¯ãå éšãœãããŠã§ã¢ã®ã€ã³ã¹ããŒã«ããã¹ããŠãŒã¶ãŒã®äœæãªã©ããã¹ãŠã®ã«ãŒã«ã«åŸã£ãŠæºåããå¿ èŠãããããšã§ãã éåžžãã¹ã¿ã³ãã¯1å°ã®ã³ã³ãã¥ãŒã¿ãŒã ãã§ãªããä»®æ³ãã·ã³ã®ã¯ã©ã¹ã¿ãŒã§ãããããã£ãŠãçŸæç¹ã§ã¯ãã¯ã©ã¹ã¿ãŒã®æ£ããåæåããã¹ããããŸãã å®éãã¹ã¿ã³ããå±éãããç¬éãããã¹ã¿ãã¯å šäœã®ããã€ã³ã¹ããŒã«ãã¹ããè¡ãããŸãã
éåžžã Ansible
ã¯ãã®æç¹ã§è¡šç€ºãããŸãã ã¢ã³ãµã³ãã«ã¯ãäž»ã«ã¿ãŒã²ããã·ã¹ãã ãæ§æããæ段ãšããŠäœ¿çšãããJenkinsããèµ·åãããŸãã ããã«ãEnsibleã¯ããã§ã«å±éãããŠããã·ã¹ãã ãããå
æ¬çã«ç®¡çããããã«äœ¿çšã§ããŸããããã¯ããããç®çãšãããã®ã§ã¯ãããŸããããDEVåè·¯ã®ç®çã«ã¯åªããŠããŸãã ã¢ã³ãµã³ãã«ã¯ãç¹å¥ãªãšãŒãžã§ã³ãïŒãã§ã«ãã¹ãŠã®GNU / Linuxãã¹ãã·ã¹ãã ã«ããSSHãµãŒããŒãé€ãïŒãå¿
èŠãšããªããããSUDDENããŒã ã®èª°ãã10å°ã®ãµãŒããŒã§äœããåèµ·åããå¿
èŠãããå Žåã«ãéžæãããŸããã DEVã¯ã©ã¹ã¿ãŒå
-ããã«ã¯ç¹å¥ãªãç§å¯ç®¡çè
ã®ç¥èãã¯å¿
èŠãããŸããã Ensibleã¯éåžžã«ã·ã³ãã«ã§ãããããéçºè
ãšæèœãªç®¡çè
ã®äž¡æ¹ããæçæéã§Ensibleã®èª¿æ»ã«å¯ŸåŠããŸãã
ãã¡ãããEnsembleã®äœ¿çšã«ã¯åé¡ããããŸãã ããšãã°ãæšæºã®åœ¹å²ã·ã¹ãã ã¯ãè€éãªã¢ãžã¥ãŒã«ãããžã§ã¯ãã§ã¯äžå¿ èŠã«åçŽãªå ŽåããããŸãã ææ°ããŒãžã§ã³ã§ã¯ããã¹ããããããŒã«ã®å®éšçãªãµããŒãããããŸãããååã§ã¯ãªãå ŽåããããŸãïŒç¹ã«éåžžã«æªå å·¥ã§ãããEnsiblã®ä»ã®æ©èœãšã®äºææ§ã«ã€ããŠãã¹ããããŠããªãããïŒã Ensembleãèšå®ã ãã§ãªããã¿ãŒã²ããã·ã¹ãã ã®ç®¡ççšã®ã·ã¹ãã ãšããŠå®å šã«äœ¿çšããããšãããšãEnsibleèªäœãåãªãé«ã¬ãã«ã³ãã³ãçšã®ãSSHã¢ã»ã³ãã©ãã§ãããè¿œå ã®ãã€ã³ãã£ã³ã°ãœãããŠã§ã¢ãå€æ°äœæããå¿ èŠããããŸãã
ããã«ãEnsembleãšç·å¯ã«é£æºããéçºè ã¯Pythonãç¥ã£ãŠããå¿ èŠãããããšãããã«æããã«ãªããŸãã ããšãã°ãã¯ã©ã¹ã¿ãŒãLinuxãã¢ããªã±ãŒã·ã§ã³ãœãããŠã§ã¢ãªã©ã®åŸ®èª¿æŽã«é¢é£ããéåžžã«è€éãªæ§ææé ãæã€ãç¬èªã®ãœãããŠã§ã¢ããããŸãã ãããã®æäœã®å€ãã¯ãããŸãç¥ãããŠããªããã€ãã£ãæ©èœã䜿çšããå¿ èŠããããŸãããã³ãã¥ããã£ã¯æ¢æã®ãœãªã¥ãŒã·ã§ã³ãäœæããŠããããä»åŸã䜿çšããŸããã ãã¯ãªãŒã³ããããã®ãã¬ã€ããã¯ã§èª¬æãããšãæ°åããŒãžã®ããã¹ããå¿ èŠã«ãªããŸãã ãããŠããããã®æäœã®ãã°ã¯èªã¿ã«ãããridgeã«ãªããŸã-ç¹ã«ãããã¯é©åãªãã©ã³ãå¶åŸ¡ã®æ¬ åŠãšããã«å¯Ÿå¿ãããã°ã®çºè¡ã«ãããã®ã§ãïŒã³ãã¥ããã£ã§è³ªåãæã åºãããŸãããããã¯ãŸã ãããŸãïŒã ãã®åé¡ã解決ããããæ£ããæ¹æ³ã¯ãã¢ã¯ã·ã§ã³ãã©ã°ã€ã³ãšã¢ãžã¥ãŒã«ãäœæããããšã§ããè€éãªã³ãŒãã¯ãã¹ãŠããšã¬ã¬ã³ãã«äœæãããPythonã¹ã¯ãªããã«ã«ãã»ã«åãããŠããŸãã å®éãé«ã¬ãã«ã®ããžãã¹ãã©ã¡ãŒã¿ãå«ããã©ã°ã€ã³ã³ãŒã«ã®ã¿ãããã¬ã€ããã¯èªäœã«æ®ããŸã-GNU / Linuxã³ãã³ãã©ã€ã³ãŠãŒãã£ãªãã£ãšã®é¡æšã«ãã£ãŠã ãã®ããšãããã€ã³ãã©ã¹ãã©ã¯ãã£ãšã³ãžãã¢ïŒéçºè ã管çè ãéçºè -ãã®ã¿ã¹ã¯ãå®è¡ãããã¹ãŠã®äººïŒãé©åãªã¬ãã«ã§Pythonãç¥ã£ãŠããå¿ èŠããããŸãã ç¹å¥ãªPythonããã°ã©ããŒãšåãããã«ãããç¥ãå¿ èŠã¯ãããŸããããå®æããã³ãŒãã®èªã¿åããšãã°ä¿®æ£ãããã³Ensembleçšã®ã·ã³ãã«ãªã¢ãžã¥ãŒã«ã®äœæãã§ããããšã¯æåã®ç§recipeã§ãã
å®éãåŸãããçµæã¯ãå®éã«ã¯ãããçš®ã®ãã¹ã¯ãªãããã§ã¯ãªããç¹å¥ãªãµããŒããå¿ èŠãšããããªãè€éãªãœãããŠã§ã¢ã§ãã ããããã2ã€ã®ãªããžããªãžã®æåã®åé¢ãè¡ãããŸããã1ã€ã¯è£œåã³ãŒãçšã§ããã1ã€ã¯å±éã¹ã¯ãªããã³ãŒãçšã§ãã å±éã¹ã¯ãªãããªããžããªã®å Žåãéåžžãä»ã®ç¹å¥ãªãªããžããªç®¡çã·ã¹ãã ïŒããšãã°ãAtlassian Stashã§ã¯ãªããç¹å®ã®èšå®ãæã€GitLabïŒã䜿çšããŠãæ§æ管çã®æè»æ§ãé«ããããšãã§ããŸãã
äžèšã®ããŒã«ã«å ããŠãããã«å€ãã®å°ããªããŒã«ããããŸãã ããšãã°ãäžéšã®ãããžã§ã¯ãã§ã¯ãŸã GridGainã䜿çšããŠããŸããããSQLããŒã¿ããŒã¹-Liquibaseãæ¥ç¶ããŠç§»è¡ãããŒã«ããã¯ã§ããŸãã ãªã©ãªã©ã ãã®ãããªããšã¯ãã§ã«ãããžã§ã¯ãã®è©³çŽ°ã«å€§ããäŸåããŠãããå¯èœã§ããã°æšæºåããå¿ èŠããããŸãã ããšãã°ãUIãã¹ãã®ãã¬ãŒã ã¯ãŒã¯ãšããŠSeleniumãéžæããå Žåã¯ãããã«åºå·ããå¿ èŠããããŸãã ãã®ãããªæ±ºå®ããµããŒãããã«ã¯ãå€ãã®å°éç¥èãå¿ èŠã§ãã
次ã®æ®µéã¯ãå°çšã¹ã¿ã³ãã§ã®ã¯ãªãŒã³ã§æ£ããã·ã¹ãã ãã¹ãã§ãã
ããã§2ã€ã®éèŠãªããšãèµ·ãããŸãã
- ãã¹ãç°å¢ãã€ã³ã¹ããŒã«ããŠæ§æãã
- äžé£ã®èªåãã¹ããå®è¡ãã
ç°å¢ã®ã€ã³ã¹ããŒã«ãšã»ããã¢ããèªäœã¯ãå€ãã®å Žåãããã«ä¿®æ£ã®ããã«éä¿¡ãããå€ãã®é©ãã¹ããã®ãæããã«ããŸãã åºæ¬çã«ããããã¯ç®¡çã®åçŽããšå®¹æãã«é¢é£ããŠããŸãã ã·ã¹ãã ã¯æéã®çµéãšãšãã«æé·ããåŸåãããããã¥ãŒãã³ã°ã®è€éããå¢ããŸãããããŠãããªãã¯ãããã®åé¡ãèœããåãé€ãå¿ èŠããããŸã-ãã®ç«å Žããã
ãçŽç²ãªãSTãã¹ãã®äžé£ã®èªåãã¹ãã¯ãã¹ããªã³ãžã§ã³ã·ãŒãé«ããæ¹åã§ãæ±ãããDEVãã¹ããšã¯ç°ãªãå ŽåããããŸãã æå°ã®å®éšãããžã§ã¯ãã§ãããå°ãªããšãåºæ¬çãªç ãã¹ããå¿ èŠã§ãã ãã¹ãããªãå Žåããã®ãããžã§ã¯ãã¯çµ±åãã¹ãã«äœ¿çšã§ããŸããã
çµ±åãã¹ãã¯ãæ倧ãã€æãè€éã§æãéèŠãªãã¹ãã§ãã å°ãªããšãããã®æ®µéã§ã¯è€éãªãã°ã®æ°ãæãå€ããããéçºè ã«ã¯ãã®ããã«æãããŸã:-)ãšã©ãŒã¯ç¹å®ã®ãããžã§ã¯ãã ãã§ãªããæ°å人ã§ã¯ãªãã«ããŠãæ°çŸäººã®çµæã«åœ±é¿ãããããã§ããã ãæ£ç¢ºã«ãããè¡ãå¿ èŠããããŸãã
ãã®æ®µéã§ãã¹ã¿ã³ãã¯å®éã®ã€ã³ãã©ã¹ãã©ã¯ãã£ãã·ãã¥ã¬ãŒãããå®å šãªïŒéåžžã«å€§ããªïŒãªãœãŒã¹ãæã¡ãã·ã¹ãã 管çè ããå®å šãªãµããŒããåããŸãã
ããã€ãã®éèŠãªããšãèµ·ãããŸãã
- ãã¹ããããŒãžã£ãŒã¯ã補åã®å ¬éæºåãã§ããŠãããšããéç¥ãåãåãããããè¡ããã©ããã決å®ããå¿ èŠããããŸãã ãã¹ããããŒãžã£ãŒã¯ç®ã«èŠããªãåç·ã®æŠéæ©ã§ããã圌ã®è²¢ç®ãé倧è©äŸ¡ããããšã¯å°é£ã§ãã
- ãã¹ãç°å¢ãã€ã³ã¹ããŒã«ããŠæ§æããŸãã ãã®ç°å¢ã¯çµ±åãã¹ããç®çãšããŠãããããåã®åå ã«çµ±åããããã¹ãŠã®ãããžã§ã¯ãã«å ±éããŠããã補åãã€ã³ã¹ããŒã«ããããã®ã¢ããªã±ãŒã·ã§ã³ã®åãå ¥ãã«äŒŽããŸãã
- èªåããã³æåãã¹ãã æãå³å¯ã§ãè€éã§ãæ倧ã®ãã¹ãã¹ã€ãŒãã
ãããã¥ã¢ã«ããšããèšèã§ãã«ã鳎ããŸãããïŒ ã¯ããå®éã®ã·ã¹ãã ã§ã¯ ãèªååãããŸãåãå ¥ããããªãç¬éããããå¹³åããŠãããªãã¯ããã«ã€ããŠäœãããããšãã§ããŸããã ããã¯ç¹ã«UIå¿çæ§ãã¹ãã«åœãŠã¯ãŸããŸãïŒããããAIã¯ããã«ããããå®è¡ããŸããããŸã å®è¡ããŠããŸããïŒã éçºããŒã å šäœã®äž»ãªã¿ã¹ã¯ã®1ã€ã¯ããã®æ®µéãå¯èœãªéãè¿ éãã€ç¡çã«é²ããããšã§ãã - ãã¹ããããŒãžã£ãŒã¯ããã¹ãŠã®çš®é¡ã®ãã¹ãã«åæ Œããããšã®ç¢ºèªãåãåãã詳现ãªã¬ããŒããäœæããŸãã
- IBã«ã€ããŠã¯æžããªãããšã«åæããŸãã:-)
- ç¹ã«èå³æ·±ãã®ã¯è² è·ãã¹ãã§ãããã®çµæã¯é·æçãªçµæãããããå¯èœæ§ããããŸããå®éãããã¯ãã€ãã©ã€ã³ã®æåã®ç¬éã§ãããããã©ãŒãã³ã¹ã¯æ£åŒãªèšç®ã§ã¯ãªãå®éã«è¡šç€ºãããŸãã
å®å
šã«ãã¹ããããå®æåã¯ããã£ã¹ããªãã¥ãŒã·ã§ã³ã®ç¹å¥ãªéäžãªããžããªã«é
眮ãããŸãã ããã«å ããŠãå©çšå¯èœãªãã¹ãŠã®ããã¥ã¡ã³ãããã³ãã®ä»ã®è³æãæ·»ä»ãããŠããŸãã åä¿¡ãããã¡ã€ã«ã¯æ°žä¹
ã«åçµãããŸãã ããããå€æŽããããã«ç¹å¥ãªæ段ã䜿çšãããŸããããããã¯æ±ºããŠäžå¯èœã§ããã
ïŒãã®ãããªãªããžããªãçªç¶èªåã§äœæããŠJavaã§èšè¿°ãããå Žåã¯ãåã«Nexusã䜿çšã§ããŸãïŒã
åãå ¥ããã¹ããå®è¡ããããšã¯ãç§å¯ã®ç¥èã«å±éºã«è¿«ããã1ã€ã®ãããã¯ã§ãã ãããããããã¬ãã«ã§ã¯ããã¹ãŠãç°¡åã§ããããã¯èµ·ãããŸãïŒ
- ç¹å¥ãªèªåãã¹ããšåãå ¥ããã¹ãã®å€§èŠæš¡ãªè€åäœã®å®è¡
- ãããŸã§ã«ãªãè€éãªæåãã¹ããå«ã
ãã®æ®µéãééããåŸã補åã®åäœæºåãæŽã£ããšæ³å®ã§ããŸãã
ãããŠæåŸã«ãæçœãªçç±ã®ããã«æžãããšãã§ããªãå®éã®ç£æ¥é転ã§ã®å±éã ã¯ããããã¯æå³ããããŸããããªããªã äžèšã®ãã€ãã©ã€ã³ã¯ã幎æ«ã«ã®ã¿ããã ã«å°éããŸãã çŸåšãããã ã«ãããã€ããå Žåãæåã®ã€ã³ã¹ããŒã«æé ã䜿çšããããã£ã¹ããªãã¥ãŒã·ã§ã³ã«æ·»ä»ãããŠããã€ã³ã¹ããŒã«æé ã䜿çšããŸããããã¯ãç¹å¥ãªãããã€ã¡ã³ããšãã¹ããŒãã«ãã£ãŠå®è¡ãããŸãã
èªåå±éã®å Žåããã®æ®µéã§ã¯2ã€ã®ããšãè¡ãããŸãã
- çããŠãã人ïŒæ¡ä»¶ä»ãã§ãdevops-engineerãïŒã¯ãå±éã®æºåãã§ããŠããããšãæåã§ç¢ºèªããå¿ èŠããããŸã
- èªåå±é
ãã¹ãŠã ãã®æå°éã®ããŒã«ã»ããã¯ãã§ã«ãå€ãã®äººã ã1ã€ã®å±æ ¹ã®äžã§ä»²è¯ãããã®ã«ååã§ãã ãã®ããŒã«æšæºã¯éçºè ã®èœåãå¶éãããã®ã§ã¯ãªãããããªãéçºã®ããã®å®å®ãããã©ãããã©ãŒã ãæäŸããããšãç解ããããšãéèŠã§ãã
æè¡ã³ã¢PPRB
JUG.ruã«ã³ãã¡ã¬ã³ã¹ã§ã® Sberbank Technologiesã®ã¬ããŒãã«ç²ŸéããŠããèªè ïŒãšããã§ã 次ã®ã«ã³ãã¡ã¬ã³ã¹ã¯è¿æ¥äžã«éå¬ãããŸã ïŒã¯ãããã®è©±ãäžèšã®ã¹ããŒã ã§çµãã£ãŠããªãããšã«æ°ä»ããããããŸããã ãããã圌女ã¯ãŸã å§ãŸã£ãã°ããã§ãã
ãããã®ãœãªã¥ãŒã·ã§ã³ã¯Sberbank Technologiesèªäœã«éåžžã«åºæã§ããã誰ãããããã«ã€ããŠç¥ãå¿ èŠã¯ãªãããããã®èšäºã¯å ±éã®ããŒã«ã¹ã¿ãã¯ããå§ãŸããŸããã ãŸã ç§ãã¡ãšäžç·ã«ãã人ã®ããã«ãç§ãã¡ã¯ç¶ããŸãã
Sbertechã§äœ¿çšãããé©æ°çãªãœãªã¥ãŒã·ã§ã³ã«ã¯ãç¹å¥ãªéçºã¢ãããŒããå¿ èŠã§ãã ãã®çç±ã«ã¯ãå€æ§ãªæè¡ã¹ã¿ãã¯ãå€ãã®ãµãã·ã¹ãã ããã®ããŒã¿ã®éçŽã®å¿ èŠæ§ããã®ãããªéã®ããŒã¿ãåŠçããããã«å¿ èŠãªä¿¡ããããªãæ°ã®ãµãŒããŒããµãŒãã¹ãå®è¡ã§ãããäŒæ¥ãããã³ãå€éãã®æ¬ åŠãªã©ãå«ãŸããŸãã é«ãããã©ãŒãã³ã¹ããã©ãŒã«ããã¬ã©ã³ã¹ã24æé365æ¥ã®ä¿å®æ§ãç·šæããå¿ èŠãããã«ãããããããåŸããããœãªã¥ãŒã·ã§ã³ã¯æšæºã®ããŒããŠã§ã¢ã§åäœããç¹å¥ãªã¹ãŒããŒã³ã³ãã¥ãŒã¿ãŒãå¿ èŠãšããŸããã çµæãšããŠåŸããããœãªã¥ãŒã·ã§ã³ã¯ãåæã«ãéäžåã·ã¹ãã ãšåæ£åã·ã¹ãã ã®å±æ§ãæã€å¿ èŠããããŸãã é£ããç¶æ³ã
ãã®çµæãããããçµ±åæ å ±ã¹ããŒã¹ãäœæãããŸããã ããã¯ããã¹ãŠã®ããŒããçžäºæ¥ç¶ãããã¯ã©ã¹ã¿ãŒã¢ãŒããã¯ãã£ã§ãããå šå¡ãå šå¡ãšéä¿¡ã§ããŸãã éè€ãçµ±åã¯ãããŸããããã¹ãŠã®ããŒã¿ã¯1ã€ã®ã€ã³ã¹ã¿ã³ã¹ã«ååšãããã€ã§ãã©ã®ããŒãããã§ããã¹ãŠã®ã¢ãžã¥ãŒã«ã«ã¢ã¯ã»ã¹ã§ããŸãã ãã®ã·ã¹ãã ã®ããã¯ãšã³ãã¯ãGridGainãšåŒã°ããã¡ã¢ãªå ããŒã¿ã°ãªããã§ãã ä»æ¥ãããã¯å€§éã®ããžãã¹ããŒã¿ãä¿åããã³åŠçããããã®äžçæé«ã®ã·ã¹ãã ã®1ã€ã§ãã
管çè ãšéçºè ãçµ±åãã¹ããåŠçããå¿ èŠãããã®ã¯ããã®ã¢ãŒããã¯ãã£ã§ãã .
, CI/CD . Jenkins Ansible , . .
Java- ,
.
, ââ ( -), , . , : , , , . - , Java.
, , OpenSource.
GridGain Apache Ignite ( ? , JUG.ru, ). Apache Kafka , ZeroMQ , Hyperic â Open Source. , â (, , ), , , . , Apache Kafka OpenStack â , .
, â , . , . â Kafka, , . â Ignite/GridGain, , - , IMDG, . ( ), Java- ( ). â , , , .
, , , , , , . , -. , HypericHQ â â â. , ( , ) , . - â Windowsâ, , - . , Java-: properties-. â /etc , . , , ( ) â .properties /etc . .
, CI/CD , .
ãããã«
CI/CD - ( ), - ( , ).
, : , - ; , ; , - â . , , : , .
, DevOops 2017 , - 20 2017. , - â .
è¬èŸ
-: ( ), ( ), ( .BPM), ( ) . , , . ãããããé¡ãããŸãïŒ