ISPsystem さん、蚱しおさようなら! サヌバヌ コントロヌル パネルを䜜成した理由ず方法

ISPsystem さん、蚱しおさようなら! サヌバヌ コントロヌル パネルを䜜成した理由ず方法

こんにちは 私たちは「ホスティングテクノロゞヌズ」であり、5幎前に蚭立されたした VDSina — 開発者向けに特別に䜜成された最初の vds ホスティング。 私たちは、DigitalOcean ず同様に、ロシアのサポヌト、支払い方法、ロシアのサヌバヌを䜿甚しお、利䟿性を高めるよう努めおいたす。 しかし、DigitalOcean は信頌性ず䟡栌だけでなく、サヌビスでもありたす。

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、それが今床は統治する Qemu-kvm ハむパヌバむザヌ.

゚ヌゞェントは、libvirt ラむブラリを介しおサヌバヌ䞊のすべおのサヌビス (vds の䜜成、停止、削陀、オペレヌティング システムのむンストヌル、パラメヌタヌの倉曎など) を管理したす。 蚘事の公開時点では、これらは XNUMX 以䞊の異なる機胜であり、タスクやクラむアントのニヌズに応じお補完されたす。

理論䞊、libvirt は課金から盎接制埡できたすが、これには远加コヌドが倚すぎるため、これらの機胜を゚ヌゞェントず課金の間で分離するこずにしたした。課金は単に JSON API 経由で゚ヌゞェントにリク゚ストを行うだけです。

゚ヌゞェントはむンタヌフェむスを必芁ずせず、サヌバヌ コン゜ヌルから盎接テストできるため、最初に実行したした。

サヌバヌ゚ヌゞェントから埗られたもの: すべおの人の生掻を簡玠化するレむダヌが登堎したした。請求では倧量のコマンドを送信する必芁はなく、リク゚ストを行うだけで枈みたす。 そしお、゚ヌゞェントは必芁なこずをすべお実行したす。たずえば、ディスク領域や RAM を割り圓おたす。

ステップ 2. 請求

開発者の Alex にずっお、これは初めおのコントロヌル パネルではありたせんでした。Alex は長い間ホスティングに携わっおいたため、クラむアントが䜕を必芁ずし、ホスティング者が䜕を必芁ずしおいるのかを倧䜓理解しおいたした。

私たちは、請求曞のこずを「コントロヌル パネル」ず呌んでいたす。これには、お金やサヌビスだけでなく、その管理、顧客サポヌトなどが含たれおいたす。

ISPSystem ゜フトりェアから切り替えるには、顧客向けに以前の機胜を完党に保持し、ナヌザヌのすべおの財務行為ず、ナヌザヌ間のすべおのサヌビスず接続を叀い請求から新しい請求に移行する必芁がありたした。 私たちは珟圚の補品の内容を調査し、次に競合他瀟 (䞻に DO ず Vultr) の゜リュヌションを調査したした。 私たちは欠点ず利点を怜蚎し、ISPsystem の叀い補品を䜿甚した人々からのフィヌドバックを収集したした。

新しい請求では、埓来の PHP、MySQL (将来的には PostgreSQL に切り替える予定)、バック゚ンドのフレヌムワヌクずしお Yii2、フロントの VueJS ずいう XNUMX ぀のスタックが䜿甚されたした。 スタックは互いに独立しお動䜜し、さたざたな人々によっお開発され、JSON API を䜿甚しお通信したす。 圓時も珟圚も開発に䜿甚しおいたす PHPストヌム О りェブストヌム JetBrains の出身であり、圌らを心から愛しおいたす (皆さん!)

このパネルは、支払いシステム モゞュヌル、ドメむン レゞストラ モゞュヌル、たたは SSL 蚌明曞モゞュヌルなどのモゞュヌル ベヌスで蚭蚈されおいたす。 新しい機胜を簡単に远加したり、叀い機胜を削陀したりできたす。 拡匵の基瀎は、逆の方向、぀たり「ハヌドりェアに向けお」も含めお、アヌキテクチャ的に構築されたす。
ISPsystem さん、蚱しおさようなら! サヌバヌ コントロヌル パネルを䜜成した理由ず方法
私たちが埗たものは䜕ですか: 私たちが完党に制埡できるコントロヌル パネル。 珟圚では、バグは数週間ではなく数時間で修正され、新機胜は ISPSystem の芁求ではなく顧客の芁求に応じお実装されたす。

ステップ 3 むンタヌフェヌス

ISPsystem さん、蚱しおさようなら! サヌバヌ コントロヌル パネルを䜜成した理由ず方法
むンタヌフェヌスは私たちのチヌムの発案です。

たず、むンタヌフェヌスを根本的に倉曎せずに、ISPsystem API 䞊でアドオンを䜜成した堎合に䜕が起こるかを怜蚎したした。 結果はたあたあだったので、すべおを最初から行うこずにしたした。

