äžçã¯éæ¢ããŠããŸããã é²æ©ã¯æ°ããªæè¡ç課é¡ãçã¿åºããŸãã å€åããèŠä»¶ã«å¿ããŠãæ å ±ã·ã¹ãã ã®ã¢ãŒããã¯ãã£ãé²åããå¿ èŠããããŸãã ä»æ¥ã¯ãã€ãã³ãé§ååã¢ãŒããã¯ãã£ãåæå®è¡æ§ãåæå®è¡æ§ãéåææ§ããã㊠Erlang ã§ããããã¹ãŠãåé¡ãªã䜿çšããæ¹æ³ã«ã€ããŠèª¬æããŸãã
å°å ¥
èšèšãããã·ã¹ãã ã®èŠæš¡ãšãã®èŠä»¶ã«å¿ããŠãç§ãã¡éçºè ã¯ã·ã¹ãã å ã§æ å ±ã亀æããæ¹æ³ãéžæããŸãã ã»ãšãã©ã®å ŽåããµãŒãã¹ã®å¯Ÿè©±ãæŽçããã«ã¯ãRabbitMQ ã Kafka ãªã©ã«åºã¥ããããŒã«ãŒã䜿çšããã¹ããŒã ãæå¹ãªãªãã·ã§ã³ãšãªããŸãã ãã ããã€ãã³ãã®æµããSLAãã·ã¹ãã ã®å¶åŸ¡ã¬ãã«ã«ãã£ãŠã¯ãæ¢æã®ã¡ãã»ãŒãžã³ã°ãé©ããªãå ŽåããããŸãã ãã¡ãããZeroMQ ã nanomsg ã䜿çšãããªã©ããã©ã³ã¹ããŒãå±€ãšã¯ã©ã¹ã¿ãŒã®åœ¢æãæ åœããããšã§ãã·ã¹ãã ãå°ãè€éã«ããããšãã§ããŸãã ãã ããã·ã¹ãã ãæšæº Erlang ã¯ã©ã¹ã¿ãŒã®ååãªã¹ã«ãŒããããšæ©èœãåããŠããå Žåãè¿œå ã®ãšã³ãã£ãã£ãå°å ¥ããåé¡ã«ã¯è©³çŽ°ãªèª¿æ»ãšçµæžçæ£åœæ§ãå¿ èŠã§ãã
ãªã¢ã¯ãã£ãåæ£ã¢ããªã±ãŒã·ã§ã³ã®ãããã¯ã¯éåžžã«åºç¯å²ã«åã³ãŸãã èšäºã®åœ¢åŒãç¶æããããã«ãä»æ¥ã®è°è«ã®äž»é¡ã¯ Erlang/Elixir äžã«æ§ç¯ãããåçš®ã®ç°å¢ã®ã¿ã§ãã Erlang/OTP ãšã³ã·ã¹ãã ã䜿çšãããšãæå°éã®åŽåã§ãªã¢ã¯ãã£ã ã¢ãŒããã¯ãã£ãå®è£ ã§ããŸãã ãããããããã®å Žåã§ããã¡ãã»ãŒãžã³ã°å±€ãå¿ èŠã«ãªããŸãã
çè«çæ ¹æ
èšèšã¯ãç®æšãšå¶çŽãå®çŸ©ããããšããå§ãŸããŸãã äž»ãªç®æšã¯ãéçºã®ããã®éçºé åã§ã¯ãããŸããã ç§ãã¡ã¯ãããŸããŸãªã¬ãã«ã®ææ°ã®ã¢ããªã±ãŒã·ã§ã³ãäœæããããŠæãéèŠãªããšã«éçºã§ãããå®å šã§ã¹ã±ãŒã©ãã«ãªããŒã«ãå ¥æããå¿ èŠããããŸããå°èŠæš¡ãªãŠãŒã¶ãŒã«ãµãŒãã¹ãæäŸããåäžãµãŒããŒã®ã¢ããªã±ãŒã·ã§ã³ããå§ããŠãåŸã«æ倧 50 ã®ã¯ã©ã¹ã¿ãŒã«çºå±ãããããšãã§ããŸãã -60 ããŒããã¯ã©ã¹ã¿ãŒ ãã§ãã¬ãŒã·ã§ã³ã§çµäºã ãããã£ãŠãäž»ãªç®æšã¯ãæçµã·ã¹ãã ã®éçºã³ã¹ããšææã³ã¹ããåæžããŠå©çãæ倧åããããšã§ãã
æçµçãªã·ã¹ãã ã® 4 ã€ã®äž»ãªèŠä»¶ã匷調ããŸãããã
- Сã€ãã³ãæåã
ã·ã¹ãã ã¯åžžã«ã€ãã³ãã®ãããŒãééããå¿ èŠãªã¢ã¯ã·ã§ã³ãå®è¡ããæºåãã§ããŠããŸãã - Ðã¹ã±ãŒã©ããªãã£ã
åã ã®ãããã¯ã¯åçŽæ¹åãšæ°Žå¹³æ¹åã®äž¡æ¹ã«ã¹ã±ãŒãªã³ã°ã§ããŸãã ã·ã¹ãã å šäœãç¡éã«æ°Žå¹³æ¹åã«æé·ã§ããå¿ èŠããããŸãã - Ðèé害æ§ã
ãã¹ãŠã®ã¬ãã«ãšãã¹ãŠã®ãµãŒãã¹ã¯ãé害ããèªåçã«å埩ã§ããå¿ èŠããããŸãã - Ðä¿èšŒãããå¿çæéã
æéã¯è²Žéãªã®ã§ããŠãŒã¶ãŒã¯ããŸãé·ãåŸ ã¡ãããŠã¯ãããŸããã
ãã§ããå°ããªãšã³ãžã³ãã«ã€ããŠã®å€ãããšã話ãèŠããŠããŸãã? èšèšãããã·ã¹ãã ããããã¿ã€ã段éãæ£åžžã«çµäºããé²æ©ããããã«ã¯ããã®åºç€ãæå°èŠä»¶ãæºãããŠããå¿ èŠããããŸãã ã¹ã¢ãã°.
ã€ã³ãã©ã¹ãã©ã¯ã㣠ããŒã«ããã³ãã¹ãŠã®ãµãŒãã¹ã®åºç€ãšããŠã®ã¡ãã»ãŒãžã³ã°ã«ã¯ãããã°ã©ãã«ãšã£ãŠã®äœ¿ãããããšãããã XNUMX ã€ã®ãã€ã³ããè¿œå ãããŸãã
ã€ãã³ãæå
ã¢ããªã±ãŒã·ã§ã³ãåäžãµãŒããŒããã¯ã©ã¹ã¿ãŒã«æé·ããã«ã¯ããã®ã¢ãŒããã¯ãã£ãççµåããµããŒãããŠããå¿ èŠããããŸãã éåæã¢ãã«ã¯ãã®èŠä»¶ãæºãããŸãã ãã®å Žåãéä¿¡è ãšåä¿¡è ã¯ã¡ãã»ãŒãžã®æ å ±è² è·ã«æ°ãé ããã·ã¹ãã å ã®éä¿¡ãã«ãŒãã£ã³ã°ã«ã€ããŠã¯å¿é ããŸããã
ã¹ã±ãŒã©ããªãã£
ã¹ã±ãŒã©ããªãã£ãšã·ã¹ãã å¹çã¯é£ãåããã§ãã ã¢ããªã±ãŒã·ã§ã³ ã³ã³ããŒãã³ãã¯ãå©çšå¯èœãªãã¹ãŠã®ãªãœãŒã¹ãå©çšã§ããå¿ èŠããããŸãã 容éãããå¹ççã«å©çšã§ããåŠçæ¹æ³ãããæé©åãããã»ã©ãèšåã«è²»ããè²»çšãåæžãããŸãã
Erlang ã¯åäžãã·ã³å
ã§ç«¶äºã®æ¿ããç°å¢ãäœãåºããŸãã åæå®è¡æ§ãšäžŠåæ§ã®ãã©ã³ã¹ã¯ãErlang VM ã§äœ¿çšã§ãããªãã¬ãŒãã£ã³ã° ã·ã¹ãã ã¹ã¬ããã®æ°ãšããããã®ã¹ã¬ãããå©çšããã¹ã±ãžã¥ãŒã©ã®æ°ãéžæããããšã§èšå®ã§ããŸãã
Erlang ããã»ã¹ã¯ç¶æ
ãå
±æããããã³ããããã³ã° ã¢ãŒãã§åäœããŸãã ããã«ãããåŸæ¥ã®ããããã³ã°ããŒã¹ã®ã¢ããªã±ãŒã·ã§ã³ã«æ¯ã¹ãŠãæ¯èŒçäœãã¬ã€ãã³ã·ãšé«ãã¹ã«ãŒããããå®çŸããŸãã Erlang ã®ã¹ã±ãžã¥ãŒã©ã¯ CPU ãš IO ã®å
¬å¹³ãªå²ãåœãŠãä¿èšŒããããããã³ã°ããªããããã¢ããªã±ãŒã·ã§ã³ã¯ããŒã¯è² è·ãé害æã§ãå¿çã§ããŸãã
ã¯ã©ã¹ã¿ãŒã¬ãã«ã§ã¯ãå»æ£ã®åé¡ãååšããŸãã ã¯ã©ã¹ã¿ãŒå
ã®ãã¹ãŠã®ãã·ã³ã«åçãªè² è·ããããããããã¯ãŒã¯ãéè² è·ã«ãªããªãããšãéèŠã§ãã ç¶æ³ãæ³åããŠã¿ãŸãããããŠãŒã¶ãŒ ãã©ãã£ãã¯ã¯åä¿¡ãã©ã³ãµãŒ (haproxyãnginx ãªã©) ã«å°éããå©çšå¯èœãªããã¯ãšã³ãã®ã»ããéã§åŠçãªã¯ãšã¹ããå¯èœãªéãåçã«åæ£ããŸãã ã¢ããªã±ãŒã·ã§ã³ ã€ã³ãã©ã¹ãã©ã¯ãã£å
ã§ã¯ãå¿
èŠãªã€ã³ã¿ãŒãã§ã€ã¹ãå®è£
ãããµãŒãã¹ã¯æåŸã®ãã€ã«ã«ããããæåã®ãªã¯ãšã¹ãã«å¿çããããã«ä»ã®å€ãã®ãµãŒãã¹ããªã¯ãšã¹ãããå¿
èŠããããŸãã å
éšãªã¯ãšã¹ãã«ã¯ã«ãŒãã£ã³ã°ãšãã©ã³ã·ã³ã°ãå¿
èŠã§ãã
ããŒã¿ ãããŒãå¹æçã«ç®¡çããã«ã¯ãã¡ãã»ãŒãžã³ã°ãã«ãŒãã£ã³ã°ãšè² è·åæ£ã管çããã€ã³ã¿ãŒãã§ã€ã¹ãéçºè
ã«æäŸããå¿
èŠããããŸãã ãã®ãããã§ãéçºè
ã¯ãã€ã¯ããµãŒãã¹ ãã¿ãŒã³ (ã¢ã°ãªã²ãŒã¿ãŒããããã·ããã§ãŒã³ããã©ã³ããªã©) ã䜿çšããŠãæšæºçãªåé¡ãšãã£ãã«çºçããªãåé¡ã®äž¡æ¹ã解決ã§ããããã«ãªããŸãã
ããžãã¹ã®èŠ³ç¹ããèŠããšãã¹ã±ãŒã©ããªãã£ã¯ãªã¹ã¯ç®¡çããŒã«ã® XNUMX ã€ã§ãã äž»ãªããšã¯ãæ©åšãæé©ã«äœ¿çšããŠé¡§å®¢ã®èŠæ±ãæºããããšã§ãã
- é²åã«ããè£ åã®åšåãäžæããå Žåã ãœãããŠã§ã¢ãäžå®å šãªããã«ã¢ã€ãã«ç¶æ ã«ãªãããšã¯ãããŸããã Erlang ã¯åçŽæ¹åã«é©åã«æ¡åŒµã§ããåžžã«ãã¹ãŠã® CPU ã³ã¢ãšå©çšå¯èœãªã¡ã¢ãªãå©çšã§ããŸãã
- ã¯ã©ãŠãç°å¢ã§ã¯ãçŸåšãŸãã¯äºæž¬ãããè² è·ã«å¿ããŠæ©åšã®å°æ°ã管çããSLAãä¿èšŒããŸãã
èé害æ§
ã倱æã¯èš±ãããªãããšã倱æã¯å¿ ãããããšãã XNUMX ã€ã®å ¬çãèããŠã¿ãŸãããã ããžãã¹ã«ãšã£ãŠããœãããŠã§ã¢ã®é害ã¯ééã®æ倱ãããã«æªãããšã«è©å€ã®æ倱ãæå³ããŸãã èµ·ããåŸãæ倱ãšãã©ãŒã«ã ãã¬ã©ã³ã ãœãããŠã§ã¢ã®éçºã³ã¹ããšã®ãã©ã³ã¹ãèæ ®ãããšã劥åç¹ãèŠã€ããããšããããããŸãã
çæçã«ã¯ããã©ãŒã«ã ãã¬ã©ã³ã¹ãçµã¿èŸŒãã ã¢ãŒããã¯ãã£ã«ãããæ¢è£œã®ã¯ã©ã¹ã¿ãªã³ã° ãœãªã¥ãŒã·ã§ã³ã賌å
¥ããã³ã¹ããç¯çŽãããŸãã é«äŸ¡ã§ããããã°ããããŸãã
é·æçã«ã¯ããã©ãŒã«ã ãã¬ã©ã³ã ã¢ãŒããã¯ãã£ã¯ãéçºã®ãã¹ãŠã®æ®µéã§äœåãã®å©çããããããŸãã
ã³ãŒã ããŒã¹å
ã®ã¡ãã»ãŒãžã³ã°ã«ãããéçºæ®µéã§ã·ã¹ãã å
ã®ã³ã³ããŒãã³ãã®çžäºäœçšã詳现ã«æ€èšã§ããŸãã ããã«ããããã¹ãŠã®éèŠãªã³ã³ããŒãã³ããé害ãåŠçããçµæãšããŠçããã·ã¹ãã ã¯é害åŸã«èªåçã«æ£åžžã«æ»ãæ¹æ³ãèšèšäžèªèããŠãããããé害ãžã®å¯Ÿå¿ãšç®¡çã®ã¿ã¹ã¯ãç°¡çŽ åãããŸãã
å¿çæ§
é害ã«é¢ä¿ãªããã¢ããªã±ãŒã·ã§ã³ã¯ãªã¯ãšã¹ãã«å¿çããSLA ãæºããå¿
èŠããããŸãã çŸå®ã«ã¯ã人ã
ã¯åŸ
ã¡ãããªãã®ã§ãäŒæ¥ã¯ããã«å¿ããŠé©å¿ããå¿
èŠããããŸãã å¿çæ§ã®é«ãã¢ããªã±ãŒã·ã§ã³ããŸããŸãå¢å ãããšäºæ³ãããŸãã
å¿çæ§ã®é«ãã¢ããªã±ãŒã·ã§ã³ã¯ãã»ãŒãªã¢ã«ã¿ã€ã ã§åäœããŸãã Erlang VM ã¯ãœãã ãªã¢ã«ã¿ã€ã ã¢ãŒãã§åäœããŸãã æ ªåŒååŒãå»çãç£æ¥æ©åšå¶åŸ¡ãªã©ã®äžéšã®åéã§ã¯ãããŒã ãªã¢ã«ã¿ã€ã ã¢ãŒããéèŠã§ãã
ã¬ã¹ãã³ã·ã ã·ã¹ãã 㯠UX ãåäžãããããžãã¹ã«å©çããããããŸãã
äºåçµæ
ãã®èšäºãèšç»ããã«ããããã¡ãã»ãŒãžã³ã° ãããŒã«ãŒãäœæããããã«åºã¥ããŠè€éãªã·ã¹ãã ãæ§ç¯ããç§ã®çµéšãå
±æããããšæããŸããã ããããçè«çããã³åæ©ä»ãã®éšåã¯éåžžã«åºç¯å²ã«ãããããšãå€æããŸããã
èšäºã®åŸåã§ã¯ã亀æãã€ã³ãã®å®è£
ã®åŸ®åŠãªéããã¡ãã»ãŒãžã³ã° ãã¿ãŒã³ãããã³ãã®å¿çšã«ã€ããŠèª¬æããŸãã
XNUMX çªç®ã®éšåã§ã¯ããµãŒãã¹ã®ç·šæãã«ãŒãã£ã³ã°ããã©ã³ã¹ã«é¢ããäžè¬çãªåé¡ã«ã€ããŠæ€èšããŸãã ã·ã¹ãã ã®ã¹ã±ãŒã©ããªãã£ãšèé害æ§ã®å®éçãªåŽé¢ã«ã€ããŠè©±ããŸãããã
æåã®éšåã®çµãã
ãã©ã
åºæïŒ habr.com