コンテナが企業にもたらすメリットとは(コンテナ活用前編)
クラウドサービスを支えるKubernetes

クラウドサービスを支えるKubernetes
カーボンニュートラルに向けた動きの活発化、新型コロナウイルスのパンデミック、国際紛争の発生などによって事業環境が大きく変化していることから、事業環境変化に応じたアプリケーションの迅速な改修、柔軟な運用を可能にするITシステムの重要性が高まっている。そこで昨今注目が集まっているのが「コンテナ」「Kubernetes」である。ここでは、SCSKと日立製作所が共同で実施したセミナーでのアンケート調査とSysdigが提供するレポートから、コンテナの導入状況やその背景、そして導入にあたっての課題を見ていこう。
目次

なぜ、コンテナ導入を進める企業が増えているのか

市場調査レポートプロバイダーである「Report Ocean」は、「コンテナおよびKubernetesセキュリティの世界市場は、2022年から2030年までに複合年間成長率25%を記録し、2030年までに約82億ドルに成長する」と予測している。日本においても金融業を中心に、製造、流通、通信などさまざまな業界において、コンテナ導入のPoCが実施され、コンテナ導入を積極的に進めようとする企業が増えてきた。コンテナは本格的な普及期に入ってきたと言えるだろう。

実際、SCSKと日立製作所が共同で実施したセミナーのアンケート調査において、セミナー参加者に「開発や本番で、すでにコンテナを活用していますか」と尋ねたところ、「すでに利用中」「検討中」という回答で6割を占める結果となった。

出典:「2022年SCSKと日立製作所が共同で実施したセミナーでのアンケート調査」

そもそもコンテナとは、サーバ (ホスト OS) 上で稼働する、軽量な仮想環境のことであり、一般にオープンソースのコンテナ型アプリケーション実行環境である「Docker」上で実装する。このコンテナは小さな仮想環境であるがゆえに、運用上のハードルがいくつかある。まず、何らかの障害によりコンテナが停止した場合、再起動する必要があるが、どのコンテナが停止しているのかに気づきにくい。

また、複数のサーバに横断的に配置された多くのコンテナを運用する上では、統合管理する仕組みが必要になる。このコンテナオーケストレーションと呼ばれる仕組みの代表例がオープンソースの「Kubernetes」であり、そのほかAWSが提供する「Amazon Elastic Container Service (Amazon ECS)」、GCPが提供する「Google Kubernetes Engine (GKE)」といったサービスもある。

こうした運用上のハードルにも関わらず、前述のセミナーアンケートで「利用中」と回答した導入企業では、コンシューマー向け Web サービスやECサイト、スマートフォンアプリのバックエンドやゲームのバックエンドなどにコンテナを利用している。なぜだろう。

「ITシステムのスピードやアジリティを高める上での有効な技術として、コンテナの導入が増えているのだと思います」(SCSK株式会社 プラットフォーム事業グループ ITエンジニアリング事業本部 ミドルウェア営業部 課長 奥 浩史)

SCSK株式会社 プラットフォーム事業グループ
ITエンジニアリング事業本部 ミドルウェア営業部 課長 奥 浩史

従来のモノリシックなアーキテクチャのシステムでは、各機能が密接に結びついていることから、一つの機能に変更を加える場合でも、他機能への影響調査やシステム全体でのテストが必要になる。

一方、コンテナは小さな独立した複数のサービスでソフトウェアを構成するマイクロサービスアーキテクチャを実現できる。アプリケーション同士が疎結合であるマイクロサービスのシステムでは、調査やテストの負荷が軽減され、改修にあたってシステム全体を停止する必要もない。

図:モノリシックとマイクロサービスのイメージ

「通常は、サーバ内で複数のアプリケーションが動作しているため、1つのアプリケーションを改修するとサーバの再起動が必要になり、当該アプリケーション以外のアプリケーションも使えなくなります。コンテナだと、当該アプリケーションだけを止めればいいため、システムに対する影響を最小限にできます」(SCSK株式会社 プラットフォーム事業グループ ITエンジニアリング事業本部 ミドルウェアソリューション部 川杉喜彦)

SCSK株式会社 プラットフォーム事業グループ
ITエンジニアリング事業本部 ミドルウェアソリューション部 川杉 喜彦

つまり、マイクロサービスアーキテクチャのシステムでは、ビジネスの変化に応じた柔軟かつ迅速なアプリケーションの改修が容易になるのだ。

さらに、コンテナであれば設定ファイルで実行環境を管理できるため、インフラエンジニアやアプリケーションエンジニアでも設定が可能であり、運用管理が容易になる。アプリケーションの改修が容易になり、属人的になることがないため、改修スピードが上がる。

高速、軽量、可搬性に優れるコンテナの一括管理を支えるKubernetes

コンテナは仮想マシン(ハイパーバイザー型仮想化)と比べても、高速、軽量、可搬性に優れるという特徴を持つ。それは分離レイヤーの違いによる。

「仮想マシンでは、仮想化ソフトウェア内のOS上でアプリケーションが動作するため、OSの管理が大変です。一方コンテナ内のアプリケーションは、ホストOSのカーネルを共同利用するため、OSの管理が格段に楽になります。そうした仕組みの違いから、コンテナは仮想マシンに比べて起動が高速かつ軽量で、可搬性に優れているのです」(川杉)

