DX時代で加速するアプリ開発のアジャイル化 コンテナの活用とセキュリティ対策に必要なこととは
- アフターレポート
- コンテナ
- DX
- ../../../article/2021/08/dx_seminar.html

クラウドネイティブとは、クラウドの特性・メリットを最大限に活用するために、最初からクラウド上で動作することを前提として設計・開発されたシステムやアプリケーション、またソフトウェアアプローチを指す。代表的な技術・要素にはコンテナ、マイクロサービス、サービスメッシュ、イミュータブルインフラストラクチャ、宣言型APIがある。
クラウドネイティブとは、クラウド環境やクラウドの特性・メリットを最大限に活用するために、最初からクラウド上で動作することを前提として設計・開発されたシステムやアプリケーション、またソフトウェアアプローチを指します。例えばオンプレミス用に開発されたシステムをクラウド上で動作するようにしたものは、クラウドネイティブとは異なります。
クラウドネイティブ(技術)について、CNCF(Cloud Native Computing Foundation:2015年に設立されたクラウドネイティブ推進のための非営利団体)は、以下のように定義しています。
クラウドネイティブ技術は、パブリッククラウド、プライベートクラウド、ハイブリッドクラウドなどの近代的でダイナミックな環境において、スケーラブルなアプリケーションを構築および実行するための能力を組織にもたらします。このアプローチの代表例に、コンテナ、サービスメッシュ、マイクロサービス、イミュータブルインフラストラクチャ、および宣言型APIがあります。
CNCFの定義で触れられている「(クラウドネイティブ技術への)アプローチの代表例」、コンテナ、マイクロサービス、サービスメッシュ、イミュータブルインフラストラクチャ、宣言型APIについて解説します。
コンテナとは、仮想化技術の一つです。アプリケーション本体およびアプリケーションの実行に必要な「必要最小限の要素」をまとめ、他のプロセスから隔離した実行環境の中で動作させます。特徴としては以下が挙げられます。
コンテナにはアプリケーション開発の生産性向上、運用の効率化、リリースサイクルの向上(アジャイル化)、コスト削減、環境への依存度の低さによる可搬性の向上など、さまざまなメリットがあります。
【図】仮想マシンとコンテナの比較イメージ
(出典)OpenShift - エンタープライズ対応の Kubernetes コンテナプラットフォーム (scsk.jp)
マイクロサービスとは、サービスやアプリケーションの各機能を小さな独立したサービスに分割することで、開発の柔軟性とスケーラビリティを向上させるスタイルを指します。この独立した複数のマイクロサービス間をAPIで接続、連携させ一つのサービスとして実現する概念を「マイクロサービスアーキテクチャ」と呼びます。
従来の「一つのサービスの中にさまざまな機能を実装する」ものはモノリシックアーキテクチャと呼ばれ、一つのサービス内で各々の機能が依存しあうなど複雑化し、拡張性が低くなるおそれがあります。またメンテナンスもしづらくなる傾向があります。
【図】マイクロサービスアーキテクチャとモノリシックアーキテクチャのイメージ
(出典)マイクロサービスとは|IT用語辞典|SCSK IT Platform Navigator
モノリシックアーキテクチャと比較すると、マイクロサービスアーキテクチャは個々の機能の独立性が高いため、「開発効率が向上する」「保守運用の負担が軽減される」「コスト削減につながる」など多くのメリットが期待できます。
サービスメッシュとは、コンテナ化したマイクロサービス間の通信をプロキシで中継して制御し、「一つのサービス」として円滑に動くようにする仕組み、またはソフトウェアを指します。
コンテナ化したマイクロサービスに多くのメリットがあることは前述のとおりです。しかし複数のマイクロサービスがスムーズに連携するには、サービス間の通信の最適化、安全性の確保、負荷の分散などが必須となります。サービスメッシュはこの懸念点を払拭し安全な通信機能を提供する仕組みといえます。
イミュータブルインフラストラクチャ(Immutable Infrastructure)とは、一度構築したら変更を加えず(=immutable:不変)稼働させるインフラ環境、あるいは「本番環境には変更を行わず運用する」考え方を指します。
従来のインフラ環境では、本番環境の運用中にソフトウェアなどのバージョンアップやパッチ適用などを直接行います。しかし本番環境への修正や更新が重なっていくと、やがてシステムが複雑化してしまい、稼働が不安定になるなど障害の起こる可能性、運用チームの負担やコストの増大、セキュリティ上のリスクなどが問題となりました。
イミュータブルインフラストラクチャでは、同じ本番環境を使い続けるのではなく、変更は新しいインフラ環境を構築して置き換えることで行われます。イミュータブルインフラストラクチャを採用することで、上記の課題を解決しクラウドネイティブの利点を最大限に活用できます。
宣言型APIとは、サービスのあるべき状態=最終的に得たい結果を指示するAPIです。
マイクロサービス同士を連携し一つのサービスとして動かすには、前述のとおりAPIが仲介に使われます。従来のものは命令型APIと呼ばれ、具体的な実行コマンド(手順)を指示します。これに対し宣言型APIは、最終的な目標のみを伝えることで、システム側が自律的にそのサービスの「あるべき状態」を実現する仕組みです。
【関連情報】OpenShift - エンタープライズ対応の Kubernetes コンテナプラットフォーム (scsk.jp)
近年、クラウドネイティブが注目されている背景には以下の5つの大きな変化があります。
このようなさまざまな社会背景、理由から、これらの要求に応えられる手法、システムとしてクラウドネイティブが注目されていると考えられます。今後はオンプレミスをベースとしてきた従来の開発手法・体制からクラウドを前提としたものへと考え方自体を変えていく必要があるといえるでしょう。