クラウドネイティブとは、クラウド・コンピューティングの配信モデルを活用する、アプリケーションの開発・展開のためのモダン・アプローチです。パブリック・クラウド、プライベート・クラウド、ハイブリッド・クラウドなど、必要に応じてリソースを拡張・縮小できる動的な環境で、アプリケーションを開発・展開します。クラウドネイティブなアプリケーションは、一般的にコンテナ化され、クラウドで動作する疎結合のマイクロサービスとして展開されます。これらは、アジャイルや DevOps の原則を具現化したもので、一般的には CI/CD(継続的統合・配信)パイプラインとして展開されます。以下に、アプリケーションをクラウドネイティブにするためのコア・テクノロジーとコンセプトをご紹介します。
コンテナ
コンテナは、仮想化をオペレーティング・システムのレベルで実現するものです。プロセス、アプリケーション、サービスの実行に必要な全てのコードと依存関係(バイナリ、ライブラリ、設定ファイルなど)をパッケージ化することができます。コンテナ化されたソフトウェアは、コンピューティング環境の違いにかかわらず同じように実行されます。高速、ポータブル、軽量なコンテナは、パフォーマンスやリソース消費を最適化するために動的なオーケストレーションが可能です。
マイクロサービス・アーキテクチャ
マイクロサービス・アーキテクチャとは、ソフトウェア・システムを開発するためのモジュール式アプローチのことです。大規模なモノリシックなアプリケーションを 1 つ構築するのではなく、操作やインターフェースが明確に定義された単一機能のサービス・スイートを構築します。このようなモジュール式のアプリケーション開発は、スケーラビリティ、柔軟性、テスト容易性の向上につながります。コンテナは、マイクロサービス・アーキテクチャに無理なく適合します。
DevOps
DevOps とは、開発チームと運用チーム間の統合とコミュニケーションを改善することでソフトウェア開発のライフサイクルを効率化することを目的とした、方法論、自動化技術、ベストプラクティスを組み合わせたものです。最終的な目標は、製品の開発と展開を迅速に行うための CI/CD パイプラインです。コンテナは、開発、テスト、展開のプロセスを簡素化し、加速するのに役立ちます。
クラウドネイティブなアプリケーションについての詳細は、こちらをご覧ください。