クラウドネイティブとは

クラウドネイティブとは、クラウドの特性・メリットを最大限に活用するために、最初からクラウド上で動作することを前提として設計・開発されたシステムやアプリケーション、またソフトウェアアプローチを指す。代表的な技術・要素にはコンテナ、マイクロサービス、サービスメッシュ、イミュータブルインフラストラクチャ、宣言型APIがある。

クラウドネイティブとは|概要

クラウドネイティブとは、クラウド環境やクラウドの特性・メリットを最大限に活用するために、最初からクラウド上で動作することを前提として設計・開発されたシステムやアプリケーション、またソフトウェアアプローチを指します。例えばオンプレミス用に開発されたシステムをクラウド上で動作するようにしたものは、クラウドネイティブとは異なります。

クラウドネイティブ(技術)について、CNCF(Cloud Native Computing Foundation:2015年に設立されたクラウドネイティブ推進のための非営利団体)は、以下のように定義しています。

クラウドネイティブ技術は、パブリッククラウド、プライベートクラウド、ハイブリッドクラウドなどの近代的でダイナミックな環境において、スケーラブルなアプリケーションを構築および実行するための能力を組織にもたらします。このアプローチの代表例に、コンテナ、サービスメッシュ、マイクロサービス、イミュータブルインフラストラクチャ、および宣言型APIがあります。

CNCF Cloud Native Definition v1.1

クラウドネイティブを構成する代表的な5つの技術・要素

CNCFの定義で触れられている「(クラウドネイティブ技術への)アプローチの代表例」、コンテナ、マイクロサービス、サービスメッシュ、イミュータブルインフラストラクチャ、宣言型APIについて解説します。

コンテナ

コンテナとは、仮想化技術の一つです。アプリケーション本体およびアプリケーションの実行に必要な「必要最小限の要素」をまとめ、他のプロセスから隔離した実行環境の中で動作させます。特徴としては以下が挙げられます。

  1. 単一OS上に複数の実行環境を構築できる
  2. ゲストOSを必要とせず最低限のシステムリソースを活用するため処理速度が速い

コンテナにはアプリケーション開発の生産性向上、運用の効率化、リリースサイクルの向上(アジャイル化)、コスト削減、環境への依存度の低さによる可搬性の向上など、さまざまなメリットがあります。

【図】仮想マシンとコンテナの比較イメージ

【図】仮想マシンとコンテナの比較イメージ

(出典)OpenShift - エンタープライズ対応の Kubernetes コンテナプラットフォーム (scsk.jp)

マイクロサービスアーキテクチャ

マイクロサービスとは、サービスやアプリケーションの各機能を小さな独立したサービスに分割することで、開発の柔軟性とスケーラビリティを向上させるスタイルを指します。この独立した複数のマイクロサービス間をAPIで接続、連携させ一つのサービスとして実現する概念を「マイクロサービスアーキテクチャ」と呼びます。

従来の「一つのサービスの中にさまざまな機能を実装する」ものはモノリシックアーキテクチャと呼ばれ、一つのサービス内で各々の機能が依存しあうなど複雑化し、拡張性が低くなるおそれがあります。またメンテナンスもしづらくなる傾向があります。

【図】マイクロサービスアーキテクチャとモノリシックアーキテクチャのイメージ

【図】マイクロサービスアーキテクチャとモノリシックアーキテクチャのイメージ

(出典)マイクロサービスとは|IT用語辞典|SCSK IT Platform Navigator

モノリシックアーキテクチャと比較すると、マイクロサービスアーキテクチャは個々の機能の独立性が高いため、「開発効率が向上する」「保守運用の負担が軽減される」「コスト削減につながる」など多くのメリットが期待できます。

サービスメッシュ

サービスメッシュとは、コンテナ化したマイクロサービス間の通信をプロキシで中継して制御し、「一つのサービス」として円滑に動くようにする仕組み、またはソフトウェアを指します。