私たちは、クリヌンでミニマルなデザむンでむンタヌフェむスを論理的にするこずが重芁であり、そうすれば矎しいパネルが埗られるず信じおいたした。 芁玠の配眮に぀いおは Megaplan で議論され、珟圚ナヌザヌがコントロヌル パネルで芋るむンタヌフェむスが埐々に誕生したす。

すでに ISPsystem 甚の支払いプラグむンを䜜成しおいるため、請求ペヌゞのデザむンが最初に登堎したした。

フロント゚ンド

圌らは、パネルを SPA アプリケヌションにするこずを決定したした。これは、リ゜ヌスをあたり芁求せず、デヌタを高速に読み蟌むこずができたす。 私たちのフロント゚ンダヌ Artysh は、Vue でそれを曞くこずに決めたした。圓時、Vue はちょうど登堎したばかりでした。 私たちは、このフレヌムワヌクは React のように動的に発展し、しばらくするず Vue コミュニティが成長し、ラむブラリの海が珟れるだろうず想定しおいたした。 私たちは Vue に賭けたしたが、埌悔したせんでした。バック゚ンドですでにプログラムされおいる新しい機胜をフロントに远加するのに、ほずんど時間はかかりたせん。 フロント゚ンドパネルに぀いおは別の蚘事で詳しく説明したす。

フロント゚ンドをバック゚ンドに接続する

フロント゚ンドはプッシュ通知を介しおバック゚ンドに接続されたした。 苊劎しお独自のハンドラヌを䜜成する必芁がありたしたが、今ではペヌゞ䞊の情報はほが瞬時に曎新されたす。

どうしたの パネルむンタヌフェヌスがよりシンプルになりたした。 私たちはそれを適応型にし、高速読み蟌みにより、パネルを操䜜するための別のアプリケヌションをむンストヌルするこずなく、離陞前の最埌の数分間に携垯電話からでも䜿甚できるようにしたした。

ステップ 4. テストず移行スキヌム

すべおが起動し、最初のテストに合栌したずき、移行の問題が生じたした。 たず、課金をむンストヌルし、サヌバヌ゚ヌゞェントでの動䜜テストを開始したした。

次に、デヌタベヌスを叀い請求曞から新しい請求曞に転送する簡単なスクリプトを䜜成したした。

Billmanager、VMmanager、マネヌゞャヌの IPmanager ずいう XNUMX ぀の叀いデヌタベヌスからデヌタが XNUMX ぀の新しいデヌタベヌスに統合されたため、文字通りすべおをテストしお再チェックする必芁がありたした。 おそらく、テストの移行は、新しいパネルの開発過皋で遭遇した最も難しいこずです。

再確認埌、叀い請求を閉鎖したした。 最埌のデヌタ移行は非垞に厄介な瞬間でしたが、ありがたいこずに目立った問題もなく数分で完了したした。 小さなバグがあったので、その週の間に修正したした。 ほずんどの時間は䜕が起こったかをテストするのに費やされたした。

その埌、新しいパネルの䜏所ず請求曞を蚘茉した手玙をクラむアントに送信し、リダむレクトを䜜成したした。

結果ずしお 生きおる

ハッピヌ゚ンド

゜フトりェアを䜿甚した最初の数時間から、私たちは移行のすべおの喜びを感じたした。 コヌドは完党に私たちのもので、䟿利なアヌキテクチャを備えおおり、むンタヌフェむスはクリヌンで論理的でした。
ISPsystem さん、蚱しおさようなら! サヌバヌ コントロヌル パネルを䜜成した理由ず方法
新パネル発売埌の初レビュヌ

お客様の移行を容易にするために、負荷が最も少ない 2017 幎の倧晊日の XNUMX 月に移行プロセスを開始したした。䌑日の前倜にはほずんど誰も仕事をしたせん。

圓瀟のシステムに切り替えお埗た䞻な点は (䞀般的な信頌性ず利䟿性は別ずしお)、䞻芁な顧客向けに機胜を迅速に远加できるこずです。぀たり、顧客の尻ではなく顔になるこずができるずいうこずです。

次は䜕ですか

私たちは成長しおおり、デヌタ、顧客、顧客デヌタの量は増加しおいたす。 Memcached サヌバヌず、異なるタスクを持぀ XNUMX ぀のキュヌ マネヌゞャヌをバック゚ンドに远加する必芁がありたした。 フロント゚ンドにはキャッシュず独自のキュヌがありたす。

もちろん、補品が開発され、より耇雑になるに぀れお、たずえば HighLoad を远加したずきなど、私たちにはただ冒険がありたした。

次回の蚘事では、Hi-CPU 料金䜓系がどのようにしお開始されたのか、ハヌドりェア、゜フトりェア、どのようなタスクを解決し、䜕を行ったかに぀いお説明したす。

出所 habr.com

コメントを远加したす