今日では、多くの企業がクラウドプラットフォームの活用を進めています。そうした中で重要性を増しているのが、「クラウドネイティブ」という概念です。クラウドネイティブとは、クラウドの強みを最大限引き出すように最適化されたアーキテクチャを意味します。本記事では、このクラウドネイティブの基本的な知識についてわかりやすく解説します。
クラウドネイティブとは?
まずは、クラウドネイティブとは何を意味するのかを解説します。
クラウドネイティブの定義
クラウドネイティブとは、簡単に言うと、最初からクラウド上で動くことを前提として、クラウドならではの利点をより活かせるよう設計されたシステムやアーキテクチャのことです。「Cloud Native Computing Foundation」(CNCF)という、クラウドネイティブを推進する団体は、以下のようにクラウドネイティブの特徴を定義しています。
「クラウドネイティブテクノロジーにより、組織はパブリッククラウド、プライベートクラウド、ハイブリッドクラウドなどの最新の動的環境でスケーラブルなアプリケーションを構築および実行できます。このアプローチの例として、コンテナ、サービスメッシュ、マイクロサービス、イミュータブルインフラストラクチャ、および宣言型APIが挙げられます。」
クラウドネイティブなプラットフォームはなぜ求められているのか
こうしたクラウドネイティブなシステムやプラットフォームが必要になった背景には、クラウド環境が一般的になったことが大きな要因として挙げられます。
クラウド環境が一般化する以前は、オンプレミス向けのシステムを単純に載せ替えただけのようなクラウドシステムが主流として使われていた時期もありました。しかし、こうしたクラウド化はクラウドネイティブとは決して言えません。たしかに、オンプレミス用に設計されたソリューションをクラウド上に展開することは可能ですが、それは従来と同じアプリケーションとアーキテクチャを別のインフラストラクチャに再展開しただけのことであり、プロセスがより複雑になる面もあるため、一般的にメリットは限定されます。
クラウド技術が普及し、その有効性が認識されるにつれ、クラウド技術をより有効活用することへの関心が高まっていきました。そこで登場したのが、クラウド特有の強みを徹底的に活かそうという発想、すなわちクラウドネイティブです。
クラウドファーストとの違い
クラウドネイティブと類似した概念が、「クラウドファースト」です。この概念は、クラウドを他の選択肢より優先的に扱うことを意味します。クラウドファーストというコンセプトは、クラウドネイティブより以前、オンプレミスに対するクラウドの利点が認識される中で利用され始めました。クラウドに優先的な地位を与えるという点では両者の概念は共通していますが、他方でクラウドファーストの場合は、システムの性質がクラウド活用に最適化されたものかどうかまでは問いません。
クラウドバイデフォルトとの違い
クラウドファーストと近い意味で活用されるのが、「クラウドバイデフォルト」という言葉です。これは政府の情報システムの構築や整備において、クラウド利用を筆頭候補としてシステム構築することを意味します。つまり、クラウドバイデフォルトは政府機関におけるクラウドファーストの考えです。また、クラウド技術と不可分な関係にあるクラウドネイティブとは異なり、クラウドバイデフォルトは、「情報システムを整備する際にはクラウドサービスの利用を第一候補として検討する」という範疇に留まっており、オンプレミスのシステムを利用する可能性を含ませているのも違いのひとつです。
クラウドネイティブなプラットフォームを構成する技術的な要素
続いて、クラウドネイティブなプラットフォームを構成する主な技術を紹介します。
仮想環境の構築に欠かせない「コンテナ」
コンテナとは、アプリケーション開発において必要な独立した実行環境を構築するための技術です。コンテナには、アプリケーションの実行に必要なすべての設定が含まれていると同時に、非常に軽量な負担で動作するため、従来の仮想マシンとは違ってオーバーヘッドの心配なく迅速にアプリケーション開発を進められるのが特徴です。
クラウドネイティブなシステムには頻繁な変更が施されることが多く、コンテナの俊敏性は非常に有用です。コンテナは、開発とリリースのプロセスを加速し、さまざまなサーバーやクラウド間でワークロードを移植可能にし、ソフトウェア定義のインフラストラクチャを構築するための重要な役割を担います。
機能ごとに分割して素早く開発できる「マイクロサービス」
マイクロサービスとは、アプリケーションを機能単位に分割して開発を進めていき、実装時にそれら個々の機能(マイクロサービス)がHTTPやgRPCの通信を通してシステム連携をして動作するように開発する手法です。
マイクロサービスの利点は、個々のサービスが自律的な構造になっているので、サービス間での依存関係を排除できることです。これによって、他のアプリケーションにマイクロサービスを流用したり、アプリケーション上で何か問題が起きたときに該当箇所のマイクロサービスを切り離して対処したりすることが可能になります。昨今では、中核的な機能から順次開発およびリリースをしていくアジャイル開発が主流になりつつありますが、マイクロサービスはこうした開発方法を可能にする基幹技術です。ただし、マイクロサービスごとに実行環境も構築しなければならないため、管理コストが大きくなってしまうのがデメリットです。
サービスがあるべき状態を支持する「宣言型API」
宣言型APIとは、サービスがどのような状態にあるのが望ましいのか告げるだけで、システムがその状態を自動で作り上げてくれるAPIです。従来の命令型APIでは、システムが実行する必要がある専用コマンドをすべて人間が提供する必要がありました。
しかし、こうした方法は多くの時間と手間がかかり、ヒューマンエラーなども起こりやすくなります。反面、宣言型APIならその手間を大幅に省略し、自律的な動作や制御を実現できると期待されているため、サービス運用の単純化に繋げやすくなります。
適宜アップデートするための「イミュータブルインフラストラクチャ」
イミュータブルインフラストラクチャとは、「イミュータブル(不変)」という言葉が示す通り、一度構築するとその後は変更できないサーバーのことです。この仕組みにおいては、サーバーの一部を更新したり修正したりする場合、適切な変更を加えたイメージから構築された新しいサーバーがプロビジョニングされ、古いサーバーが置き換えられます。その後、古いサーバーは廃止されます。
従来はアプリケーションの変更があるたびに、パッケージを追加したり、パッチを適用したりと煩雑な管理作業をしなければなりませんでした。しかし、上記のような仕組みであれば、変更を最小限にして管理できるため、気軽にアプリケーションの更新ができます。
まとめ
クラウドネイティブとは、クラウド上で稼働することを前提に構築されるアーキテクチャです。コンテナやマイクロサービスなどの技術に支えられたクラウドネイティブプラットフォームは、クラウドならではの強みをフル活用できるように設計されています。
プロジェクト管理ツールのAsanaもまた、クラウドネイティブなITツールです。プロジェクト管理に課題のある企業様は、ぜひ導入をご検討ください。
- カテゴリ:
- プロジェクト管理