コンテナ化したマイクロサービスに多くのメリットがあることは前述のとおりです。しかし複数のマイクロサービスがスムーズに連携するには、サービス間の通信の最適化、安全性の確保、負荷の分散などが必須となります。サービスメッシュはこの懸念点を払拭し安全な通信機能を提供する仕組みといえます。

【関連記事】Kubernetesのサービスメッシュ 「Istio」を監視する方法 | コンテナ・モニタリング | Sysdigブログ | コンテナ・Kubernetes環境向けセキュリティ・モニタリング プラットフォーム (scsk.jp)

イミュータブルインフラストラクチャ

イミュータブルインフラストラクチャ(Immutable Infrastructure)とは、一度構築したら変更を加えず(=immutable:不変)稼働させるインフラ環境、あるいは「本番環境には変更を行わず運用する」考え方を指します。

従来のインフラ環境では、本番環境の運用中にソフトウェアなどのバージョンアップやパッチ適用などを直接行います。しかし本番環境への修正や更新が重なっていくと、やがてシステムが複雑化してしまい、稼働が不安定になるなど障害の起こる可能性、運用チームの負担やコストの増大、セキュリティ上のリスクなどが問題となりました。

イミュータブルインフラストラクチャでは、同じ本番環境を使い続けるのではなく、変更は新しいインフラ環境を構築して置き換えることで行われます。イミュータブルインフラストラクチャを採用することで、上記の課題を解決しクラウドネイティブの利点を最大限に活用できます。

宣言型API

宣言型APIとは、サービスのあるべき状態=最終的に得たい結果を指示するAPIです。

マイクロサービス同士を連携し一つのサービスとして動かすには、前述のとおりAPIが仲介に使われます。従来のものは命令型APIと呼ばれ、具体的な実行コマンド(手順)を指示します。これに対し宣言型APIは、最終的な目標のみを伝えることで、システム側が自律的にそのサービスの「あるべき状態」を実現する仕組みです。

【関連情報】OpenShift - エンタープライズ対応の Kubernetes コンテナプラットフォーム (scsk.jp)

クラウドネイティブが必要とされる背景

近年、クラウドネイティブが注目されている背景には以下の5つの大きな変化があります。

(1)ビジネス環境の変化

  • デジタル化、グローバル化が進み市場への迅速な対応が求められ競争が激化している
  • コストや効率化を求められている

(2)ITシステムへの要求の変化

  • スピードアップしたビジネス環境の変化に対応するためITシステムも変化への迅速・柔軟な対応が求められている
  • リモートワークなど働き方の変化によりセキュリティの考え方やシステムも変化している

(3)クラウド技術の進化とメリットの拡大

  • パブリッククラウドをはじめ、プライベートクラウド、マルチクラウドなどクラウドの活用範囲や様態が多様になり、スケーラブルかつ高可用なインフラが比較的容易に利用できるようになった

(4)開発と運用の統合(DevOps)、アジャイルなど開発手法の変化

  • 従来のような開発と運用の垣根がなくなり、アジャイル開発の浸透など変革が起きている

(5)人材不足という社会問題への対応の必要性

  • IT人材の慢性的な不足により、より効率の良いシステム運用や技術者の活用が求められている

このようなさまざまな社会背景、理由から、これらの要求に応えられる手法、システムとしてクラウドネイティブが注目されていると考えられます。今後はオンプレミスをベースとしてきた従来の開発手法・体制からクラウドを前提としたものへと考え方自体を変えていく必要があるといえるでしょう。

最新情報などをメールでお届けします。
メールマガジン登録

このページをシェアする

  • twitter

当用語辞典は「SCSK IT Platform Navigator」編集部が制作・運営しております。当用語辞典の掲載情報を利用することによって生じた不利益および損害等について弊社は一切の責任を負いませんので、予めご了承ください。掲載情報に関するご指摘、ご意見等はお問い合わせまでお寄せください。