皆さんこんにちは、元若手金髪の伊藤ともうします。
2/18に行われた、「MSPJマイグレーションコンペティション2017winter」というイベントに参加してきました。 そこで優勝することができたので、どんなことをやったのか自分なりにまとめなおしてみました。
MSPJマイグレーションコンペティションとは
30歳以下の若手のみで行われる、時間までに新環境に現行環境のシステムを移設し、その対応の仕方を競うコンテストです。 今回はさくらのVPSにあるRedmineが起動したサーバをMicrosoft Azureに移行するという課題となっておりました。
タイトルに有る通り「MSPJ マイグレーションコンペティション」で優勝してきましたが、今回のコンペティションで上手くいったと思う要点は3つあると考えています。
- ゴールまでの一貫した計画と大まかな構成の検討
- 要求定義の調査
- タスク分割と全体把握
それらを以下にまとめました。
ゴールまでの一貫した計画と大まかな構成の検討
総評でも言っていたのですがmustとshouldを明確に分け、最初に意識合わせをできたことがとても大事だと思います。 この辺は去年優勝したwhywaitaさんのブログにもかいてあった内容です。
実際に三人で共有した内容は下記となります。 (一部項目がないですが、その辺はバッサリ諦めました)
- must
- 今の環境を新しい環境に完全移行して欲しいです。
- 実施した内容と結果については報告が欲しいです。
- システムを止めるときは利用者に告知が必要なので連絡が欲しいです。
- 昔から使っている古い環境なので、バージョンアップして欲しいです。
- should
- できれば利用者に影響を出さないように切り替えたいです。
- できればサーバに関する資料があるとありがたいです。
- できれば今はまったくバックアップを取っていないのでバックアップを取れるようにしたいです
- できれば新しいインフラエンジニアに引継ぎするために必要な情報がまとまっていると嬉しいです。
- そうそう、近々新しいインフラエンジニアが入社予定だから、その方に引き継げるようになっていると嬉しいですね。
これを最初に行うことで、下記の2つを決めることができました。
- 最小構成から少しずつバージョンアップを繰り返すという方針
mustを定めたことで、今回は移行が絶対ということが三人のなかで共有されたため、どのの段階でも移行ができるような状態にするという方針を最初に決めることができました。
web+dbの2台構成 => LB+web+dbの構成 => LB+web+db+Azure File Storage => LB+web複数台+db+Azure File storage...
といったように移行できる状態を保ちつつバージョンアップをすすめることができました。
(実際は冗長化する時間はなかった)
- mustが決まっていることで、最終的な理想のゴールが決まる
mustとshouldのうち、やるべきことを決めていたため、理想の構成を先に決めておくことができました。 これが定まると自然とチェックポイントが決まるので、区切りをつけやすくすることができました。
要求定義の調査
完全移行とのことでしたので一番最初に下記の項目をもれないように調査しました。
- どういうサービスか
- 動いているミドルウェアはなにか
- そのバージョンは何か
- confの変更点はどこか
- コンテンツなどのパス
- 利用しているポート
- サーバのスペック
そうすることで、移行後に何を確認するべきか、移行には何が必要かを割り出すことができました。 最終チェックポイントとしても有効に使えるので、これに多く時間を使ったのは正解だとおもいます。
タスク分割と全体把握
今回要求定義を長い時間をかけて行ったことで、何をやらなければいけないのかをはっきりさせることができました。 そうすることで、やらなければいけないゴールから、やるべきタスクを細かい粒度でわけることができるようになり、 旗振りをとてもスムーズにおこなうことができました。
また、一つのタスクが細かいのでタスクの目的が明確になるため、なにか行き詰まった時のタスクのスイッチをとてもスムーズに 行うことができました。(タスクの引き継ぎをしなくてもやるべきことがわかる)
タスク分割が上手く行くと全体の進行度の把握もしやすく、諦めるタイミングを見失わずに進めることができました。
反省
- サービス影響をしっかり確認できていなかった
今回移行のタイミングで、実際にサービス断はあったのかなかったのかを確認する時間がありませんでした。 本番サーバで作業することもあるので、サービスへの影響を一番に確認できるようにしておくべきだと思いました。 実際の移行ではエビデンスを取る必要があるとおもうので、移行後に提出できるようにしておくべきだと思います。
- アウトプットをもっとするべきだった
タスクの管理に関して脳内でおこなっていたため、後半は旗振りに時間がかかるようになってしまいました。 今回は台数も少なく、頭のなかのキャパシティでどうにか把握できていましたが、これでは旗振り以外の人の行動を制限しまいます。 Todoリストでもなんでもよいので、それ共有しておくことで自分からタスクを持っていくことができるようになるので次回はもっと細かくアウトプットしていこうと思います。
- 念には念を入れるべきであった
終わってみれば、こうであろうと思っていた点が実はできていなかったりしていたので、「〜だろう」という自分のカンは信用せず、全て確認するべきだと思います。 気になることは全てチェックリストのように出して、確認をとる時間を設けるのも一つの手だと思いました。
最後に
Microsoft Azureをさわったことがない人にAzureのセットアップ全ておまかせしたり、documentが苦手な人に作成をお願いしたりしたりなど無茶なお願いばかりをしてしまいました。(無茶振りすみませんでした・・) 同じチームで一緒に参加できて良かったです!本当にありがとうございました!
ハートビーツから二年連続で優勝者が出たということですので、次も優勝して三連覇目指そうと思います。(挑戦状っぽいですね) 今回のコンペティション参加は、入社してちょうど一年になる自分が、どこまでできるようになったかわかるちょうどいい機会であったと思います。 思い返せばもっとこうできたなーなど反省もたくさんありますが... ここまで力をつけることができるいい環境に身を置いていると改めて感じることができました。
改めて開催していただいた日本MSP協会様、ありがとうございました!
ハートビーツには、若手のうちから挑戦できるチャンスがたくさんあります! 気になる方は是非一度会社に遊びに来てくださいね! 応募はwantedlyからどうぞ!
ではまたどこかで!