難易度が高い技術とは?
難易度が高い技術ってなんですか?
って質問よく受けるんですが
動画配信? 非同期通信? 高負荷システム?
ディープラーニング? c#!? elixir!?
いやいや
システム移行(リニューアル)が一番難易度高い。
それはなぜか?
下記のような多岐にわたるエンジニアリングを要求されるため。
固有の技術知識ではなく、採用しない技術との比較も含め広範囲に渡る。
ーーーーーーーーーーー移行時チェックリストーーーーーーーーーーー
・移行が必須ということはそれなりの負荷に耐えられる環境であること。
・過去のデータをサービス停止時間を最低に抑えて移行させる移行工程表を用意すること
・環境、インフラ構成が変わるとプログラミングが動作しなくなるなどの状況が起こる。新規システムへ対応させておくこと。
・現環境の情報、仕様などが残ってる事はすくないため、サーバーログイン出来たとしても何を確認するかpsから確認するとか、netstat、どんなところに通信してるかとかから少しずつ全容解明させていく必要があること。
・最適の技術へ移行させ運用開発陣がついてこれるシステムでないとならないこと。
・最適は最新ではなく安定性、将来性がある技術を選定していること
・他社システム系との接続がある場合、その連携が新しい環境でもスムーズに動くこと
・移行後、放置されやすい旧システムの適切な削除。セキュリティ対策。バックドア。乗っ取られるなど基準ルールから外れたために事故が起こるリスクがあるため適切に処置しておくこと
データベースの情報だけでなく、ログなどの保存方針など
・移行後のそのシステム利用者へ影響ある事項の通知。連絡が完了していること
・移行時ウォームアップ処理の適用がされていること
ウォームアップとはデータベースなどで行われる手法。DBはアクセスがされることでメモリにのることになる。通信が多いシステムの場合、切り替えした瞬間に一気に通信が開始され、メモリにはいり安定するまえにDBが破綻するケースがある。
2017年現在ではKVSなどキャッシュサーバーも多くなってきたため、キャッシュサーバーのウォームアップも考慮する必要がある
・移行失敗時の切り戻しの設計。ゲームなどだと、30分で負荷で動かなくなり戻す事になるなどの状況が起こる。その際、どこまでのユーザーデータを救うか。切り戻しにも失敗するケースもある。(移行に失敗して、そのまま終了したサービスすらある)適切に移行、切り戻しのテストが行われていること。(テストが必要無いレベルまで移行リスクを取り除くこと)
こういった事前の活動、当日の対応、事後対応を経て安定したサービスが持続されていくことになる。
2017年 zozotownがシステム移行するため、現リソースとは別に40名のエンジニア募集を実施した。40名で1年? 中々の大規模移行ですね。
https://www.st-komuten.jp/recruit/40engineers/
無事完了することを願ってます!