ååãšç§ã¯ãã³ã¡ã³ããŸãã¯HighLoad ++ 2018ã®äŒç€Ÿã®ããŒã¹ã§è°è«ããæºåãã§ããŠããŸãã
ã¬ãŒããŒã®è©³çŽ°ã¯ãã¡ããã芧ãã ããã
ãã§ã«è¿°ã¹ãããã«ãLamodaã«ã¯èšå€§ãªæ°ã®ç°ãªããã¯ãããžãŒãšããŒã«ãé¢äžããŠããŸãã ããã¯å¶ç¶ã§ã¯ãããŸããã ããããªããšãè² è·ã«å¯ŸåŠã§ããŸããã 倧èŠæš¡ãªèªåå庫ããããŸãã ã³ãŒã«ã»ã³ã¿ãŒã«ã¯500人ã®åŸæ¥å¡ã察å¿ããŠãããæ§ç¯ããããã»ã¹ã«ããã泚æåŸ5å以å ã«ã客æ§ã«é»è©±ããããããšãã§ããŸãã é éãµãŒãã¹ã¯15åééã§åäœããŸãã ããããç¬èªã®ã·ã¹ãã ã«å ããŠãä»ã®ãªã³ã©ã€ã³ã¹ãã¢ãšB2Bãçµ±åããŠããŸãã 解決ãã¹ãããŸããŸãªã¿ã¹ã¯ãšeã³ããŒã¹ãªã©ã®ãã€ãããã¯ãªããžãã¹ã®èŠä»¶ã«ãããæé©ãªæè¡ã§ååé¡ã解決ããããããæè¡ã¹ã¿ãã¯ã®æé·ã¯é¿ããããŸããã å€æ§æ§ã¯é¿ããããŸããã 以äžã«ãã¹ã¿ãã¯ã®äž»ãªä»£è¡šè ã«ã€ããŠèª¬æããŸãã ãããããã®å€æ§æ§ã«ãè¿·åã«ãªããªããããã«ããã¡ã«ããºã ããå§ããŸãããã
ã¢ãŒããã¯ãã£ã®åºæ¬
ãã€ã¯ããµãŒãã¹ã¢ãŒããã¯ãã£ã«ç©æ¥µçã«ç§»è¡ããŠããŸãã ã»ãšãã©ã®ã·ã¹ãã ã¯ãã§ã«ãã®ã€ããªãã®ãŒã«åŸã£ãŠæ§ç¯ãããŠããŸã-2幎åãç§ãã¡ã¯åé¡ãšãã®è§£æ±ºçã§ç§»è¡æ®µéãçµãŸããã ãããããã®ããã»ã¹ã®è©³çŽ°ã«ã€ããŠã¯èª¬æããŸãããAndreiYevsyukovã®ã¬ããŒãã e-Comãã©ãããã©ãŒã ã®äŸã§ã®ãã€ã¯ããµãŒãã¹ã®æ©èœ ãã§ã¯ãããã«ã€ããŠè©³ãã説æããŠããŸãã
æè¡ã®å€æ§æ§ãæªåãããªãããã«ããå®çžŸã®ããæ £è¡ã®ç¬è£ããå°å ¥ããŸãããããã«ãããæ°ãããããã®äœæè ã¯ã瀟å ã§ãã§ã«äœ¿çšãããŠããæè¡ãšããŒã«ã䜿çšããããšãæšå¥šãããŸãã ã»ãšãã©ã®ãµãŒãã¹ã¯APIãä»ããŠçžäºã«éä¿¡ããŸãïŒJSONRPCæšæºã®2çªç®ã®ããŒãžã§ã³ã®ä¿®æ£ã䜿çšããŸãïŒããããžãã¹ããžãã¯ã§èš±å¯ãããŠããå Žåã¯ãçžäºäœçšã«ããŒã¿ãã¹ã䜿çšããŸãã
ä»ã®æè¡ã®äœ¿çšã¯çŠæ¢ãããŠããŸããã ãã ããæ°ããã¢ã€ãã¢ã¯ãäž»èŠåéã®ãªãŒããŒãå«ãç¹å¥ã«äœæããã建ç¯å§å¡äŒã§ãã¹ãããå¿ èŠããããŸãã
次ã®ææ¡ãèæ ®ããŠãå§å¡äŒã¯å®éšã«éä¿¡å·ãåºãããæ¢åã®ã¹ã¿ãã¯ããäœããã®ä»£æ¿ãæäŸããŸãã ãšããã§ããã®æ±ºå®ã¯ããžãã¹ã®çŸåšã®ç¶æ³ã«å€§ããäŸåããŸãã ããšãã°ããã©ãã¯ãã©ã€ããŒã»ãŒã«ã®åå€ã«ããŒã ãæ¥ãŠãå§å¡äŒããããŸã§èããããšã®ãªãæè¡ãçç£ã«å°å ¥ãããšçºè¡šããå Žåãã»ãšãã©ã®å ŽåæåŠãããŸãã äžæ¹ãæ°ããæè¡ãããŒã«ãããã»ã©éèŠã§ãªãããžãã¹ç°å¢ã§å°å ¥ãããå Žåãåãå®éšã«éä¿¡å·ãäžããããšãã§ããå®è£ ã¯æ¬çªä»¥å€ã®ãã¹ãããå§ãŸããŸãã
ã¢ãŒããã¯ãã£å§å¡äŒã¯ããã¯ãããžãŒã¬ãŒããŒã®ä¿å®ãæ åœãã2ã3ãæããšã«å¿ èŠãªå€æŽãè¡ããŸãã ãã®ãªãœãŒã¹ã®ç®çã®1ã€ã¯ãäŒç€Ÿããã§ã«æã£ãŠããå°éç¥èã®çš®é¡ãããŒã ã«æäŸããããšã§ãã
ããããæãèå³æ·±ããã®ã«ç§»ããŸããã-ã¬ãŒããŒã®ã»ã¯ã¿ãŒã®åæã§ãã
ãã¯ãããžãŒæ¡çšã®ã«ããŽãªã«ã€ããŠãå°ãéæšæºçãªè§£éã䜿çšããŠããããšã«æ³šæããŠãã ããã
- ADOPT-å®è£
ãããç©æ¥µçã«äœ¿çšãããŠããæè¡ãšããŒã«ã
- ãã©ã€ã¢ã«-ãã§ã«ãã¹ã段éãééããæ¬çªç°å¢ã§ã®äœæ¥ãæºåããŠããïŒãŸãã¯æ¢ã«ããã§åäœããŠããïŒæè¡ãšããŒã«ã
- ASSESS-çŸåšè©äŸ¡äžã§ããŸã çç£ã«åœ±é¿ãäžããŠããªããã©ã€ã¢ã«ããŒã«ã åå ãããšããã¹ããããžã§ã¯ãã®ã¿ãå®è£
ãããŸãã
- ä¿ç-ãã®ã«ããŽãªã«ã¯å°éç¥èããããŸãããèšåãããããŒã«ã¯æ¢åã®ã·ã¹ãã ã®ãµããŒãã§ã®ã¿äœ¿çšãããŸã-ãããã§æ°ãããããžã§ã¯ãã¯éå§ãããŸããã
éçº
PHP-Python-Go
æåã«èª¬æãããèšèªã¯PHPã§ãã ä»æ¥ã§ã¯ãã¹ãã¢ã®ããã¯ãšã³ãã¿ã¹ã¯ã®äžéšã®ã¿ã解決ããæåã¯ããã¯ãšã³ãå šäœãPHPã§æ©èœããŠããŸããã ããã³ããšã³ãã§ããžãã¹ãæ¡å€§ããã«ã€ããŠãé床ãšçç£æ§ã®æ¬ åŠãé¡èã«ãªããŸãããåœæã¯PHP 5ã䜿çšããŠãããããPythonã眮ãæããŸããïŒæåã®2.xã次ã«3.xïŒã ãã ããPHPã§ã¯è±å¯ãªããžãã¹ã¢ãã«ãäœæã§ããããããã®èšèªã¯ããŸããŸãªéçšããã»ã¹ã®èªååãç¹ã«ãµãŒãããŒãã£ã®ãªã³ã©ã€ã³ã¹ãã¢ãé ä¿¡ãµãŒãã¹ãšã®çµ±åãããã³è£œåã«ãŒããäœæããã³ã³ãã³ãã¹ã¿ãžãªã®èªååã®ããã«ããã¯ãªãã£ã¹ã«æ®ã£ãŠããŸãã çŸåšãç§ãã¡ã¯ãã§ã«PHP 7ã䜿çšããŠããŸããPHPã§ã¯ãå éšäœ¿çšã®ããã®å€ãã®ã©ã€ãã©ãªãäœæããŸãããã€ã³ãã©ã¹ãã©ã¯ãã£ã®çµ±åãšã©ãããŒããµãŒãã¹éã®çµ±åã¬ã€ã€ãŒãããŸããŸãªåå©çšãã«ããŒã§ãã ã©ã€ãã©ãªã®æåã®ãããã¯ãã§ã«github.comã®ãªãŒãã³ãœãŒã¹ã«åã蟌ãŸããŠãããæ®ãã®æããæçãããã©ã€ãã©ãªã¯ãŸããªãå°çããŸãã æåã®1ã€ã¯ã¹ããŒããã·ã³ã§ãããããã¯ãã»ãŒãã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ã«ååšãããã¹ãŠãéä¿¡ããåã«é åºã確èªããŸãã
æéã®çµéãšãšãã«ãã¹ãã¢ã®ããã¯ãšã³ãçšã®Pythonãäžååã«ãªããŸããã ä»ãç§ãã¡ã¯ããçç£çã§è»œéãªGoã奜ã¿ãŸãã
ããããGoãžã®ç§»è¡ã¯ãå€ãã®ããŒããŠã§ã¢ãšäººçè³æºãç¯çŽãããããéèŠãªå€æŽã§ãã-å¹çãå€§å¹ ã«åäžããŸããã æåã®Goãããžã§ã¯ããæåã«äœæããã®ã¯RnDã§ãããPythonã®æè¡çãªå¶éã«å¯ŸåŠããããããŸããã§ããã ãã®åŸãã¢ãã€ã«éçºããŒã ã«ã¯ã圌ã«ç²Ÿéããæ¬çªã«æé²ããã人ãããŸããã 圌ãã®æåºããããã¹ããå®æœããçµæã«æºè¶³ããŸããã å¥ã®ã±ãŒã¹ã§ã¯ããããžã§ã¯ãã®äžéšãPythonããGoã«æžãçŽãããåŸãã¯ã©ã¹ã¿ãŒããŒãã®èªã¿èŸŒã¿ãå€§å¹ ã«äœäžããŸããã ããšãã°ããã¹ã±ããã®å²åŒèšç®ãšã³ãžã³ãPythonããGoã«æžãæãããšãåãããŒããŠã§ã¢å®¹éã§8åã®ãªã¯ãšã¹ããåŠçã§ããå¹³åAPIå¿çæéã25åççž®ãããŸããã ã€ãŸã éçºè ã«ãšã£ãŠããã»ã©äŸ¿å©ã§ã¯ãªãå Žåã§ããPythonãããå¹æçã§ããããšãããããŸããïŒæ£ããèšè¿°ããå ŽåïŒã
ã¢ãã€ã«éçºã¯å€æ°ã®å éšAPIãšå¯Ÿè©±ããå¿ èŠããããããAPIãµãŒãã¹ã®èª¬æïŒSwaggerä»æ§ã«æºæ ïŒã«åŸã£ãŠãã¯ã©ã€ã¢ã³ããGoã§çæã§ããã³ãŒããžã§ãã¬ãŒã¿ãŒãäœæãããŸããã ãã®ãããGoã¯æ¢åã®ãµãŒãã¹ãšããŒã«ãç¹ã«è² è·ã®ãããã«ããã¯ããäœæãããã®ã«åŸã ã«å¯Ÿå¿ãå§ããŸããã ã¢ãã€ã«ããã¯ãšã³ãéçºè ã®äœæ¥ã楜ã«ããã ãã§ãªããAPIã®éçºæ¹æ³ãã¡ãœããã®åœåæ¹æ³ããã©ã¡ãŒã¿ã®åãæž¡ãæ¹æ³ãªã©ã«é¢ããå éšèŠåãç°¡ç¥åããŸããã ãã®æšæºåã«ããããã¹ãŠã®ããŒã ã«ãšã£ãŠæ°ãããµãŒãã¹ã®éçºãšå®è£ ã容æã«ãªããŸããã
çŸåšãGoã¯ãã»ãŒãã¹ãŠã®å ŽæïŒãŠãŒã¶ãŒãšã®ãã¹ãŠã®ãªã¢ã«ã¿ã€ã ã€ã³ã¿ã©ã¯ã·ã§ã³ïŒã§ããµã€ãã®ããã¯ãšã³ããšã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ãããã³ããããé¢é£ä»ããããŠãããµãŒãã¹ã§æ¢ã«äœ¿çšãããŠããŸãã ãŸããããŒã¿ãŠã§ã¢ããŠã¹ãšããåãããã¿ã¹ã¯ãªã©ãè¿ éãªåŠçãšå¿çã®å¿ èŠããªãå ŽåãPythonã¯ããŒã¿åŠçã¿ã¹ã¯ãšåçã§ã¯ãªãããïŒããã§ã¯Go浞éããããŸããïŒPythonãæ®ããŸãã
ã¬ãŒããŒã§ãããããã«ãè³ç£ã«ã¯JavaããããŸãã å庫管çã·ã¹ãã ïŒWMSïŒã§äœ¿çšããã泚æã®è¿ éãªåéã«åœ¹ç«ã¡ãŸãã ãããŸã§ã®ãšãããããªãå€ãã¹ã¿ãã¯ãšå€ãã¢ãŒããã¯ãã£ã¢ãã«ããããŸããWildfly10ããã³8 Java Hotspotã§å転ããã¢ããªã¹ããããŠNetbeans Application Platformã«ã¯ãªã¢ãŒãã£ã³ã°ãšãªããã¯ã©ã€ã¢ã³ãããããŸãïŒãã®æ©èœã¯Webã«è»¢éãããŸãïŒã ããã§ãç§ãã¡ã®æŠåšåº«ã«ã¯ãäŒç€Ÿçšã®æšæºçãªã¹ãã¬ãŒãžãšãç¬èªã®ç£èŠãããããŸãã æ®å¿µãªãããå庫ã®éçšãšãã®äžã§ã®éèŠãªããã»ã¹ïŒã»ã¯ã·ã§ã³ãéè² è·ã«ãªã£ãå Žåãªã©ïŒãèŠèŠåã§ããããŒã«ã¯èŠã€ãããããã®ãããªããŒã«ãèªåã§äœæããŸããã
Pythonãæ©æ¢°åŠç¿ã®ã¡ã€ã³èšèªãšããŠäœ¿çšããŸããæšå¥šã·ã¹ãã ãæ§ç¯ããã«ã¿ãã°ãã©ã³ã¯ä»ãããæ€çŽ¢ã¯ãšãªã®ã¿ã€ããã¹ãä¿®æ£ããHadoopã¯ã©ã¹ã¿ãŒïŒPySparkïŒã§Sparkãšé£æºããŠä»ã®åé¡ã解決ããŸãã Pythonã¯ãå éšã¡ããªãã¯ã®èšç®ãšABãã¹ãã®èªååã«åœ¹ç«ã¡ãŸãã
ããã³ããšã³ããšã¢ãã€ã«éçº
ãã¹ã¯ããããªã³ã©ã€ã³ã¹ãã¢ã®ããã³ããšã³ããšã¢ãã€ã«ãµã€ãã¯ãJavaScriptã§èšè¿°ãããŠããŸãã çŸåšãããã³ããšã³ãã¯åŸã ã«ES6ä»æ§ã«ç§»è¡ããããã«åãããŠæ°ãããããžã§ã¯ããäœæããŠããŸãã ã¡ã€ã³ãã¬ãŒã ã¯ãŒã¯ãšããŠvue.jsã䜿çšããŸãããããŒã«ã»ã¯ã·ã§ã³ã§è©³çŽ°ã説æããŸãã
ã¢ãã€ã«ãã©ãããã©ãŒã åãã®ã¢ããªã±ãŒã·ã§ã³éçºã¯äŒç€Ÿå ã®ç¬ç«ãããŠãããã§ãããããã¯ãšã³ãã°ã«ãŒããç¬èªã®ãã¯ãããžãŒã¹ã¿ãã¯ãšããŒã«ãåããAndroidããã³iOSã¢ããªã±ãŒã·ã§ã³ãå«ãŸããŸãããããã¯ãã©ãããã©ãŒã ã®éãã«ããããŠãããå šäœã§çµ±åããããšã¯åžžã«äžå¯èœã§ãã
2幎éãKotlinã§ãã¹ãŠã®æ°ããAndroidéçºãé²è¡äžã§ãããããç°¡æœã§ç解ããããã³ãŒããæžãããšãã§ããŸãã æãé »ç¹ã«äœ¿çšãããæ©èœã®äžã§ãéçºè ã¯ãã¹ããŒããã£ã¹ããã·ãŒã«ãã¯ã©ã¹ãæ¡åŒµæ©èœãã¿ã€ãã»ãŒããã«ããŒïŒDSLïŒãããã³stdlibæ©èœãåŒã³åºããŸãã
iOSã®éçºã¯Swiftã§é²è¡äžã§ãããObjective-Cã«åã£ãŠä»£ãããŸããã
ç¹å¥ãªèšèª
Lamodaã®ã¿ã¹ã¯ã®ç¯å²ã¯ãããããç°ãªããã©ãããã©ãŒã çšã®ãã·ã§ãŒã±ãŒã¹ãã®éçºã«éå®ããããã·ã¹ãã å ã§ã®ã¿äœ¿çšãããããã§åäœãããã€ã³ãã©ã¹ãã©ã¯ãã£ã®ä»ã®éšåã«ã¯å®è£ ãããªãèšèªãããã€ããããŸãã
- R-ããžãã¹ã€ã³ããªãžã§ã³ã¹ïŒBIïŒã®ãã¬ãŒã ã¯ãŒã¯å
ã§ããŒã¿åŠçããã³ã¬ããŒãã¹ã¯ãªããã«äœ¿çšãããŸãã æ¬çªç°å¢ã§ã¯ãªããæ°ããã¿ã¹ã¯ã«ã¯äœ¿çšãããªããªããŸãããããŸã å€ãã®ã¹ã¯ãªããããããŸãã Rã®åé¡ã解決ããŠããã®èšèªã¯è² è·ã®é«ãã¢ããªã±ãŒã·ã§ã³çšã§ã¯ãªãããšã«æ°ä»ããŸããã æ°ããã¿ã¹ã¯ã§ã¯ãPythonããã³Rãšäºææ§ã®ãªãä»ã®ãã¯ãããžãŒã䜿çšããŸãã
- Scala-ããªãã¥ã¹ã®éçºãªãã£ã¹ãã³ãŒã«ã»ã³ã¿ãŒãªãŒãã¡ãŒã·ã§ã³ã·ã¹ãã ãéçºããããã«äœ¿çšããŸãã åœåããã®ã·ã¹ãã ã¯PHPã§èšè¿°ãããŠããŸãããããã€ã¯ããµãŒãã¹ã¢ãŒããã¯ãã£ãžã®ç§»è¡äžã«ãScalaã§å€ãã®ã³ã³ããŒãã³ããæžãçŽãããŸããã ãŸããããŒã¿ãšã³ãžãã¢ãªã³ã°ããŒã ã¯Sparkãžã§ããäœæããŸãã
- ç§ãã¡ãèŠãŠããTypeScriptã é
ä¿¡ã¯æ¢ã«ãã®å©ããåããŠå®è£
ãããŠãããå°æ¥çã«ã¯ããã³ããšã³ãã§TypeScript + vue.jsã䜿çšããŸãã
- Luaã¯ïŒnginx APIãä»ããŠïŒnginxãæ§æããããã«äœ¿çšãããŸãããä»ã®ãããžã§ã¯ãã§ã¯ããã§ã¯ãããŸããã
- ç§ãã¡ã¯ãã¡ãã·ã§ã³äŒç€Ÿã§ãããé¢æ°åããã°ã©ãã³ã°ã®ãã¡ãã·ã§ã³ãè¿œã£ãŠããŸãã ããšãã°ãå庫ã®1ã€ã«ããä»åãããã€ã¹ãšãã¥ã¬ãŒã¿ãŒã¯Haskellã§èšè¿°ãããŠããŸãã
ããŒã¿ç®¡ç
DBMSãããŒã¿æ€çŽ¢ããã³åæ
å€ãã®äŸã®ããã«ãPostgreSQLã§å®è£ ããæãå€æ§ãªããŒã¿ããŒã¹ã¯ããã£ã¬ã¯ããªãä¿åãããªã©ããªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ãå¿ èŠãªå Žæã§äœ¿çšãããŸãã ãã®æè¡ã®å°é家ãèŠã€ããã®ã¯éåžžã«ç°¡åã§ãããã«å€ãã®ç°ãªããµãŒãã¹ãå©çšã§ããŸãã
ãã¡ãããPostgreSQLã¯ITã€ã³ãã©ã¹ãã©ã¯ãã£ã§èŠã€ããããšãã§ããå¯äžã®DBMSã§ã¯ãããŸããã ããšãã°ãäžéšã®å€ãã·ã¹ãã ã§ã¯MySQLã䜿çšãããŸãããWMSã«ã¯å°ãMongoDBããããŸãã ãã ããé«è² è·ãšã¹ã±ãŒãªã³ã°ïŒæ®ãã®ãã¯ãããžã¹ã¿ãã¯ãèæ ®ããïŒã®å Žåãæ°ãããããžã§ã¯ãã«ã¯äœ¿çšããŸããã äžè¬çã«ãPostgreSQLããã¹ãŠã§ãã
Aerospikeã¯ã¬ãŒããŒã«ã衚瀺ãããŸãã ããªãç©æ¥µçã«äœ¿çšããŠããŸãããã補åã®ã©ã€ã»ã³ã¹å¥çŽãå€æŽãããããããç§ãã¡ã®ãããŒãžã§ã³ã¯å°ãã«ãããããŸããã ããããä»ãç§ãã¡ã¯åã³åœŒãèŠãŸããã ããããã楜åšã«å¯Ÿããç§ãã¡ã®æ 床ãåèãããããããç©æ¥µçã«äœ¿çšããã§ãããã çŸåšãAerospikeã¯ãããŒãžé²èŠ§ã€ãã³ãã®éçŽãµãŒãã¹ããã¹ã±ããã§ã®ãŠãŒã¶ãŒã®äœæ¥ãããã³ç€ŸäŒçå®å šãµãŒãã¹ã§äœ¿çšãããŠããŸãïŒãä»é±ã5人ããã®è£œåããæ°ã«å ¥ãã«è¿œå ããŸãããïŒã ä»ãç§ãã¡ã¯ããã«ã€ããŠããã«å³ããå§åãè¡ã£ãŠããŸãã
Apache Solrã¯ãå®çšŒåããŒã¿ã®æ€çŽ¢ã«äœ¿çšãããŸãã 䞊è¡ããŠãElasticSearchã䜿çšããŸãã ã©ã¡ãã®ãœãªã¥ãŒã·ã§ã³ããªãŒãã³ãœãŒã¹ã§ããã以åã«æ€çŽ¢ãå°å ¥ããã°ããã®å ŽåãApache Solrã¯ãã§ã«3çªç®ãŸãã¯4çªç®ã®ããŒãžã§ã³ãæã¡ãç©æ¥µçã«éçºãããŠããŸãã.ElasticSearchã«ã¯æåã®å®å®ãªãªãŒã¹ãããããŸããã§ãã-å®çšŒåç°å¢ã§äœ¿çšããã«ã¯æ©ãããŸãã 圹å²ãå€æŽãããŸãããElasticSearchã®ãœãªã¥ãŒã·ã§ã³ãèŠã€ããã®ãã¯ããã«ç°¡åã«ãªãããããæºåããã®ãåŸæãªæ°ãã人ãã¡ããã£ãŠæ¥ãŸããã ãã ãã補åçã«ã¯Solrããããå°ãªããšããã©ãã¯ãã©ã€ããŒ2018ãŸã§ã¯å¥ã®ãœãªã¥ãŒã·ã§ã³ã«ç§»è¡ããŸããã
Google Trendsã«ãããApache SolrïŒéïŒãšElasticSearchïŒèµ€ïŒã®æ€çŽ¢ã¯ãšãªã®ãã€ããã¯ã¹ã®æ¯èŒ
ããŒã¿åæã¯ããã€ãã®ã·ã¹ãã ã§è¡ãããŸããç¹ã«ãApache Hadoopãç©æ¥µçã«äœ¿çšããŠããŸãã 䞊è¡ããŠãVerticaã¯ããŒã¿ããŒãïŒåèšããªã¥ãŒã çŽ4 TBïŒã®æ ŒçŽã«äœ¿çšãããŸãã ãããã®ã·ã§ãŒã±ãŒã¹ã§ã¯ã財åãéçšãããã³åæ¥ã®ã¬ããŒããäœæãããŸãã ETLã¿ã¹ã¯ã®å€ãã§ã以åã¯Luigiã䜿çšããŠããŸããããçŸåšã¯Apache Airflowã«ç§»è¡ããŠããŸãã ãŸããPentahoããªã¬ãŒã·ã§ãã«ã¹ãã¬ãŒãžã«äœ¿çšããŠããŸãããã®ã¹ãã¬ãŒãžã«ã¯ãçŽ1,000ã®éåžžã®ETLã¿ã¹ã¯ããããŸãã
ä»ã®ã·ã¹ãã ã®åæãšããŒã¿æºåã®äžéšã¯ãSparkã§å®è¡ãããŸãã äžéšã®å Žæã§ã¯ãããã¯åæããŒã«ã§ããã ãã§ãªããã©ã ãã¢ãŒããã¯ãã£ã®äžéšã§ããããŸãã
ITã€ã³ãã©ã¹ãã©ã¯ãã£ã«ãããéèŠãªåœ¹å²ã¯ãERPã·ã¹ãã ïŒMicrosoft Dynamics AXããã³1CïŒã«ãã£ãŠæããããŸãã DBMSãšããŠãMicrosoft SQL Serverã䜿çšãããŸãã ãŸããã¬ããŒãã®å ŽåãåæãµãŒãã¹ãã¬ããŒããµãŒãã¹ãªã©ã®ã³ã³ããŒãã³ãã
ãã£ãã·ã³ã°
ãã£ãã·ã³ã°ã«ã¯Redisã䜿çšããŸãã 以åã¯ããã®ã¿ã¹ã¯ã¯MemCachedã«ãã£ãŠå®è¡ãããŠããŸããããã£ã¹ã¯ãžã®å®æçãªãã³ãã§ã¯ããŒå€ã¹ãã¬ãŒãžãšããŠäœ¿çšã§ããªãã£ããããç Žæ£ããŸããã
ã¡ãã»ãŒãžãã¥ãŒ
ã€ãã³ããããŒã«ãŒãšããŠãApache KafkaãšRabbitMQã®2ã€ã®ããŒã«ãåæã«äœ¿çšããŸãã
Apache Kafkaã¯ãã¡ãã»ãŒãžã³ã°ãå¿ èŠãªããŸããŸãªã·ã¹ãã ã§æ°äžã®ã¡ãã»ãŒãžãåŠçã§ããããŒã«ã§ãã ãŠãŒã¶ãŒã€ãã³ãããã°èšé²ãªã©ãã·ã¹ãã ã®è² è·ã®é«ãéšåã«åå¥ã®Kafkaã¯ã©ã¹ã¿ãŒããããã€ãããŸãïŒ Highload ++ 2017ã§ã®ãã°èšé²ã«ã€ããŠã¯è¯ãå ±åããããŸãã ïŒã Kafkaã䜿çšãããšãéã®äœ¿çšãæå°éã«æããªãããæ¯ç§60äžä»¶ã®ãã«ã¯ã¡ãã»ãŒãžã«å¯ŸåŠã§ããŸãã
å éšã·ã¹ãã ã§ã¯ãä¿çäžã®ã¢ã¯ã·ã§ã³ã«RabbitMQã䜿çšããŸãã
ãã©ãããã©ãŒã ãšã€ã³ãã©ã¹ãã©ã¯ãã£
ç¶ç¶çããªããªãŒ
å±éã«ã¯ãHashicorpã®Nomad + Consulãã³ãã«ã«ä»£ããKubernetesã䜿çšãããŸãã 以åã®ã¹ã¿ãã¯ã¯ãããŒããŠã§ã¢ã®ã¢ããã°ã¬ãŒãã§ã¯éåžžã«ããŸãæ©èœããŸããã§ããã OpsããŒã ãããŒããå転ããã³ã³ãããæ ŒçŽãããŠããç©çãµãŒããŒãå€æŽãããšãå®æçã«å£ããŠã¯ã©ãã·ã¥ããäžæãæã¿ãŸããã§ããã åœæã¯å®å®ããããŒãžã§ã³ã¯ãããŸããã§ããã ããã«ããã®æç¹ã§ã¯ææ°ã®0.5.6ã¯äœ¿çšããŠããŸããã§ããããããã¯ãŸã æŽæ°ããå¿ èŠããããŸããã æåŸã®ããŒã¿çã«ã¢ããã°ã¬ãŒãããã«ã¯ãããã€ãã®äœæ¥ãå¿ èŠã§ããã ãããã£ãŠããããæŸæ£ããŠããã人æ°ã®ããKubernetesã«åãæ¿ããããšã決å®ãããŸããã
çŸåšãNomadãšConsulã¯QAã§äœ¿çšãããŠããŸãããå°æ¥çã«ã¯Kubernetesã«ç§»è¡ããå¿ èŠããããŸãã
ç¶ç¶çããªããªã®å®è£ ã«ã¯ã2幎åã«ç§»è¡ããDockerã³ã³ããã䜿çšãããŸãã è² è·ã®é«ããµãŒãã¹ïŒãã¹ã±ãããã«ã¿ãã°ãWebãµã€ãã泚æ管çã·ã¹ãã ïŒã®å ŽåããµãŒãã¹ã®ããã€ãã®è¿œå ã³ã³ããããã°ããããã¯ã¢ããã§ããããšãéèŠã§ãããããã©ãã«ã§ãã³ã³ããããããŸãã ãŸããDockerã¯æãäžè¬çãªã³ã³ãããŒåæ¹æ³ã®1ã€ã§ãããããã¬ãŒããŒäžã§ã®ãã®ååšã¯éåžžã«è«ççã§ãã
ãã«ããµãŒããŒããã³ç¶ç¶ççµ±åãšããŠBambooãå±éããJiraããã³BitbucketïŒæšæºã¹ã¿ãã¯ïŒãšçµã¿åãããŠäœ¿çšââããŸãã
ãžã§ã³ãã³ã¹ã¯ã¬ãŒããŒã§ãèšåãããŠããŸãã ç§ãã¡ã¯åœŒãè©ŠããŸãããã圌ãæ°ãããããžã§ã¯ãã«åŒããã蟌ã¿ãŸããã ããã¯åªããããŒã«ã§ããããã§ã«Bambooããããããã¹ã¿ãã¯ã«åãŸããŸããã
Bambooããã«ãŒã³ã³ãããŒã䜿çšããŠåéããããã®ã¯ãArtifactoryã®å¶åŸ¡äžã§ãªããžããªã«ä¿åãããŸãã
ããã»ã¹ç®¡çãšãã©ã³ã·ã³ã°
NGINX Plusã䜿çšããŸããããã®ã¡ããªãã¯ã¯ã¿ã¹ã¯ã«ååã§ã¯ãªãããããã©ã³ã¹ã®èŠ³ç¹ããã¯äœ¿çšããŸããã ããšãã°ãã©ã®ãªã¯ãšã¹ããæãé »ç¹ã«ã«ãŒãã£ã³ã°ããããããã³ã°ããããèšãããšã¯ã§ããŸããã ãããã£ãŠãHAProxyã䜿çšããŠè² è·ãåæ£ããŸãã ããã»ããµãšã¡ã¢ãªãããŒãããã«ãnginxãšé£æºããŠè¿ éãã€å¹ççã«åäœã§ããŸãã ããã«ãå¿ èŠãªã¡ããªãã¯ã¯ããã«äœ¿çšã§ããŸããHAproxyã¯ãããŒãããšãçŸåšã®æ¥ç¶æ°ããšã垯åå¹ ã®ããžãŒç¶æ ãªã©ã®çµ±èšã衚瀺ã§ããŸãã
UWSGIã¯ãåæPythonã¢ããªã±ãŒã·ã§ã³ãå®è¡ããããã«äœ¿çšãããŸãã PHP-fpmã¯ããã¹ãŠã®PHPãµãŒãã¹ã§ããã»ã¹ãããŒãžã£ãŒãšããŠäœ¿çšãããŸããã
ã¢ãã¿ãªã³ã°
Prometheusã䜿çšããŠãã¢ããªã±ãŒã·ã§ã³ãšãã¹ããã·ã³ïŒä»®æ³ãã·ã³ïŒããã¡ããªãã¯ãåéããã¢ããªã±ãŒã·ã§ã³ã®æç³»åããŒã¿ããŒã¹ãåéããŸãã ãã°ãåéããŸãããã®ããã«ãELKãšPrometheusã®äž¡æ¹ã«èšå®ãããIcingaã䜿çšããã¢ã©ãŒãã·ã¹ãã ãšããŠãELKã¹ã¿ãã¯ã䜿çšããŸãã 圌女ã¯ã¢ã©ãŒããã¡ãŒã«ãšSMSã«éä¿¡ããŸãã 6911ãµããŒããµãŒãã¹ãåãã¢ã©ãŒããåä¿¡ããå€åããŠãããšã³ãžãã¢ãåŒãä»ããããšã決å®ããŸãã
ããã¡ããŠã¹ã¯ã»ãŒãã¹ãŠã®å Žæã«é¢äžããŠããããã®ããã«ããããæ°è¡ã®ã³ãŒãã§ã¡ããªãã¯ããããžã§ã¯ãã«æ¥ç¶ã§ããããã«ãããã¹ãŠã®èšèªã®ã©ã€ãã©ãªããããŸãã ããšãã°ãPHPã®ã©ã€ãã©ãªã¯ãªãŒãã³ãœãŒã¹ã§å©çšå¯èœã§ã ïŒã
ç£èŠçµæãçŸããããã·ã¥ããŒãã®åœ¢ã§èŠèŠçã«è¡šç€ºããã«ã¯ãGrafanaã䜿çšããŸãã åºæ¬çã«ãPrometheusãããã¹ãŠã®ããã·ã¥ããŒããåéããŸãããä»ã®ã·ã¹ãã ããœãŒã¹ãšããŠæ©èœããå ŽåããããŸãã
ãã£ãããšèªåãšã©ãŒéçŽã®ããã«ãJiraãšçµ±åãããŠããSentryã䜿çšããŸããããã«ãããçç£äžã®åé¡ããšã«ã¿ã¹ã¯ãã©ãã«ãŒãç°¡åã«éå§ã§ããŸãã 圌ã¯ãšã©ãŒãããã¯ãã©ãã¯ãšè¿œå æ å ±ã§ãã£ããã£ããæ¹æ³ãç¥ã£ãŠããã®ã§ãããã¥ãŒããã®ã䟿å©ã§ãã
äœæããããã«ãªã¯ãšã¹ãã®ã³ãŒãã«é¢ããçµ±èšã¯ãSonarQubeã䜿çšããŠåéãããŸãã
ãã¬ãŒã ã¯ãŒã¯ãšããŒã«
Lamoda ITã€ã³ãã©ã¹ãã©ã¯ãã£ã®éçºäžã«ãã»ãŒ30çš®é¡ã®ç°ãªãããŒã«ã§å®éšãè¡ã£ãããããã®ã«ããŽãªã¯ã¬ãŒããŒã§æãã倧èŠæš¡ãã§ãã çŸåšãŸã§ãç©æ¥µçã«äœ¿çšãããŠããŸãïŒ
- Symfony 3.xãããã«æè¿ã§ã¯ãSymfony 4.x-PHPã§ã®éçºçšã
- Djangoããã³Pythonéçºçšã®Jinjaãã³ãã¬ãŒããšã³ãžã³ã ã¡ãªã¿ã«ãAnsibleã§ã®èšå®ã«ã¯Jinjaã䜿çšãããŸãã
- Flask-ïŒDjangoãšãšãã«ïŒå
éšãµãŒãã¹çšã§ãããæ¬çªç°å¢ã§ã¯ãã©ãã°ããŸããã
- Spring-Javaéçº;
- ããŒãã¹ãã©ãã-Webéçºã®ããŸããŸãªå
éšããŒã«ïŒç®¡çããã«ãèªå®¶è£œã®ããã·ã¥ããŒããªã©ïŒçšã
- jQuery-jséçºçšã
- OpenAPIïŒSwaggerïŒ-以äžãå«ããã¹ãŠã®APIãµãŒãã¹ã®ããã¥ã¡ã³ãçš äžèšã®Goã§ã®ã³ãŒãçæã«äœ¿çšãããŸãã
- Webpack-JSã®ããã±ãŒãžåãšCSSã®æå°åã
- Selenium-ããã³ããšã³ãã®ãã¹ãçšã
- WireMockãJMeterãAllureãªã©ããã¹ãã«äœ¿çšãããŠããŸãã
- Ansible-æ§æ管ççšã
- Kibana-ElasticSearchã§æ€çŽ¢çµæãèŠèŠåããŸãã
JavaScriptéçºã«ã€ããŠã¯å¥ã«è©±ãããããšæããŸãã ç§ãã¡ã¯ãå€ãã®äººãšåæ§ã«ãå®éšã®å šåéãæã£ãŠããŸãã JavaScriptã®ãµã€ãã¯ãèªå·±èšè¿°ãã¬ãŒã ã¯ãŒã¯ã䜿çšããŠããŸãã ããã³ããšã³ãã§ã¯ãããžãã¹ã«ãšã£ãŠéèŠã§ã¯ãªãã¿ã¹ã¯ã®ãã¬ãŒã ã¯ãŒã¯ã§ãAngularãReactJSãvue.jsãªã©ã®ããŸããŸãªãã¬ãŒã ã¯ãŒã¯ã§å®éšãè¡ãããŸããã ãã®ãè»æ¡ç«¶äºãã§ã¯ãããšããšã³ã³ãã³ãã¹ã¿ãžãªã®èªååã·ã¹ãã ã§äœ¿çšãããŠããvue.jsãå å°çã§ããããã«æãããçŸåšã§ã¯åŸã ã«ã©ãã«ã§ãç»å ŽããŠããŸãã
也ç¥æ®çç©äž
ãã®ãã¹ãŠã®å€æ§æ§ãç°¡åã«èª¬æããããšãããšãGOãPHPãJavaãJavaScriptã§èšè¿°ããPostgreSQLã§ããŒã¿ããŒã¹ãä¿æããDockerããã³Kubernetesã«ãããã€ããŸãã
ãã¡ãããèšèŒãããŠããæè¡ã¹ã¿ãã¯ã®ç¶æ ãæçµãšåŒã¶ããšã¯ã§ããŸããã ç§ãã¡ã¯çµ¶ããéçºãç¶ããŠãããè² è·ã®å¢å€§ã«äŒŽããé©åãªãœãªã¥ãŒã·ã§ã³ã®ã¯ã©ã¹ãå€æŽããå¿ èŠããããããèªäœãèå³æ·±ãã¿ã¹ã¯ã§ãã åæã«ãããžãã¹ããžãã¯ã¯ããè€éã«ãªã£ãŠãããããåžžã«æ°ããããŒã«ãæ¢ãå¿ èŠããããŸãã ä»ã®ããŒã«ã§ã¯ãªããã®ããŒã«ãéžãã çç±ã«ã€ããŠè°è«ãããå Žåã¯ãã³ã¡ã³ããæè¿ããŸãã