開発したシステムを運用するにあたって、システムを別の環境へ移したり、バージョンを移行する場面が出てきます。
移行する理由は、ランニングコストの削減や脆弱性の回避のためなど、さまざまですが、このようなシステムの移行を、マイグレーションと言います。
今回は、マイグレーションの意味と手法についてご紹介します。
マイグレーションとは?
マイグレーションとは、システムやデータを別環境へ移行させたり、新しいシステムへ切り替えたりすることを意味します。
システムを運用していくにあたって、マイグレーションを行わなければならない代表的な理由として、システムの老朽化・複雑化が挙げられます。
導入されてから相当な時間が経過し、新しい技術やサービスが日々生まれていっている中で、その恩恵をほとんど受けれずにいる古いシステムが数多く存在します。
このような古いシステムを、レガシーシステムと言います。レガシーシステムを運用し続けると、以下のような問題点が出てきてしまいます。
- 維持するために膨大なコストが掛かる。
- 発展・成長することがないため、運用担当者が積める業務経験に限界がある。
- レガシーシステムに不具合があった場合、当時の開発者が不在でブラックボックス化してしまう危険性がある。
- 上記のブラックボックス化に伴い、脆弱性のリスクが上がる。
レガシーシステムの構造を理解している担当者やCOBOLなどの開発言語を扱える人材がいなくなり、システムがブラックボックス化してしまうと、脆弱性のリスクが上がり、社内情報や顧客データの流出などのセキュリティ事故を引き起こしかねません。
セキュリティ事故のリスクを低減するための脆弱性診断については、こちらの記事でも詳しく紹介しているのでぜひご確認ください。
こうした問題を根本から解決するために必要なのがマイグレーションです。
マイグレーションとコンバージョンの違いとは?
マイグレーションと一緒に出てくる言葉に、コンバージョン(コンバート)というものがあります。
マイグレーションがシステムそのものの環境を移行させることを指すのに対し、コンバージョンはデータやファイルを別の形式に変換することを指します。
後述するレガシーマイグレーションの手法の1つに「ストレートコンバージョン」という手法が存在するため、マイグレーションとコンバージョンは似た言葉と捉えられていますが、それぞれの根本的な意味合いは異なりますので注意しましょう。
マイグレーションの5つの手法
システムを移行するマイグレーションの手法としては、次の5つが挙げられます。
- リライト
- リプレース
- リホスト
- リファクタリング
- リビルド
自社のシステムにあったマイグレーション手法はどれか、慎重に選択していきましょう。
1.リライト
リライトは、システムのソースコードを古い言語から比較的新しい言語に書き換える手法です。
例えば、開発言語の1つであるCOBOLは誕生から50年以上経過している古い言語ではありますが、現在でも官公庁や大手企業ではCOBOLで開発されたシステムを利用し続けていることも珍しくありません。
しかし、現在ではCOBOLを扱える人材が少なくなっていることや、新しいOSへの対応の必要性から、Javaなどの言語にリライトすることが多くなってきています。
扱える人材が多い新しい言語に書き換えることで、システムの保守運用が効率的に行えるようになります。
2.リプレース
リプレースは、開発したレガシーシステムを同等の機能を持ち合わせている既存のパッケージに置き換える手法です。
パッケージを用いる分、迅速な移行作業が可能であるという特徴があります。
しかし、選択したパッケージソフトによっては、不足している機能のカスタマイズなど、付随的な作業が発生し、導入に時間が掛かってしまいます。
また、パッケージを利用すると、競合他社と自社システムを差別化出来なくなる可能性もあります。
リプレースを行う場合は、自社のシステム移行に最も適したパッケージソフトを選択する必要がある点も注意が必要です。
3.リホスト
リホストとは、開発言語やロジックは変更せずに、現在稼働中のプラットフォームをWindowsサーバーやクラウドサーバーなど、オープンなプラットフォーム上で動かす手法です。
比較的短期間での移行が可能なため、レガシーシステムの移行に躊躇している企業には有効な手法と言えます。
さらに、移行するプラットフォームによっては、クラウドサービスとの連携も可能となるメリットがあります。
4.リファクタリング
リファクタリングとは、レガシーシステムの仕様には変更を加えず、ソースコードの可読性が高くなるよう修正して、プログラムの内部構造を整理する手法です。
レガシーシステムは、ソースコードの可読性が低くなっているものほど、ブラックボックス化してしまう危険性が高くなります。
ソースコードの可読性を上げて、メンテナンス時やエラー発生時に修正しやすい状態に改善しておくのがよいでしょう。
5.リビルド
リビルドは、システム全体を一から作り直す手法です。
設計や開発に掛かるコストは大幅に増えますが、既存のシステム全体を見直し、新しい市場やビジネスに適応させたシステムとして作り替えるのは、企業の将来を考えれば理想的な方法とも言えます。
レガシーシステムの時点では叶わなかった機能や、不便と感じていた機能等をリストアップして、リビルドという選択肢を選んで良かったと思える移行になるようにしましょう。
マイグレーションの3つの種類
マイグレーションの代表的な種類として、次の3つが挙げられます。
- データマイグレーション
- レガシーマイグレーション
- ライブマイグレーション
それぞれの詳しい内容について解説します。
1.データマイグレーション
データマイグレーションとは、異なるシステム、端末、データ形式の間でデータを移行させることを指します。
異なるシステムや端末間でデータ移行を行う場合は、それぞれのシステムを接続したり、両端末に対応したソフトウェアなどが必要になるため、データマイグレーション用の環境を整える必要があります。
データを保管する媒体やシステムは、物理的な劣化やシステムのアップデートで将来的に使えなくなる可能性もあるため、定期的なデータ移行を見据えておく必要があります。
2.レガシーマイグレーション
レガシーマイグレーションは、メインフレームで稼働している古いシステムを、WindowsやUNIX系OSなどのオープンシステムへ移行させることを指します。
メインフレームとは、主に企業の基幹システムに用いられる大型のコンピュータのことを指します。
メインフレームで稼働している古いシステムの場合、ハードウェアやOSが独自の仕様で構成されており、修理には専用部品が必要であったり、扱える人材が減少傾向にあるため、トラブル発生時の対応が困難になってしまうリスクがあります。
上記のようなリスクを想定して、データや機能を維持したまま仕様が標準化されているオープンシステムへと移行するケースが多くなっています。
3.ライブマイグレーション
ライブマイグレーションとは、あるホスト(サーバー)上で実行中の仮想マシンを停止することなく、別のホストに移行させることを指します。
仮想マシン上でシステムが動いてる最中に、対象サーバーのメンテナンスを行いたい場合などに利用される方法です。
【まとめ】マイグレーションの理解を深めよう
マイグレーションは、システムを長期間保守運用していく上で考慮しなければならない作業です。
手法や種類も様々にあるため、新しいビジネスモデルやビジネス展開等、企業の将来を見据えてより効率的なマイグレーション方法を選択する必要があります。
マイグレーションについての理解を深めて、レガシーシステムの移行に備えておきましょう。