å é±ãç§ã¯ãšã«ããªã³ãã«ã¯ã§éå¬ããã DUMP IT ã«ã³ãã¡ã¬ã³ã¹ (https://dump-ekb.ru/) ã«è¡ã£ãŠããŸãããããã¯ãšã³ããš Devops ã®ã»ã¯ã·ã§ã³ã§äœãè°è«ããããããããŠå°åã® IT ã«ã³ãã¡ã¬ã³ã¹ã泚ç®ã«å€ãããã©ããã«ã€ããŠã話ããããšæããŸãã
Evil Martians ã® Nikolay Sverchkov ããµãŒããŒã¬ã¹ã«ã€ããŠèªã
ãã£ããäœããã£ãã®ã§ããããïŒ
ã«ã³ãã¡ã¬ã³ã¹ã«ã¯åèš 8 ã€ã®ã»ã¯ã·ã§ã³ããããŸãã: ããã¯ãšã³ããããã³ããšã³ããã¢ãã€ã«ããã¹ããš QAãDevopsããã¶ã€ã³ããµã€ãšã³ã¹ã管çã
ã¡ãªã¿ã«ãæ倧ã®ããŒã«ã¯ Science and Management ã«ãããŸã)) ããããæ倧 350 åãŸã§å容å¯èœã§ãã ããã¯ãšã³ããšããã³ããšã³ãã¯ããã»ã©å°ãããããŸããã Devops ã«ãŒã ã¯æãå°ããã§ãããã¢ã¯ãã£ãã§ããã
ç§ã¯ Devops ã»ã¯ã·ã§ã³ãšããã¯ãšã³ãã»ã¯ã·ã§ã³ã®ã¬ããŒããèããè¬æŒè ãšå°ã話ããŸããã ã«ã³ãã¡ã¬ã³ã¹ã§ã¯ãåãäžãããããããã¯ã«ã€ããŠè©±ãããããã®ã»ã¯ã·ã§ã³ã埩ç¿ããããšæããŸãã
SKB-KonturãDataArtãEvil Martiansããšã«ããªã³ãã«ã¯ Web ã¹ã¿ãžãª FlagãMiro (RealTimeBoard) ã®ä»£è¡šè ã Devops ã»ã¯ã·ã§ã³ãšããã¯ãšã³ã ã»ã¯ã·ã§ã³ã§è¬æŒããŸããã CI/CDããã¥ãŒ ãµãŒãã¹ã®æäœããã®ã³ã°ã«é¢ãããããã¯ãåãäžãããããµãŒããŒã¬ã¹ã®ãããã¯ãš Go ã§ã® PostgreSQL ã®æäœã詳ããåãäžããããŸããã
AvitoãTinkoffãYandexãJetstyleãMegafonãAk Bars Bank ã«ããã¬ããŒãããããŸããããç§ã«ã¯å®éã«åºåžããæéããããŸããã§ãã (ã¬ããŒãã®ãããªé²ç»ãšã¹ã©ã€ãã¯ãŸã å©çšã§ããŸããã2 é±é以å ã«æçš¿ãããšçŽæãããŠããŸã) dump-ekb.ru ã§ïŒã
Devops ã»ã¯ã·ã§ã³
é©ããã®ã¯ããã®éšã50åžã»ã©ã®æãå°ããªããŒã«ã§éå¬ãããããšã ã éè·¯ã«ç«ã€äººããããŸãã :) ç§ããªããšãèãããšãã§ããã¬ããŒãã«ã€ããŠã話ããŸãã
ãã¿ãã€ãã®ééãéã匟æ§äœ
ãã®ã»ã¯ã·ã§ã³ã¯ãKontur ã® Elasticsearch ã«é¢ãã Vladimir Lil (SKB-Kontur) ã«ããã¬ããŒãã§å§ãŸããŸããã ããªã倧èŠæš¡ã§è² è·ã®é«ã Elastic (ããŒã¿éã¯çŽ 800 TBãåé·æ§ãèæ ®ãããšçŽ 1.3 ãã¿ãã€ã) ããããŸãã ãã¹ãŠã® Kontur ãµãŒãã¹ã® Elasticsearch ã¯åäžã§ããã2 ã€ã®ã¯ã©ã¹ã¿ãŒ (ãµãŒã㌠7 å°ãš 9 å°) ã§æ§æãããŠãããéåžžã«éèŠã§ãããããKontur ã«ã¯ç¹å¥ãª Elasticsearch ãšã³ãžã㢠(å®éã«ã¯ Vladimir èªèº«) ãããŸãã
ãŠã©ãžããŒã«æ°ã¯ãŸããElasticsearch ã®å©ç¹ãšãããããããåé¡ã«ã€ããŠã®èããå ±æããŸããã
ã¡ãªããïŒ
- ãã¹ãŠã®ãã°ã¯ XNUMX ãæã«ãããç°¡åã«ã¢ã¯ã»ã¹ã§ããŸã
- XNUMX幎éã®ãã°ãä¿åããç°¡åã«åæã§ãã
- ãã°åŠçã®é«éå
- ããã«äœ¿ããåªããããŒã¿èŠèŠå
åé¡ç¹
- ã¡ãã»ãŒãž ãããŒã«ãŒã¯å¿ é ã§ã (Kontur ã®å Žåããã®åœ¹å²ã¯ Kafka ã«ãã£ãŠè¡ãããŸã)
- Elasticsearch Curator ã§ã®äœæ¥ã®ç¹åŸŽ (Curator ã®éåžžã®ã¿ã¹ã¯ããå®æçã«é«è² è·ãçºçããŸã)
- çµã¿èŸŒã¿ã®èªèšŒã¯ãããŸãã (å¥éãããªãé«é¡ãªè³éãå¿ èŠãªå ŽåããŸãã¯éçšã®æºåãããŸããŸãªçšåºŠã®ãªãŒãã³ãœãŒã¹ ãã©ã°ã€ã³ãšããŠã®ã¿)
Open Distro for Elasticsearch ã«ã€ããŠã¯è¯å®çãªã¬ãã¥ãŒãããããŸããã§ãã :) ããã§ã¯ãèªå¯ã«é¢ããåãåé¡ã解決ãããŸããã
ãã¿ãã€ãã¯ã©ãããæ¥ãã®ã§ãããã?å瀟ã®ããŒãã¯ã12*8 Tb SATA + 2*2 Tb SSD ãåãããµãŒããŒã§æ§æãããŠããŸãã SATA äžã®ã³ãŒã«ã ã¹ãã¬ãŒãžãããã ãã£ãã·ã¥ (ããã ã¹ãã¬ãŒãž) å°çšã® SSDã
7+9 ãµãŒããŒã(7 + 9) * 12 * 8 = 1536 Tbã
ã¹ããŒã¹ã®äžéšã¯ãåé·æ§ãªã©ã®ããã«ç¢ºä¿ãããŠããŸãã
KonturãElba ãªã©ã®ãã¹ãŠã®ã¬ããŒã ãµãŒãã¹ãå«ããçŽ 90 ã®ã¢ããªã±ãŒã·ã§ã³ããã®ãã°ã Elasticsearch ã«éä¿¡ãããŸãã
ãµãŒããŒã¬ã¹éçºã®ç¹åŸŽ
次ã¯ãDataArt ã® Ruslan Serkin ã«ãããµãŒããŒã¬ã¹ã«é¢ããã¬ããŒãã§ãã
Ruslan æ°ã¯ããµãŒããŒã¬ã¹ ã¢ãããŒãã«ããéçºãšã¯äžè¬çã«ã©ã®ãããªãã®ãªã®ãããŸããã®ç¹åŸŽã¯äœãªã®ãã«ã€ããŠè©±ããŸããã
ãµãŒããŒã¬ã¹ã¯ãéçºè ãã€ã³ãã©ã¹ãã©ã¯ãã£ã«äžå觊ããªãéçºã¢ãããŒãã§ãã äŸ - AWS Lambda ãµãŒããŒã¬ã¹ãKubeless.io (Kubernetes å ã®ãµãŒããŒã¬ã¹)ãGoogle Cloud Functionsã
çæ³çãªãµãŒããŒã¬ã¹ ã¢ããªã±ãŒã·ã§ã³ã¯ãç¹å¥ãª API ã²ãŒããŠã§ã€ãä»ããŠãµãŒããŒã¬ã¹ ãããã€ããŒã«ãªã¯ãšã¹ããéä¿¡ããåçŽãªæ©èœã§ãã çæ³çãªãã€ã¯ããµãŒãã¹ã§ãããšåæã«ãAWS Lambda ã¯å€æ°ã®ææ°ã®ããã°ã©ãã³ã°èšèªããµããŒãããŠããŸãã ã¯ã©ãŠããããã€ããŒã®å Žåãã€ã³ãã©ã¹ãã©ã¯ãã£ã®ç¶æãšå±éã®ã³ã¹ãã¯ãŒãã«ãªããå°èŠæš¡ãªã¢ããªã±ãŒã·ã§ã³ã®ãµããŒããéåžžã«å®äŸ¡ã«ãªããŸã (AWS Lambda - 0.2 äžã®åçŽãªãªã¯ãšã¹ãããã 1 ãã«)ã
ãã®ãããªã·ã¹ãã ã®ã¹ã±ãŒã©ããªãã£ã¯ã»ãŒçæ³çã§ããããã¯ã¯ã©ãŠã ãããã€ããŒãèªãåŠçããKubeless 㯠Kubernetes ã¯ã©ã¹ã¿ãŒå ã§èªåçã«ã¹ã±ãŒãªã³ã°ããŸãã
æ¬ ç¹ããããŸã:
- 倧èŠæš¡ãªã¢ããªã±ãŒã·ã§ã³ã®éçºã¯ãŸããŸãå°é£ã«ãªã£ãŠãã
- ã¢ããªã±ãŒã·ã§ã³ã®ãããã¡ã€ãªã³ã°ãé£ãã (ãã°ã«ã¢ã¯ã»ã¹ã§ããã ãã§ãéåžžã®æå³ã§ã®ãããã¡ã€ãªã³ã°ã¯ã§ããªã)
- ããŒãžã§ã³ç®¡çãªã
æ£çŽã«èšããšããµãŒããŒã¬ã¹ã«ã€ããŠã¯æ°å¹Žåã«ç¥ããŸããããããäœå¹ŽããµãŒããŒã¬ã¹ã®æ£ãã䜿çšæ¹æ³ãããããŸããã§ããã ã«ã¹ã©ã³ã®å ±åã®åŸãç解ãçŸããããã¯ãšã³ãã»ã¯ã·ã§ã³ã®ãã³ã©ã€ã»ã¹ãŽã§ã«ãã³ãïŒéªæªãªç«æ人ïŒã®å ±åã®åŸãããã¯çµ±åãããŸããã ã«ã³ãã¡ã¬ã³ã¹ã«è¡ã£ãã®ã¯ç¡é§ã§ã¯ãããŸããã§ãã:)
CI ã¯è²§ãã人ã ã®ããã®ãã®ã§ããããããšã Web ã¹ã¿ãžãªçšã«ç¬èªã® CI ãäœæãã䟡å€ããããŸãã?
ãšã«ããªã³ãã«ã¯åºèº«ã® Flag Web ã¹ã¿ãžãªã®è²¬ä»»è ãããã€ã«ã»ã©ãžãªããæ°ã¯ãèªäœã® CI/CD ã«ã€ããŠèªããŸããã
圌ã®ã¹ã¿ãžãªã¯ããæå CI/CDã(SSH çµç±ã§ãµãŒããŒã«ãã°ã€ã³ããgit pull ãå®è¡ãã100 æ¥ã« XNUMX åç¹°ãè¿ã) ãã Jenkins ã«ç§»è¡ããã³ãŒããç£èŠããŠãªãªãŒã¹ãå®è¡ã§ããããã«ãã Pullkins ãšåŒã°ããèªäœããŒã«ã«ç§»è¡ããŸããã ã
ãªããžã§ã³ãã³ã¹ã¯æ©èœããªãã£ãã®ã§ãããã? ããã©ã«ãã§ã¯ååãªæè»æ§ãæäŸããããã«ã¹ã¿ãã€ãºãéåžžã«å°é£ã§ããã
ãFlagãã¯LaravelïŒPHPãã¬ãŒã ã¯ãŒã¯ïŒã§éçºããŸãã CI/CD ãµãŒããŒãéçºãããšããMikhail ãšåœŒã®åå㯠Telescope ãš Envoy ãšåŒã°ãã Laravel ã®çµã¿èŸŒã¿ã¡ã«ããºã ã䜿çšããŸããã ãã®çµæãåä¿¡ãã Webhook ãªã¯ãšã¹ããåŠçããããã³ããšã³ããšããã¯ãšã³ããæ§ç¯ããç°ãªããµãŒããŒã«ãããã€ããSlack ã«ã¬ããŒãã§ãã PHP ãµãŒããŒãäœæãããŸã (泚)ã
ãã®åŸãBlue/Green ãããã€ãå®è¡ããdev-stage-prod ç°å¢ã§çµ±äžããèšå®ãè¡ããããã«ããããã«ãDocker ã«åãæ¿ããŸããã å©ç¹ã¯å€ãããŸããããç°å¢ã®åäžåãšã·ãŒã ã¬ã¹ãªãããã€ã¡ã³ãã®å¯èœæ§ãè¿œå ãããDocker ãæ£ããæäœããããã« Docker ãåŠç¿ããå¿ èŠæ§ãè¿œå ãããŸããã
ãµãŒã㌠ãªãªãŒã¹ã®ããŒã«ããã¯æ°ã 99% åæžããæ¹æ³
Devops ã»ã¯ã·ã§ã³ã®æåŸã®ã¬ããŒãã¯ãMiro.com (æ§ RealTimeBoard) ã®ãªãŒã Devops ãšã³ãžãã¢ã§ãã Viktor Eremchenko ã«ãããã®ã§ãã
Miro ããŒã ã®äž»å補åã§ãã RealTimeBoard ã¯ãã¢ããªã·ã㯠Java ã¢ããªã±ãŒã·ã§ã³ã«åºã¥ããŠããŸãã ããŠã³ã¿ã€ã ãªãã§ããŒã¿ãåéããã¹ããå±éããããšã¯å°é£ãªäœæ¥ã§ãã ãã®å ŽåãããŒã«ããã¯ããå¿ èŠããªãããã«ããã®ãããªããŒãžã§ã³ã®ã³ãŒãããããã€ããããšãéèŠã§ã (éãã¢ããªã¹ã§ã)ã
ãããå¯èœã«ããã·ã¹ãã ãæ§ç¯ããéäžã§ãMiro ã¯ãã¢ãŒããã¯ãã£ã䜿çšããããŒã« (Atlassian BambooãAnsible ãªã©)ãããŒã ã®æ§é ã«é¢ããäœæ¥ (çŸåšã¯å°ä»»ã® Devops ããŒã + ããŸããŸãªãããã¡ã€ã«ã®éçºè ãããªãå€ãã®åå¥ã®ã¹ã¯ã©ã ããŒã )ã
ãã®éã¯å°é£ã§éºãããã®ã§ããããšãå€æããŸãããããã¯ã¿ãŒã¯èç©ãããçã¿ãšãããã ãã§ã¯çµãããªã楜芳䞻矩ãå ±æããŸããã
質åãããæ¬ãåœãããŸãã
ããã¯ãšã³ãã»ã¯ã·ã§ã³
ç§ã¯ãªããšã 2 ã€ã®ã¬ããŒãã«åºåžããããšãã§ããŸããããã³ã©ã€ã»ã¹ãŽã§ã«ãã³ã (Evil Martians) ã«ãããµãŒããŒã¬ã¹ã«é¢ãããã®ãšãã°ãªãŽãªãŒã»ã³ã·ã§ã¬ã (Kontur 瀟) ã«ãããã¬ã¡ããªã«é¢ããã¬ããŒãã§ãã
ãã ã®äººéã®ããã®ãµãŒããŒã¬ã¹
Ruslan Sirkin ããµãŒããŒã¬ã¹ãšã¯ââäœãã«ã€ããŠè©±ããå ŽåãNikolay ã¯ãµãŒããŒã¬ã¹ã䜿çšããåçŽãªã¢ããªã±ãŒã·ã§ã³ã瀺ããAWS Lambda ã®ã¢ããªã±ãŒã·ã§ã³ã®ã³ã¹ããšé床ã«åœ±é¿ãäžãã詳现ã«ã€ããŠè©±ããŸããã
èå³æ·±ã詳现: æå°ææèŠçŽ 㯠128 MB ã®ã¡ã¢ãªãš 100 ããªç§ã® CPU ã§ãè²»çšã¯ 0,000000208 ãã«ã§ãã ããã«ããã®ãããªãªã¯ãšã¹ãã¯æ¯æ 1 äžä»¶ãŸã§ç¡æã§ãã
Nikolai ã®é¢æ°ã®äžéšã¯ 100 ããªç§ã®å¶éãè¶ ããããšããããã£ããã (ã¡ã€ã³ ã¢ããªã±ãŒã·ã§ã³ã¯ Ruby ã§æžãããŠããŸãã)ãGo ã§æžãçŽãããšã§å€§å¹ ãªç¯çŽãå®çŸããŸããã
Vostok Hercules â ãã¬ã¡ããªãåã³çŽ æŽããããã®ã«ããŸããã!
Grigory Koshelev (Kontur company) ã«ããããã¯ãšã³ã ã»ã¯ã·ã§ã³ã®ãã¬ã¡ããªã«é¢ããææ°ã¬ããŒãã ãã¬ã¡ããªãšã¯ããã°ãã¡ããªã¯ã¹ãã¢ããªã±ãŒã·ã§ã³ ãã¬ãŒã¹ãæå³ããŸãã
ãã®ç®çã®ããã«ãContour 㯠Github ã«æçš¿ãããèªäœã®ããŒã«ã䜿çšããŸãã ã¬ããŒãã®ããŒã« - Herculesã
Devops ã»ã¯ã·ã§ã³ã® Vladimir Lila ã®ã¬ããŒãã§ã¯ãElasticsearch ã§ã®ãã°ã®ä¿åãšåŠçã«ã€ããŠèª¬æãããŠããŸãããäœåãã®ããã€ã¹ãã¢ããªã±ãŒã·ã§ã³ãããã°ãé ä¿¡ãããšããã¿ã¹ã¯ã¯äŸç¶ãšããŠååšããŠãããVostok Hercules ã®ãããªããŒã«ããããã解決ããŸãã
ãã®åè·¯ã¯ãRabbitMQ ãã Apache Kafka ãŸã§ãå€ãã®äººã«ç¥ãããŠãããã¹ããã©ããŸãããããã¹ãŠãããã»ã©åçŽã§ããããã§ã¯ãããŸãã)) ZookeeperãCassandraãGraphite ãåè·¯ã«è¿œå ããå¿ èŠããããŸããã ãã®ã¬ããŒã (ç§ã®ãããã£ãŒã«ã§ã¯ãããŸãã) ã«é¢ããæ å ±ã¯å®å šã«ã¯å ¬éããŸãããããèå³ãããã°ãã«ã³ãã¡ã¬ã³ã¹ã® Web ãµã€ãã§ã¹ã©ã€ãããããªãå ¬éãããã®ããåŸ ã¡ãã ããã
ä»ã®ã«ã³ãã¡ã¬ã³ã¹ãšæ¯ã¹ãŠã©ãã§ããïŒ
ã¢ã¹ã¯ã¯ããµã³ã¯ãããã«ãã«ã¯ã§ã®ã«ã³ãã¡ã¬ã³ã¹ãšæ¯èŒããããšã¯ã§ããŸãããããŠã©ã«ã§ã®ä»ã®ã€ãã³ãããµãã©ã§ã®404ãã§ã¹ããšæ¯èŒããããšã¯ã§ããŸãã
DAMP 㯠8 ã€ã®ã»ã¯ã·ã§ã³ã§éå¬ãããããã¯ãŠã©ã«äŒè°ã®èšé²ã§ãã ç§åŠãšç®¡çã®ã»ã¯ã·ã§ã³ãéåžžã«å€§ããããããçããã§ãã ãšã«ããªã³ãã«ã¯ã®èŽè¡ã¯éåžžã«æ§é åãããŠããããã®éœåžã«ã¯ YandexãKonturãTinkoff ãªã©ã®å€§èŠæš¡ãªéçºéšéãããããããã¬ããŒãã«ãã®çè·¡ãæ®ããŠããŸãã
ãã 3 ã€ã®èå³æ·±ãç¹ã¯ãå€ãã®äŒæ¥ãäžåºŠã« 4 ïœ XNUMX 人ã®è¬æŒè ãã«ã³ãã¡ã¬ã³ã¹ã«æããŠããããšã§ã (ãã㯠KonturãEvil MartiansãTinkoff ã®å Žåã§ãã)ã ãããã®å€ãã¯ã¹ãã³ãµãŒã§ããããã¬ããŒãã¯ä»ã®ãã®ãšãŸã£ããåçã§ããããããã¯åºåã¬ããŒãã§ã¯ãããŸããã
è¡ãã¹ãããè¡ããªãã¹ããïŒ ããªãããŠã©ã«å±±èãŸãã¯ãã®è¿ãã«äœãã§ãããªããããªãã«ã¯æ©äŒãããããã®ãããã¯ã«èå³ããããŸã - ã¯ãããã¡ããã§ãã é·ææ
è¡ãèããŠããå Žåã¯ãéå»ã®ã¬ããŒãããããªã¬ããŒãã®ãããã¯ã¹ãåç
§ããŠãã ããã
å°æ¹ã§ã®ã«ã³ãã¡ã¬ã³ã¹ã®ãã XNUMX ã€ã®å©ç¹ã¯ãååãšããŠãå ±ååŸã®çºè¡šè
ãšã®ã³ãã¥ãã±ãŒã·ã§ã³ã容æã§ããããšã§ã (åçŽã«ããã®ãããªã³ãã¥ãã±ãŒã·ã§ã³ãžã®åå åžæè
ãå°ãªãã ãã§ã)ã
ãã³ããšãšã«ããªã³ãã«ã¯ã«æè¬ããŸãïŒ ïŒ
åºæïŒ habr.com