はじめに
オンプレミス(非クラウド)のシステムをそのままクラウドに乗せる流れをリフト(Lift)、アーキテクチャの変更を加える流れをシフト(Shift)と言ったりしますが本記事ではその流れを参考程度に解説しました。
尚、シフトとリフトの意味は以下。
コンテナ化の概要
以下のようにLinux上で構築されているアプリケーションをコンテナ化する想定として
同アプリをKubernetesのマネージドサービス上で動作させるイメージです。
コンテナ化の流れ
基本的には以下を順序立てて実行していきます。
- コンテナ化の検討
- イメージの用意
- コンテナ実行基盤の準備
- コンテナのデプロイ
コンテナ化の検討
コンテナ化を行うにあたり、1コンテナ1プロセスの原則のもとでマイクロサービスとして分離していきます。
今回はプロセスがそれぞれ独立しているので問題なし。
また、ライセンスや動作要件の確認を行う必要もあります。
例えば以下のようにアプリケーションの要件で特別な設定をコンテナに与えないと動作しないものもあるので注意が必要。
コンテナのイメージ化
今回はDockerHubの公式イメージをローカルに配置し、
Node.jsの上でアプリケーションが動いているのでそれをDockerfileで再現してカスタムイメージを作成します。
動作確認であれば以下のようにコンテナの中でコマンドをうちながら環境を用意し、それを逐次イメージ化するのがオススメ。
実行基盤の用意
マネージドサービスを利用することをオススメします。
オンプレミスでもKubernetesの構築は可能ですが
例えばServiceで言うロードバランサ一つとっても用意に手間がかかるのが難点。
コンテナのデプロイ
イメージを実際に展開し、デプロイメントやサービスを作成することでアプリケーションを起動します。
このあたりのイメージは以下ハンズオンを参照のこと。
まとめ
オンプレミスのアプリケーションをコンテナ化する肝は、そのアプリをイメージ化するところにあります。
基本はDockerfileに構築手順を書いていけばそれでイメージができますが、コンテナ特有のエラーが起きることもあるのでそこが独自アプリをShiftするのが難しいところ。
逆にそのアプリがDockerHub等に公開されているのであれば、そのまま利用することでLift&Shiftの手間を一気に削減することができます。
以上、ご参考になれば幸いです。