クラウドネイティブとは?なぜクラウドネイティブが求められるか

コロナ禍を経てニューノーマル時代への本格移行に伴い社会のデジタルシフトが活発化する中、企業のDX推進においてオンプレミスからクラウドサービスへの移行が加速しています。
多種多様なクラウドサービスが提供される現在、クラウドサービス利用検討から採用のプロセスでは「クラウドネイティブ」というワードが注目を集めています。
クラウドネイティブとは、どのような意味を持ち、具体的にどのようなことを指すのでしょうか。
本コラムでは、クラウドネイティブの意味や、必要とされる理由、クラウドネイティブと混同しがちなクラウドファースト・クラウドバイデフォルトとの違いについて解説します。
クラウドネイティブとは
クラウドネイティブとは、要約すると「クラウドに最適化されたシステム」を意味します。ただし、単にクラウド化されたシステムということではありません。あくまで「クラウドありき」で最適化が図られたシステムを指します。
オンプレミスのシステムを単にクラウド環境に移行させただけでは、クラウドネイティブには当たりません。
ネイティブ=生まれつきの~・生来の~などの意味を表すワードが含まれている通り、最初からクラウド環境の利点を生かした運用を想定して作られたシステム、あるいはその考え方・コンセプト自体が「クラウドネイティブ」です。
クラウドネイティブが必要とされる理由
クラウドネイティブが必要とされる理由として、あらゆるシステムの柔軟性が強く求められる時代性があります。
現在まで、国内企業のシステムは要件を忠実に満たしてきたがゆえに複雑にカスタマイズされているケースが珍しくありません。
複雑なカスタマイズによって、システムの拡張や更改が困難という課題を抱えてしまい、これからの市場変化に柔軟に対応することができず、その結果、ビジネスチャンスを逃してしまうリスクが高まっているのです。
また、複雑化したシステムほど維持管理費が高額になる上、今後は保守運用ができる人材が不足するという予測もあります。
経済産業省が公開したDXレポート2では、2025年以降に年間最大12兆円の経済損失が生じると試算されています。いわゆる2025年の崖です。
経済産業省:DXレポート2
一方、クラウドサービスでは柔軟な拡張が可能になります。日頃の業務を標準化されたクラウドサービスに合せることで、システムの複雑化を防ぐことができます。
システムの運用自体はクラウドサービスの提供側が担うため、システム保守・運用人材の不足にも対応できます。
さらに、地震や洪水など自然災害が多い日本において、BCP(事業継続計画)の観点からもクラウドサービスが求められています。
オンプレミスでは非日常かつ緊急の対応が求められる災害対策において、対応が不十分なケースが多く発生します。クラウドサービスは仮想サーバーが冗長化構成になっており、データセンターが複数箇所に分散されているため、災害に強いというのも特徴です。
このように、クラウドネイティブが注目される理由はクラウドのメリットを最大限に受けられる点にあります。
クラウドファースト・クラウドバイデフォルトとの違い
クラウドネイティブと類似するワードに「クラウドファースト」と「クラウドバイデフォルト」があります。これらはクラウドネイティブと混同されがちですが、意味が異なります。クラウドネイティブの本質を理解する上でもその違いを整理します。
まず、クラウドファーストとは、「システムを構築する際にクラウドの利用を優先する」という意味です。
オンプレミスでシステム構築する場合、システムが稼働した後にサーバーの性能を増大することや、ストレージを高速化することが難しく、キャパシティプランニングの段階で予めシステムに必要な処理能力を詳細に想定し、その能力を上回るサーバーやストレージを用意する必要があります。その上でハードウェアを調達し構築するというプロセス自体にコストと手間が掛かります。
一方、クラウドではシステムが稼働した後からでも、インスタンスの能力を増やすことや、ストレージを追加することを比較的柔軟に行うことができます。
そのため、比較的小さめのインスタンスやストレージを調達し、クラウド上でシステムを稼働させた後により高度な性能が必要になる場合においても、適切な大きさのインスタンスや高性能なストレージへ切り替えることが可能になります。
クラウドでは詳細なキャパシティプランニングに時間をかける必要はなく、ハードウェアの調達も不要なため、迅速かつ低コストにスタートすることが可能になるのです。
仮にシステムが不要になった場合でも、ハードウェアの減価償却を受け持つ必要もなく、スピーディにシステムを破棄できるようになります。
また、クラウドバイデフォルトはクラウドファーストと比較して、さらに強くクラウドを推奨することを指し、「システムの構築や整備においてクラウドの利用を第一候補とする」という意味です。
クラウドファーストとクラウドバイデフォルトは、どちらもクラウドの利用を推奨しているのに対し、クラウドネイティブはさらにその先に踏み込んで「システムをクラウドに最適化する」ということを意味します。
まとめ
クラウドネイティブでは、システム基盤のクラウド使用を前提として、その上で実行されるアプリケーションまで踏み込んでクラウドに最適化します。
クラウドネイティブを推進する団体「Cloud Native Computing Foundation」(以下、CNCF)は、Kubernetesなどのさまざまなオープンソースソフトウェアの開発を進めています。
CNCFでは、クラウドネイティブの定義として「CNCF Cloud Native Definition v1.0」という文書を公開しています。以下に一部を引用します。
”クラウドネイティブ技術は、パブリッククラウド、プライベートクラウド、ハイブリッドクラウドなどの近代的でダイナミックな環境において、スケーラブルなアプリケーションを構築および実行するための能力を組織にもたらします。
このアプローチの代表例には、コンテナ、サービスメッシュ、マイクロサービス、イミューダブルインフラストラクチャー、および宣言型APIがあります。”
CNCF Cloud Native Definition v1.0
クラウドネイティブでは、より粒度の細かいコンテナをベースとして、よりスケーラブルかつ柔軟なアプリケーションの構築が可能になります。
その上で、サービスメッシュ、マイクロサービス、イミュータブルインフラストラクチャー、宣言型APIなどの代表的技術を用いて、より効率的にクラウドネイティブなシステムが構築できるようになります。
次回は、クラウドネイティブの代表的技術であるサービスメッシュ、マイクロサービス、イミュータブルインフラストラクチャー、宣言型APIの詳細と、アジャイルなどクラウドネイティブに適した開発手法について解説いたします。