クラウドネイティブ・アプリケーションとは
クラウドネイティブ・アプリケーションは、疎結合された小型で独立したサービスの集合です。ユーザーからのフィードバックを継続的改善に速やかに取り入れる機能など、よく知られたビジネス価値の提供を目的に開発されています。つまりクラウドネイティブ・アプリケーション開発とは、新規アプリケーションの構築を迅速化し、既存アプリケーションを最適化して、すべてをつなげる手段です。その目標は、ユーザーが希望するアプリケーションをビジネスニーズに応じて提供することです。
それでは、クラウドネイティブ・アプリケーション開発の「クラウド」とは何でしょうか?アプリケーションが「クラウドネイティブ」である場合、プライベート、パブリック、ハイブリッドの各種クラウドで一貫した開発と自動化された管理を実現することを目的に設計されています。企業はクラウド・コンピューティングを採用することで、アプリケーションのスケーラビリティと可用性を向上させることができます。こうしたメリットは、セルフサービスによるリソースのオンデマンド・プロビジョニングや、開発から本番稼働までのアプリケーション・ライフサイクルの自動化によって実現します。
しかしこれらのメリットを完全に活用するには、新しい形態のアプリケーション開発が必要です。
このニーズに応えるのがクラウドネイティブ開発です。アプリケーションの構築とアップデートを迅速に行い、品質改善とリスク低減も同時に実現するアプローチです。具体的には、応答性と耐障害性に優れたスケーラブルなアプリケーションを、パブリック、プライベート、ハイブリッドのいずれのクラウド環境にも構築する方法です。
クラウドネイティブ・アプリケーションの概略
クラウドネイティブ・アプリケーション開発は、 IT 業界の流行語の 1 つのようにも聞こえますが、イノベーションのスピードを速めようとする組織が求める画期的な手段とも考えられます。クラウドネイティブ・アプリケーション開発とはどのようなものであると考えているか、Red Hat の副社長兼クラウド・プラットフォーム担当ジェネラルマネージャーである Ashesh Badani (アシェシュ・バダニ) に質問しました。
クラウドネイティブ・アプリケーションの構築方法
必要なのは、組織内の人材と、コラボレーションをサポートする自動化プロセスです。つまり、DevOps によって、開発チームと運用チームが共通の目的のもと、定期的にフィードバックを行う体制を作ることで、2 つのチームを連携させます。
コンテナを採用すると、アプリケーション・デプロイ・ユニットと自己完結型実行環境が理想的な形で実現し、こうした手法がサポートされます。DevOps とコンテナを利用すると、開発者は大規模な 1 つのリリースの完成を待つ必要がなく、マイクロサービスのような疎結合のコレクションとしてアプリケーションを容易にリリースおよびアップデートすることができます。
クラウドネイティブ開発は、アーキテクチャのモジュール性、疎結合、サービス独立性に主眼を置いています。各マイクロサービスは、ビジネス機能を実装して固有のプロセスで実行し、アプリケーション・プログラミング・インタフェース (API) またはメッセージングを通じて通信します。この通信はサービスメッシュ層を通じて管理できます。
ただし、クラウドネイティブ・アプリケーションの一環としてアプリケーション提供をスピードアップするには、マイクロサービスの導入から始めなくてはならないわけではありません。多くの組織は、実用的でサービスベースのアーキテクチャを使用してもレガシーアプリケーションを最適化できます。このような最適化は、継続的インテグレーションおよび継続的デプロイメント (CI/CD) や自動化されたデプロイ処理、標準化された開発環境などの DevOps ワークフローによってサポートされます。
DevOps
DevOps とは、ビジネス価値や対応スピードの向上を目的とした、カルチャー、自動化、プラットフォームの設計に対するアプローチです。
マイクロサービス
マイクロサービス・アーキテクチャは、アプリケーションを互いから独立した最小単位のコンポーネントへと分割します。
API
API、すなわちアプリケーション・プログラミング・インタフェース (Application Programming Interface) は、アプリケーション・ソフトウェアを構築するための一連のツール、定義およびプロトコルです。これにより、他の製品やサービスの実装方法を知らなくても、利用中の製品やサービスをそれらと通信させることができます。
コンテナ
コンテナを使用すると、アプリケーションをランタイム環境全体とともにパッケージ化して分離することができるため、全ての機能を維持しながら異なる環境間でアプリケーションを簡単に移行できます。
サーバーレス・アーキテクチャとは
クラウドネイティブ戦略の第一の利点は、コンピュート・リソースが複数の環境に分散している企業が、アプリケーション開発の速度を向上できることです。たとえば、リソースの一部を Amazon サーバーと Google サーバー、オンプレミスで実行する Oracle データベースに収容することができます。クラウドネイティブ開発を採用すると、このようなハイブリッドクラウド・アーキテクチャからさらなる価値を引き出せます。ただしそのためには、クラウドネイティブ戦略の一環として実行すべき追加の手順があります。
サーバーレスとは、アプリケーション開発者がサーバーのプロビジョニングやアプリケーションのスケーリングの管理を行う必要がない、クラウド・コンピューティング・モデルです。このモデルでは、定型作業がクラウドプロバイダーによって取り除かれているので、従来のモデルよりも開発者がコードを本番環境に移行するスピードがはるかに高速になります。
Red Hat でクラウドネイティブ・アプリケーションを構築する理由
電気通信、銀行、医療、さらには酪農まで、どの業界に属していても、あらゆる企業はアプリケーションをビジネス戦略の中枢に置くソフトウェア企業でもあります。このソフトウェア駆動型のビジネス変革には、新しいアプリケーションを迅速に開発し、提供する必要があります。しかもユーザーはさらに高い品質を求めるようになっています。これは簡単な仕事ではありません。Red Hat では、現代の変化の激しい市場で競争に勝つには、プロセス、インフラストラクチャ、アーキテクチャへの投資が必要だと考えています。
このような課題の解決を支援するため、Red Hat は、アーキテクチャ、インフラストラクチャ、プロセスへの改善を実現するには新しいプラットフォームが必要だと考えています。最終的な目標は、高品質のアプリケーションをさらに俊敏に提供できるようにすることです。
多くの企業は、マイクロサービス・アーキテクチャや、より先進的な開発/運用ツールなどのアプローチを使用して、リリースサイクルの短縮と信頼性の向上を実現する必要があることを認識しています。従来、最も大きな課題の 1 つとなっていたのは、レガシー環境の変化に必要なロードマップでした。OpenShift Application Runtimes は、このような変革を単純化し、クラウドネイティブ開発を開始する上での労力とリスクを軽減します。