[連載企画]マイクロサービス はじめの一歩 Part.3

こんにちは。マクニカソリューションズ KTです。
[連載企画]マイクロサービス はじめの一歩 Part.3です。

Part.1-2はこちらから。
[連載企画]マイクロサービス はじめの一歩 Part.1
[連載企画]マイクロサービス はじめの一歩 Part.2

前回の記事ではマイクロサービスの具体的なアプローチの一つであるAPI-Gatewayの実装について解説しました。
連載3回目の今回もマイクロサービスの具体的なアプローチの一つを紹介していきます。
今回は、マイクロサービスと親和性の高いコンテナテクノロジーについて解説します。
コンテナテクノロジーはグローバルでは2014年頃から流行し始め、近年では随分と成熟してきた技術と言えます。
コンテナテクノロジーの特性については様々な媒体で説明されており、その内容も多岐に渡ります。
本連載では、コンテナテクノロジーが持つ代表的な特性について触れ、次回の連載への前提知識として理解頂ければと思います。

変化に強い軽量なシステム
第1回目の連載の中でマイクロサービスの利点の一つとして、サービスが細かい単位で独立し、シンプルで軽量な構成であることを説明しました。では、このシンプルで軽量な構成をどのように実現するのかを考えてみます。

- コンピューティングリソースを準備する時間の短縮
例えば新規にWebサービスを立ち上げる必要がある場合、従来の方法ではサーバを用意し、その上にOSをインストール、OSの設定、必要なパッケージのインストール、さらにサービスの設定まで多くの工数を必要としました。仮想化テクノロジーの登場によって、物理マシンを都度用意していた時代と比較すると随分とOSの準備までにかかる時間は短縮されたものの、サービスを稼働させるまでにはそれなりの時間を要します。(注:下記、従来型コンピューティングリソースの構成例を参照)
しかし、コンテナテクノロジーの登場によって、サービス稼働までにかかる時間は劇的に短縮されました。コンテナテクノロジーの場合は予め作成(ビルド)しておいたコンテナイメージを使用することで、コンテナイメージをデプロイするだけで即座にサービスを稼働させることが可能になりました。(注:下記、コンテナテクノロジーのコンピューティングリソース構成例を参照)

従来型コンピューティングリソースの構成例

コンテナテクノロジーのコンピューティングリソース構成例

- コンピューティングリソースの軽量化
コンピューティングリソースの容量に対しても従来の方法とコンテナテクノロジーの間には大きな差があります。
従来の方法では新規にサービスを稼働させるためのコンピューティングリソースを用意する手順の中で、OSのインストールタスクが都度含まれることからもわかるように、必要とするリソースにもそれなりの容量を必要としました。目的のサービスを動かすためにはOSを動かすためのCPU、メモリ、ハードディスクを個別に用意する必要がありました。
対して、コンテナテクノロジーの場合は、稼働する個々のコンテナのデプロイ元であるコンテナイメージにOSを同居させる必要が無いため、必要とするシステムリソースは目的のサービスが必要とする最低限で済むというメリットがあります。

コンテナを動かす
- コンテナエンジンのインストール

コンテナをデプロイするためには、まずホストに対してコンテナエンジンをインストールする必要があります。
コンテナエンジンには様々な種類が存在しますが、本連載執筆時点では多くの場合、最も有名なコンテナエンジンとしてDockerが選択されるケースが多いです。
本連載でもDockerを使用して説明を進めていきます。
Dockerのインストールの方法については、下記のリンクで解説されています。
https://docs.docker.com/
多くの場合、Linuxホスト上にDockerエンジンをインストールするパターンが選択されますが、Windowsホスト上にインストールすることも可能です。

- コンテナをデプロイ
Dockerのインストールが完了したら早速コンテナをデプロイしてみます。
今回は代表的なWebサーバであるNGINXをコンテナとしてデプロイしてみますが、下記のように非常に簡単なコマンドを実行するだけでタスクを完了することが可能です。

次に下記のように作成されたコンテナの稼働状況を確認してみます。
StatusがUpとなっており、正常に稼働しています。
また、デプロイコマンドを実行してから僅か数秒でWebサービスを稼働できたことがわかります。

テストとして、稼働中のNGINXに対してクライアントからアクセスをしてみます。

こちらも正常に稼働していることが確認できました。

次に、このコンテナが使用しているシステムリソースを見ていきます。
まずは、コンテナイメージの容量からです。

次に、稼働中のコンテナのCPU、メモリの消費状況も見ていきます。
ユーザアクセスの無い状態ですが、どちらも非常に小さいリソース消費であることがわかります。

- まとめ
今回はマイクロサービスに求められるシンプルで軽量な構成を実現する手法として、コンテナテクノロジーの特性を紹介しています。
実際にDockerコンテナをコンテナイメージからデプロイするタスクが要した時間の短さ、その結果稼働したコンテナが要したシステムリソースの小ささを確認することができました。
従来のシステムでOSを含むコンピューティングリソースを用意していた頃と比べると、マイクロサービスに対するコンテナテクノロジーの親和性の高さを理解頂けたことと思います。

いかがでしたでしょうか。連載3回目の今回は前回に引き続きマイクロサービスへの具体的なアプローチの一つとして、コンテナテクノロジーの特性について解説しました。
次回は、コンテナをプロダクション環境で運用するために必要なコンテナオーケストレーションについて解説する予定です。
ご期待下さい!!

トップに戻る

関連記事

前へ

三人寄れば文殊の知恵!チームで取り組む情報セキュリティクイズ大会~SECCON CTF 2019編~

次へ

IST 秋に参加してきました

Page Top