ããã«ã¡ã¯ïŒ ç§ãã¡ã¯ããã¹ãã£ã³ã°ãã¯ãããžãŒãºãã§ããã5幎åã«èšç«ãããŸãã
ISPsystem ã®ãœãããŠã§ã¢ã¯ãã¯ãŒã«ãªãµãŒãã¹ãå®çŸããããã«ç§ãã¡ã®æãçžãããŒãã§ããããšãå€æããŸããã XNUMX 幎åãç§ãã¡ã¯ Billmanager è«æ±ãš VMmanager ãµãŒã㌠ã³ã³ãããŒã« ããã«ã䜿çšããŸããããç¬èªã®ã³ã³ãããŒã« ããã«ãªãã§ã¯åªãããµãŒãã¹ãæäŸããããšã¯ã»ãŒäžå¯èœã§ããããšã«ããã«æ°ã¥ããŸããã
ISP ã·ã¹ãã ãããã«å©äŸ¿æ§ã殺ããã®ã
ãã°
ç§ãã¡èªèº«ã§ãã°ãä¿®æ£ããããšã¯ã§ããŸããã§ããããã®ãã³ã«ãä»ã®äººã®ãµããŒãã«é£çµ¡ããŠåŸ ããªããã°ãªããŸããã§ããã åé¡ã解決ããã«ã¯ããµãŒãããŒãã£äŒæ¥ã®å¯Ÿå¿ãå¿ èŠã§ããã
ISP ã·ã¹ãã ã®ãµããŒãã¯æ£åžžã«å¿çããŸããããä¿®æ£ã¯æ°åã®ãªãªãŒã¹åŸã«ã®ã¿æäŸããããã®åŸã¯åžžã«ããã¹ãŠã§ã¯ãããŸããã§ããã å Žåã«ãã£ãŠã¯ãé倧ãªãã°ãæ°é±éä¿®æ£ãããããšããããŸããã ç§ãã¡ã¯é¡§å®¢ãå®å¿ãããè¬çœªããISP ã·ã¹ãã ããã°ãä¿®æ£ããã®ãåŸ ã€å¿ èŠããããŸããã
ããŠã³ã¿ã€ã ã®è åš
ã¢ããããŒãã«ããäºæãã¬ããŠã³ã¿ã€ã ãçºçããæ°ããªãšã©ãŒãçºçããå¯èœæ§ããããŸãã
åã¢ããããŒãã¯å®ããã§ãããç§ã¯è«æ±ãé èœããã¢ããããŒãã®ç¥ã«ç ç²ãæããªããã°ãªããŸããã§ãããäœåºŠãã¢ããããŒãã«ãã 10 ïœ 15 åã®ããŠã³ã¿ã€ã ãçºçããŸããã ãã®æç¹ã§ã¯ã管çè ã¯é芳ããŠããŸãããããŠã³ã¿ã€ã ãã©ããããç¶ããã¯ããããŸããããISPsystem ããã€æ°ããã¢ããããŒãããªãªãŒã¹ããããäºæž¬ããããšãã§ããŸããã§ããã
第 XNUMX äžä»£ã§ã¯ãBillmanager ã¯æ¹åãããŸããããå¿ èŠãªæ©èœã«ã¢ã¯ã»ã¹ããã«ã¯ãããŒã¿çãã€ã³ã¹ããŒã«ããå¿ èŠããããŸãããããŒã¿çã¯ãã§ã«æ¯é±æŽæ°ãããŠããŸããã äœããå£ããå Žåã¯ãä»ã®éçºè ãäœããä¿®æ£ã§ããããã«ã¢ã¯ã»ã¹ãèš±å¯ããå¿ èŠããããŸããã
ããã«ã€ã³ã¿ãŒãã§ãŒã¹ãäžäŸ¿
ãã¹ãŠãç°ãªãããã«ã«åå²ãããç°ãªãå Žæããå¶åŸ¡ãããŸããã ããšãã°ãã¯ã©ã€ã¢ã³ã㯠Billmanager ãéããŠæ¯æããè¡ããããVMManager 㧠VDS ãåèµ·åãŸãã¯åã€ã³ã¹ããŒã«ããå¿ èŠããããŸããã ãŸããåœç€Ÿã®ã¹ã¿ããã¯ãã¯ã©ã€ã¢ã³ãããµããŒããããããµãŒããŒã®è² è·ã確èªãããã䜿çšããŠãã OS ã確èªãããããããã«ããŠã£ã³ããŠãåãæ¿ããªããã°ãªããŸããã§ããã
ãã®ãããªã€ã³ã¿ãŒãã§ã€ã¹ã«ã¯ãç§ãã¡ã«ãšã£ãŠãã¯ã©ã€ã¢ã³ãã«ãšã£ãŠãæéãããããŸãã ãã®ãããªç¶æ³ã§ã¯ãDigitalOcean ã®ãããªå©äŸ¿æ§ãååšããããšã«çåã®äœå°ã¯ãããŸããã
é »ç¹ãª API ã¢ããããŒãã«ããçãã©ã€ããµã€ã¯ã«
ç§ãã¡ã¯ç¬èªã®ãã©ã°ã€ã³ãäœæããŸãããããšãã°ãVMManager ã«ã¯ãªãè¿œå ã®æ¯æãæ¹æ³ãåãããã©ã°ã€ã³ã§ãã
è¿å¹ŽãVMManager ã®ã©ã€ããµã€ã¯ã«ã¯æ¯èŒççããæ°ããããŒãžã§ã³ã§ã¯ API å ã®å€æ°ãŸãã¯é¢æ°ã®ååãä»»æã«å€æŽãããå¯èœæ§ããããããã«ãããã©ã°ã€ã³ãæ©èœããªããªã£ãŠããŸããŸããã å€ãããŒãžã§ã³ã®ãµããŒãã¯ããã«æ®µéçã«å»æ¢ãããæŽæ°ããå¿ èŠããããŸããã
å€æŽã§ããŸãã
ããæ£ç¢ºã«èšãã°ãããã¯å¯èœã§ãããéåžžã«éå¹ççã§ãã ã©ã€ã»ã³ã¹å¶éã«ããããœãŒã¹ ã³ãŒããå€æŽããããšã¯ã§ããããã©ã°ã€ã³ã®ã¿ãäœæã§ããŸãã æ倧ãã©ã°ã€ã³ - äžéšã®ã¡ãã¥ãŒé ç®ãã¹ããããã€ã¹ãããã®ãŠã£ã¶ãŒãã ISP ã·ã¹ãã ã¯å€çšéæ§ãèæ ®ããŠèšèšãããŠããŸãããç¹æ®ãªãœãªã¥ãŒã·ã§ã³ãå¿ èŠã§ããã
ããã§ãèªåã§ããã«ãæžããšãã決æãçããŸããã ç§ãã¡ã¯æ¬¡ã®ç®æšãèšå®ããŸããã
- ãšã©ãŒããã°ã«è¿ éã«å¯Ÿå¿ããã¯ã©ã€ã¢ã³ããåŸ ãããããšãªãèªåã§ä¿®æ£ã§ããããã«ããŸãã
- ã¯ãŒã¯ãããŒãã¯ã©ã€ã¢ã³ãã®ããŒãºã«åãããŠã€ã³ã¿ãŒãã§ã€ã¹ãèªç±ã«å€æŽã§ããŸãã
- ãã£ãããšãããããããããã¶ã€ã³ã§äœ¿ãããããåäžãããŸãã
ãããŠéçºãéå§ããŸããã
æ°ããããã«ã¢ãŒããã¯ãã£
ç§ãã¡ã¯èªçµŠèªè¶³ã®éçºããŒã ãæã£ãŠããã®ã§ãããã«ãèªåãã¡ã§æžããŸããã
äž»ãªäœæ¥ã¯ XNUMX 人ã®ãšã³ãžãã¢ã«ãã£ãŠè¡ãããŸããããã¯ãã«ã« ãã£ã¬ã¯ã¿ãŒã® Sergey ãã¢ãŒããã¯ãã£ãèãåºããŠãµãŒã㌠ãšãŒãžã§ã³ããäœæããAlexey ãè«æ±ãè¡ããããã³ããšã³ãã¯ããã³ããšã³ã㌠Artysh ã«ãã£ãŠçµã¿ç«ãŠãããŸããã
ã¹ããã 1: ãµãŒããŒãšãŒãžã§ã³ã
ãµãŒã㌠ãšãŒãžã§ã³ãã¯ãã©ã€ãã©ãªã管çãã Python Web ãµãŒããŒã§ãã
ãšãŒãžã§ã³ãã¯ãlibvirt ã©ã€ãã©ãªãä»ããŠãµãŒããŒäžã®ãã¹ãŠã®ãµãŒãã¹ (vds ã®äœæãåæ¢ãåé€ããªãã¬ãŒãã£ã³ã° ã·ã¹ãã ã®ã€ã³ã¹ããŒã«ããã©ã¡ãŒã¿ãŒã®å€æŽãªã©) ã管çããŸãã èšäºã®å ¬éæç¹ã§ã¯ãããã㯠XNUMX 以äžã®ç°ãªãæ©èœã§ãããã¿ã¹ã¯ãã¯ã©ã€ã¢ã³ãã®ããŒãºã«å¿ããŠè£å®ãããŸãã
çè«äžãlibvirt ã¯èª²éããçŽæ¥å¶åŸ¡ã§ããŸãããããã«ã¯è¿œå ã³ãŒããå€ãããããããããã®æ©èœããšãŒãžã§ã³ããšèª²éã®éã§åé¢ããããšã«ããŸããã課éã¯åã« JSON API çµç±ã§ãšãŒãžã§ã³ãã«ãªã¯ãšã¹ããè¡ãã ãã§ãã
ãšãŒãžã§ã³ãã¯ã€ã³ã¿ãŒãã§ã€ã¹ãå¿ èŠãšããããµãŒã㌠ã³ã³ãœãŒã«ããçŽæ¥ãã¹ãã§ãããããæåã«å®è¡ããŸããã
ãµãŒããŒãšãŒãžã§ã³ãããåŸããããã®: ãã¹ãŠã®äººã®ç掻ãç°¡çŽ åããã¬ã€ã€ãŒãç»å ŽããŸãããè«æ±ã§ã¯å€§éã®ã³ãã³ããéä¿¡ããå¿ èŠã¯ãªãããªã¯ãšã¹ããè¡ãã ãã§æžã¿ãŸãã ãããŠããšãŒãžã§ã³ãã¯å¿ èŠãªããšããã¹ãŠå®è¡ããŸããããšãã°ããã£ã¹ã¯é åã RAM ãå²ãåœãŠãŸãã
ã¹ããã 2. è«æ±
éçºè ã® Alex ã«ãšã£ãŠãããã¯åããŠã®ã³ã³ãããŒã« ããã«ã§ã¯ãããŸããã§ãããAlex ã¯é·ãéãã¹ãã£ã³ã°ã«æºãã£ãŠãããããã¯ã©ã€ã¢ã³ããäœãå¿ èŠãšãããã¹ãã£ã³ã°è ãäœãå¿ èŠãšããŠããã®ãã倧äœç解ããŠããŸããã
ç§ãã¡ã¯ãè«æ±æžã®ããšããã³ã³ãããŒã« ããã«ããšåŒãã§ããŸããããã«ã¯ããéããµãŒãã¹ã ãã§ãªãããã®ç®¡çã顧客ãµããŒããªã©ãå«ãŸããŠããŸãã
ISPSystem ãœãããŠã§ã¢ããåãæ¿ããã«ã¯ã顧客åãã«ä»¥åã®æ©èœãå®å šã«ä¿æãããŠãŒã¶ãŒã®ãã¹ãŠã®è²¡åè¡çºãšããŠãŒã¶ãŒéã®ãã¹ãŠã®ãµãŒãã¹ãšæ¥ç¶ãå€ãè«æ±ããæ°ããè«æ±ã«ç§»è¡ããå¿ èŠããããŸããã ç§ãã¡ã¯çŸåšã®è£œåã®å 容ã調æ»ãã次ã«ç«¶åä»ç€Ÿ (䞻㫠DO ãš Vultr) ã®ãœãªã¥ãŒã·ã§ã³ã調æ»ããŸããã ç§ãã¡ã¯æ¬ ç¹ãšå©ç¹ãæ€èšããISPsystem ã®å€ã補åã䜿çšãã人ã ããã®ãã£ãŒãããã¯ãåéããŸããã
æ°ããè«æ±ã§ã¯ãåŸæ¥ã® PHPãMySQL (å°æ¥çã«ã¯ PostgreSQL ã«åãæ¿ããäºå®)ãããã¯ãšã³ãã®ãã¬ãŒã ã¯ãŒã¯ãšã㊠Yii2ãããã³ãã® VueJS ãšãã XNUMX ã€ã®ã¹ã¿ãã¯ã䜿çšãããŸããã ã¹ã¿ãã¯ã¯äºãã«ç¬ç«ããŠåäœããããŸããŸãªäººã
ã«ãã£ãŠéçºãããJSON API ã䜿çšããŠéä¿¡ããŸãã åœæãçŸåšãéçºã«äœ¿çšããŠããŸã
ãã®ããã«ã¯ãæ¯æãã·ã¹ãã ã¢ãžã¥ãŒã«ããã¡ã€ã³ ã¬ãžã¹ãã© ã¢ãžã¥ãŒã«ããŸã㯠SSL 蚌ææžã¢ãžã¥ãŒã«ãªã©ã®ã¢ãžã¥ãŒã« ããŒã¹ã§èšèšãããŠããŸãã æ°ããæ©èœãç°¡åã«è¿œå ããããå€ãæ©èœãåé€ãããã§ããŸãã æ¡åŒµã®åºç€ã¯ãéã®æ¹åãã€ãŸããããŒããŠã§ã¢ã«åããŠããå«ããŠãã¢ãŒããã¯ãã£çã«æ§ç¯ãããŸãã
ç§ãã¡ãåŸããã®ã¯äœã§ãã: ç§ãã¡ãå®å
šã«å¶åŸ¡ã§ããã³ã³ãããŒã« ããã«ã çŸåšã§ã¯ããã°ã¯æ°é±éã§ã¯ãªãæ°æéã§ä¿®æ£ãããæ°æ©èœã¯ ISPSystem ã®èŠæ±ã§ã¯ãªã顧客ã®èŠæ±ã«å¿ããŠå®è£
ãããŸãã
ã¹ããã 3 ã€ã³ã¿ãŒãã§ãŒã¹
ã€ã³ã¿ãŒãã§ãŒã¹ã¯ç§ãã¡ã®ããŒã ã®çºæ¡ã§ãã
ãŸããã€ã³ã¿ãŒãã§ãŒã¹ãæ ¹æ¬çã«å€æŽããã«ãISPsystem API äžã§ã¢ããªã³ãäœæããå Žåã«äœãèµ·ããããæ€èšããŸããã çµæã¯ãŸããŸãã ã£ãã®ã§ããã¹ãŠãæåããè¡ãããšã«ããŸããã
ç§ãã¡ã¯ãã¯ãªãŒã³ã§ãããã«ãªãã¶ã€ã³ã§ã€ã³ã¿ãŒãã§ã€ã¹ãè«ççã«ããããšãéèŠã§ãããããããã°çŸããããã«ãåŸããããšä¿¡ããŠããŸããã èŠçŽ ã®é 眮ã«ã€ããŠã¯ Megaplan ã§è°è«ãããçŸåšãŠãŒã¶ãŒãã³ã³ãããŒã« ããã«ã§èŠãã€ã³ã¿ãŒãã§ã€ã¹ãåŸã ã«èªçããŸãã
ãã§ã« ISPsystem çšã®æ¯æããã©ã°ã€ã³ãäœæããŠãããããè«æ±ããŒãžã®ãã¶ã€ã³ãæåã«ç»å ŽããŸããã
ããã³ããšã³ã
圌ãã¯ãããã«ã SPA ã¢ããªã±ãŒã·ã§ã³ã«ããããšã決å®ããŸãããããã¯ããªãœãŒã¹ãããŸãèŠæ±ãããããŒã¿ãé«éã«èªã¿èŸŒãããšãã§ããŸãã ç§ãã¡ã®ããã³ããšã³ã㌠Artysh ã¯ãVue ã§ãããæžãããšã«æ±ºããŸãããåœæãVue ã¯ã¡ããã©ç»å Žããã°ããã§ããã ç§ãã¡ã¯ããã®ãã¬ãŒã ã¯ãŒã¯ã¯ React ã®ããã«åçã«çºå±ãããã°ãããããš Vue ã³ãã¥ããã£ãæé·ããã©ã€ãã©ãªã®æµ·ãçŸããã ãããšæ³å®ããŠããŸããã ç§ãã¡ã¯ Vue ã«è³ããŸããããåŸæããŸããã§ãããããã¯ãšã³ãã§ãã§ã«ããã°ã©ã ãããŠããæ°ããæ©èœãããã³ãã«è¿œå ããã®ã«ãã»ãšãã©æéã¯ããããŸããã ããã³ããšã³ãããã«ã«ã€ããŠã¯å¥ã®èšäºã§è©³ãã説æããŸãã
ããã³ããšã³ããããã¯ãšã³ãã«æ¥ç¶ãã
ããã³ããšã³ãã¯ããã·ã¥éç¥ãä»ããŠããã¯ãšã³ãã«æ¥ç¶ãããŸããã èŠåŽããŠç¬èªã®ãã³ãã©ãŒãäœæããå¿ èŠããããŸããããä»ã§ã¯ããŒãžäžã®æ å ±ã¯ã»ãŒç¬æã«æŽæ°ãããŸãã
ã©ãããã®ïŒ ããã«ã€ã³ã¿ãŒãã§ãŒã¹ãããã·ã³ãã«ã«ãªããŸããã ç§ãã¡ã¯ãããé©å¿åã«ããé«éèªã¿èŸŒã¿ã«ãããããã«ãæäœããããã®å¥ã®ã¢ããªã±ãŒã·ã§ã³ãã€ã³ã¹ããŒã«ããããšãªããé¢éžåã®æåŸã®æ°åéã«æºåž¯é»è©±ããã§ã䜿çšã§ããããã«ããŸããã
ã¹ããã 4. ãã¹ããšç§»è¡ã¹ããŒã
ãã¹ãŠãèµ·åããæåã®ãã¹ãã«åæ Œãããšãã移è¡ã®åé¡ãçããŸããã ãŸãã課éãã€ã³ã¹ããŒã«ãããµãŒããŒãšãŒãžã§ã³ãã§ã®åäœãã¹ããéå§ããŸããã
次ã«ãããŒã¿ããŒã¹ãå€ãè«æ±æžããæ°ããè«æ±æžã«è»¢éããç°¡åãªã¹ã¯ãªãããäœæããŸããã
BillmanagerãVMmanagerããããŒãžã£ãŒã® IPmanager ãšãã XNUMX ã€ã®å€ãããŒã¿ããŒã¹ããããŒã¿ã XNUMX ã€ã®æ°ããããŒã¿ããŒã¹ã«çµ±åããããããæåéããã¹ãŠããã¹ãããŠåãã§ãã¯ããå¿ èŠããããŸããã ããããããã¹ãã®ç§»è¡ã¯ãæ°ããããã«ã®éçºéçšã§ééããæãé£ããããšã§ãã
å確èªåŸãå€ãè«æ±ãééããŸããã æåŸã®ããŒã¿ç§»è¡ã¯éåžžã«åä»ãªç¬éã§ãããããããããããšã«ç®ç«ã£ãåé¡ããªãæ°åã§å®äºããŸããã å°ããªãã°ããã£ãã®ã§ããã®é±ã®éã«ä¿®æ£ããŸããã ã»ãšãã©ã®æéã¯äœãèµ·ãã£ããããã¹ãããã®ã«è²»ããããŸããã
ãã®åŸãæ°ããããã«ã®äœæãšè«æ±æžãèšèŒããæçŽãã¯ã©ã€ã¢ã³ãã«éä¿¡ãããªãã€ã¬ã¯ããäœæããŸããã
çµæãšããŠïŒ çããŠãïŒ
ããããŒãšã³ã
ãœãããŠã§ã¢ã䜿çšããæåã®æ°æéãããç§ãã¡ã¯ç§»è¡ã®ãã¹ãŠã®åã³ãæããŸããã ã³ãŒãã¯å®å
šã«ç§ãã¡ã®ãã®ã§ã䟿å©ãªã¢ãŒããã¯ãã£ãåããŠãããã€ã³ã¿ãŒãã§ã€ã¹ã¯ã¯ãªãŒã³ã§è«ççã§ããã
æ°ããã«çºå£²åŸã®åã¬ãã¥ãŒ
ã客æ§ã®ç§»è¡ã容æã«ããããã«ãè² è·ãæãå°ãªã 2017 幎ã®å€§æŠæ¥ã® XNUMX æã«ç§»è¡ããã»ã¹ãéå§ããŸãããäŒæ¥ã®åå€ã«ã¯ã»ãšãã©èª°ãä»äºãããŸããã
åœç€Ÿã®ã·ã¹ãã ã«åãæ¿ããŠåŸãäž»ãªç¹ã¯ (äžè¬çãªä¿¡é Œæ§ãšå©äŸ¿æ§ã¯å¥ãšããŠ)ãäž»èŠãªé¡§å®¢åãã«æ©èœãè¿ éã«è¿œå ã§ããããšã§ããã€ãŸãã顧客ã®å°»ã§ã¯ãªãé¡ã«ãªãããšãã§ãããšããããšã§ãã
次ã¯äœã§ããïŒ
ç§ãã¡ã¯æé·ããŠãããããŒã¿ã顧客ã顧客ããŒã¿ã®éã¯å¢å ããŠããŸãã Memcached ãµãŒããŒãšãç°ãªãã¿ã¹ã¯ãæ〠XNUMX ã€ã®ãã¥ãŒ ãããŒãžã£ãŒãããã¯ãšã³ãã«è¿œå ããå¿ èŠããããŸããã ããã³ããšã³ãã«ã¯ãã£ãã·ã¥ãšç¬èªã®ãã¥ãŒããããŸãã
ãã¡ããã補åãéçºãããããè€éã«ãªãã«ã€ããŠãããšãã° HighLoad ãè¿œå ãããšããªã©ãç§ãã¡ã«ã¯ãŸã åéºããããŸããã
次åã®èšäºã§ã¯ãHi-CPU æéäœç³»ãã©ã®ããã«ããŠéå§ãããã®ããããŒããŠã§ã¢ããœãããŠã§ã¢ãã©ã®ãããªã¿ã¹ã¯ã解決ããäœãè¡ã£ããã«ã€ããŠèª¬æããŸãã
åºæïŒ habr.com