とはいえ、一定規模以上のマイクロサービスのシステムではさまざまなアプリケーションが動作しており、アプリケーションを格納するためのコンテナも数多く作成する必要がある。コンテナの数が増えれば、それを一括で管理する仕組みが求められる。そのために多くの企業が導入している仕組みがKubernetesである。Kubernetesでは名前空間で区切ることにより、コンテナを管理する。

例えば、[外部公開用システムのアプリケーションはこの名前空間に入れる]というように、アプリケーションのプロジェクト単位でコンテナを割り当てることで、エンジニアは、関係するプロジェクトだけを見ればよくなり、管理しやすくなるという。

代表的なコンテナエンジンであるDockerにはコンテナの作成・廃棄機能はあるが、コンテナの効率的な配置・管理機能はない。Docker上のコンテナには、CPUとメモリの使用量を勘案して、どのサーバを割り当てるかを設定する必要があるのだ。

Kubernetesは自動的に、アプリケーションに必要な複数のコンテナをサーバに割り当てて、負荷に応じてコンテナを増減、管理する。これが、「コンテナオーケストレーション」と呼ばれる技術である。

「このくらいのCPUとメモリを使うコンテナを作りたいとリクエストすると、Kubernetesは自動的に一番リソースが使われていないサーバにコンテナを配置します。またリソースの利用率制限も可能です」(川杉)

フリマアプリやソーシャルゲームなど、不特定多数の人が使っているサービスでは、キャンペーンなどを打つとしばしば急激にアクセス数が伸びる。こうした急激なアクセスへの対応は、クラウドサービス上のインスタンス設定でも可能だが、Kubernetesではノードプール(クラスタ内で同じ構成を持つノードのグループ)の最小サイズと最大サイズを指定するだけで自動的に設定されるため、より早く、間違いがない。

またコンテナ同士の連携もKubernetesなら容易だ。KubernetesのPod機能では、コンテナをまとめてサービス単位で管理できる。あらかじめPodを定義しておけば、サービスごとに起動や停止が可能になるのだ。

Kubernetes利用におけるセキュリティ、モニタリングなどの課題を解決する

導入に踏み切る企業の背景はさまざまだが、今後もデジタルトランスフォーメーション(DX)の各種施策を推進するにあたり、「スケーラビリティを得る」「開発効率とスピードを高める」「社内向けシステムへサーバレスのアーキテクチャを取り入れる」といった目的の実現に向けて、クラウドやコンテナ技術の必要性が間違いなく高まっていく。

このようにコンテナの運用には欠かせないKubernetesだが、いくつか欠点がある。まずは障害/問題発生時の対応が難しいことだ。無数のコンテナが動作しているシステムでは、障害発生箇所の特定が難しい。Kubernetesのオーケストレータがコンテナに割り当てるサーバを勝手に変更するからだ。

また、セキュリティ対策も難しく、モニタリング/パフォーマンス管理にも問題がある。

「Kubernetesにも監査ログの仕組みはありますが、運用監視や脆弱性・不正アクセス検知の仕組みが組み込まれていません。また、サービスカットでコンテナをモニタリングしたり、パフォーマンスをチェックしたりすることもできないのです」(川杉)

実際、SCSKと日立製作所が共同で実施したセミナーでのアンケート調査において、「クラウドやコンテナ環境の利用に際し、セキュリティに不安がありますか」という問いに対して、「少し不安がある」が63%、「大いに不安がある」が15%と、合わせて8割弱のユーザーが不安を感じている。

また、「クライドネイティブのセキュリティと利用状況レポート(2022年)」(Sysdig)によれば、コンテナセキュリティとして「コンテナが「高い」または「重要」な脆弱性で稼働している」という。さらに、コンテナの使用状況としては、「未使用のCPUリソースがある」「メモリやCPUの制限がない」ことが今後の課題となるようだ。

このように、コンテナ環境におけるセキュリティとリソース管理についての懸念が高まっている。では、これらの課題を解決するにはどうすれば良いのだろう。

こうした課題を解決するソリューションとして開発されたツールが「Sysdig」である。Sysdigはネットワークアナライザ「Wireshark」の共同制作者であるロリス・ディオニアニが生み出したクラウドネイティブの統合モニタリング&セキュリティ・プラットフォーム。2013年にOSSとしてリリースされ、ダウンロード数は4,000万以上を誇る。

「ロリスはコンテナというテクノロジーがトレンドになる一方で、コンテナのブラックボックス化が問題を引き起こすと予想していました。彼は、問題を回避するには、コンテナ上におけるOSのシステムコールを可視化すればよいと考えて、Sysdigを開発しました。この可視化技術により、コンテナ環境の詳細なモニタリングと、迅速なトラブルシューティングが可能になったのです」(SCSK株式会社 プラットフォーム事業グループ ITエンジニアリング事業本部 ミドルウェア営業部 姜来誠)

SCSK株式会社 プラットフォーム事業グループ
ITエンジニアリング事業本部 ミドルウェア営業部 姜 来誠

SysdigはOSのシステムコールを可視化することで、コンテナ内部や通信状況のモニタリング、コンテナに潜む脆弱性の発見、不正アクセスやサイバー攻撃の検知、コマンドの実行履歴の記録などを可能にする。

本記事では、コンテナ/Kubernetesは導入企業にどのようなメリットをもたらす技術なのかを解説し、コンテナ/Kubernetesの持つ課題を解決するツールとしてSysdigを紹介した。次の記事では、多くの企業がSysdig導入を決めている理由、Sysdigが提供する機能などを、IIJ、NTTデータ、日立製作所、メルカリなどの事例に基づいて見ていこう。

後編に続く