MSPJマイグレーションコンペティション2015fall で優勝してきた #mspj

MSPJマイグレーションコンペティション2015fall に参加して優勝してきた。とてもふるーいふるーいサーバをクラウドに移行するコンペティションで、MSP協会 が主催。

当日の内容/環境については id:kani_b さんが纏めているので、そちらを参照頂きたい。

kanny.hateblo.jp

自分のチームは自分(バイト2年目学生)、社会人3年目、5年目のチームだった。

我々の作戦

現状の検証自体はそれほど難しく無くすぐに終わった。
少し難しかったのは自分自身の権威サーバがどこにあるのか、どうやって配置すれば良いのか、という部分で詰まったが、チームメイトの方と相談して何とか解決に至った。

最初の設計では LB + App + DBのベーシックな三段構成を考えていたが、途中でチームメイトの方が kusanagi の存在を思い出し、こちらを利用した方が構築作業的にも、今後の運用作業的にも楽なのではないかと考え、こちらを採用した。 (今回実現できなかったが、MariaDB Galera Serverを採用しているので、スケールするのも比較的簡単なのではないか、とも考えていた)

作業環境としては、会場として提供頂いたテコラスさんからガラス(!)のホワイトボードを提供頂けたので、特に外部サービスを利用したりはしなかった(全員で画面をパッと見られるディスプレイとか、アナログな紙とかがあればもう少し捗ったかな、とは思った)。

設計に当たって、運営の方と何度かヒアリングをした。お題設定は当日配布されたドキュメントなどに書いてあったのだが、先方が考えているコスト感などの移行に対して必要そうな情報は少なめだったので、確認の意味を込めて何度かチャットを飛ばした。

移行作業

自分は基本的に他の方へのマネジメントという名のお願い(「◯◯やってもらっていいですか?」とか)や、運営の方への諸連絡、既存環境からkusanagiへの移設を担当した。

WordPress移行に関して、前環境のアクセスログを見た結果GETだけが1分に1回ほど来ていて、念のため暫くMySQLのクエリを眺めていたけど更新系クエリは殆ど流れていなかったので、動的な移行は不要そうという考えに至ったので、セオリー通りwp-contentの移設と、MySQLのdump再発行すると無事に稼働した。
kusanagiを採用したので、完全なるセオリー通りとは言えなかったが、kusanagi自体の設計が非常に分かりやすい物になっていたので、kusanagiのドキュメントを読んでいたら大体分かった。

その後はチームメイトの方とbindの設定を詰めつつ、DNSレコード切り替えを行ってサーバの向き先を変更を行い。移行に成功。アクセスログを見ていた感じ、ダウンタイムは無しで行えたのではないかと思っている。

勝因(と勝手に思っている物)

「先方がどのような形を望んでいて」「どのような事が提案できて」「実際には何をするのが重要なのか」をしっかり確認、実施出来たのが良かったのではないかと思う。

結果発表時に運営の方から行われた講評にも「MUSTとSHOULDをしっかり把握しなければいけない」というお話を聞いて、合っていたのではないかなと思った。

最初は冗長構成とか色々考えていたけど、兎に角1台構成ででも移行したい、という気持ちを持って取り組めたのが良かったかな。と。
(実際、最終的な形としては1台構成でさくらさんのマネージドサービスを一切使えていないので、サーバの調子が悪くなるとすぐに見られなくなってしまう。技術的な面では結構ボロボロになってしまっている…)
あと1時間あればkusanagiを立てて安全冗長化出来ただけにこの部分は結構悔しい。

まとめ

優勝出来てとても嬉しい。

終了1時間前までかなりつらい状況だったが、諦めずに頑張れて良かった。今までの自分の成長がこうやって形になると本当に嬉しい。

最後に、運営のMSP協会の皆様、懇親会で学生の話を聞いて下さった皆様、チームメイトの皆様、ありがとうございました。
今後とも頑張ります。