クラウド ネイティブは、開発速度、スケーラビリティ、柔軟性、回復力を重視したモジュール型アーキテクチャを使用してアプリケーションを構築および実行する最新のアプローチです。クラウド ネイティブ アーキテクチャは、ビルディング ブロックとして使用できるデータ サービスなどの代替可能なコンピューティング リソースとプラットフォーム リソースを提供する動的なクラウド環境 (パブリック、プライベート、ハイブリッド) に適しています。マイクロサービス、Linux コンテナ、Kubernetes などのオーケストレーション プラットフォームを組み合わせて活用し、スケーラブルで回復力があり、俊敏なアプリケーションを作成します。このアーキテクチャにより、開発チームはサービスを独立して頻繁に構築、展開、更新できるようになり、進化するビジネス ニーズへの対応力とイノベーションが大幅に加速されます。
クラウド ネイティブ アプリケーションは、動的なクラウド インフラストラクチャ向けに最適化された分散システムとして動作するように設計されています。これらのアプリケーションは、静的サーバーや密結合されたコンポーネントに依存するのではなく、モジュール式で、可能な場合はステートレスで、インフラストラクチャに依存しないように設計されています。マネージド データベース、メッセージング システム、自動スケーリング グループなどのクラウド サービスと緊密に統合することで、弾力性、フォールト トレランス、運用効率を実現します。クラウド ネイティブ アプリケーションは、自動化、可観測性、迅速な導入サイクルを優先し、チームがシステムの信頼性とパフォーマンスを大規模に維持しながら、機能と修正を継続的に提供できるようにします。
「クラウド ネイティブ」と「クラウド対応」という用語は、まったく異なる 2 つの概念を表すにもかかわらず、誤って同じ意味で使用されることがあります。
クラウド対応とは、通常、クラウドで動作するように変更または改良されることを意味します。たとえば、クラウド対応アプリケーションとは、かつてはオンプレミスで存在していたものの、その後クラウド プラットフォーム用に再設計または再構築されたアプリケーションのことです。再設計には膨大な作業が必要であり、オンプレミスのアプリケーションをクラウドで動作させるにはいくつかの課題が伴う可能性があります。少なくとも、再設計されたアプリでは、クラウド ネイティブ アプリケーションに固有の俊敏性と柔軟性は提供されません。
クラウド対応アプリケーションはさまざまなクラウド サービスを使用しますが、通常、クラウドで実行するにはオンプレミスのインフラストラクチャに依存します。
クラウド対応アプリケーションとクラウド ネイティブ アプリケーションの主な違いは次のとおりです。
オリジナル設計- クラウド ネイティブ アプリはクラウド サービスとテクノロジーを念頭に置いて開発されますが、クラウド対応アプリケーションはクラウドで動作するように適応させる必要があります。
アーキテクチャ– マイクロサービスを使用する分散アーキテクチャはクラウド ネイティブ アプリケーションで一般的です。クラウド対応アプリケーションは、より従来型のアーキテクチャを使用して構築されます。
リソースの利用– リソースの使用を最適化することはクラウド ネイティブ アプリケーションに固有の部分であり、動的なスケーリングと高度な柔軟性を実現します。クラウド対応アプリケーションは、クラウド リソース最適化機能を活用するように設計されていません。
回復力– クラウド ネイティブであることには、組み込みの冗長性や自動フェイルオーバーなどの信頼性機能を活用することも含まれます。クラウド対応アプリケーションには、再設計フェーズで意図的に組み込まれない限り、通常、これらの機能は含まれません。
クラウド ネイティブ アプリケーションの機能と利点により、柔軟な展開、高可用性、超高速のスケーラビリティが必須となる状況に最適です。このようなパフォーマンスを可能にするコンポーネントには次のようなものがあります。
マイクロサービス アーキテクチャと継続的インテグレーションおよびデプロイメント (CI/CD) – アプリケーションを小さな独立したサービスのコレクションとして作成することで、開発者はアプリケーションの残りの部分に影響を与えることなく、アプリケーションの個別の部分を更新できます。CI/CD により、迅速かつ頻繁な更新とバグ修正が可能になります。
超スケーラビリティ- クラウド ネイティブ アプリケーションは、迅速かつ簡単にスケールアップまたはスケールダウンできるため、需要とトラフィックの急激な変動に対応できます。これは、年間の特定の時期にオンライン購入の需要が急増する可能性がある小売業などのビジネスでは役立つ機能です。
以下は、クラウド ネイティブ アプリケーションと機能から大きなメリットを得られるユース ケースの例です。
電子商取引プラットフォーム- クラウド ネイティブ アプリケーションは、トラフィックとユーザー需要の大幅な変動に対応するための柔軟なスケーリングを提供します。
ストリーミング メディア プラットフォーム– 音楽、映画、ゲームなど、これらのオンライン プラットフォームは、トラフィックと需要が集中するさまざまな期間を経験する可能性があり、24 時間 365 日配信できる必要があります。
ライブ チャット プラットフォーム– ライブ チャットのトラフィックもさまざまな要因に応じて大きく変動する可能性があり、クラウド ネイティブ アプリケーションは、サーバー リソースを動的に割り当てて、全員が接続して会話を続けることができるようにします。
デジタル バンキング– マイクロサービスにより、さまざまな銀行機能が可能になり、迅速なソフトウェア更新も可能になります。コンテナは、この業界では非常に重要なオンライン セキュリティを強化します。
医療用画像およびデータ分析プラットフォーム– クラウド ネイティブ テクノロジーにより、回復力と拡張性が確保され、高速なデータ処理と分析が可能になり、患者の転帰が向上します。
不動産賃貸プラットフォーム– AirBnB や VRBO などの大規模プラットフォームは、クラウド ネイティブ アプリケーションを使用して、何百万ものリスティングを動的にスケーリングします。コンテナとマイクロサービスにより、プラットフォームの信頼性と可用性が維持されます。
リアルタイム データ分析- リアルタイム分析を提供するシステムには、さまざまなソースからの膨大な量のデータに対応できるアーキテクチャが必要です。クラウド ネイティブ アプリケーションの分散性は、このために作られています。
カスタマイズされた消費者推奨– クラウド ネイティブ アプリケーションは、マイクロサービスを使用して消費者の行動と好みを処理および分析し、パーソナライズされた製品やサービスの推奨を提供できます。
自動化された「スマートホーム」システム- クラウド ネイティブ アプリケーションは、さまざまな API を使用して接続されたアプライアンスを自動的に管理し、ユーザーがインターフェイスを使用してコマンドを入力できるようにします。
位置情報対応サービスの統合– Google マップなどのアプリケーションは API を使用して、アプリケーション開発者が実証済みのマッピング機能を新しい製品に統合できるようにします。
従来のアプリケーションは、必要なすべての機能を備えた単一のインスタンスとして実行するように設計されており、増大する需要に対応するために、より大規模で強力なサーバーに展開することができました。これらは通常、特定のプラットフォームまたはオペレーティング システム用に作成されます。これらのアプリを改善または更新するのは困難で時間がかかりました。
一方、クラウド ネイティブ アプリケーションはモジュール化されています。これらはマイクロサービスを使用して構築されているため、従来のアプリよりもはるかに柔軟性、拡張性、回復力に優れています。これらには通常、次のコンポーネントが含まれます。
アプリケーションのすべての機能を単一のサービスに組み込むのではなく、クラウド ネイティブ アプリはマイクロサービスを使用して構築されます。開発者は、アプリケーションを個別のコード パッケージに分割し、各パッケージは単一の特定のビジネス機能に重点を置きます。これらは疎結合されており、共同で動作して完全なアプリケーションとそのサービスを作成します。マイクロサービスはコンテナにパックされ、必要に応じてアプリケーション プログラミング インターフェイス (API) を使用して他のマイクロサービスと通信します。
これらは、個々のマイクロサービスとそのシステム ツール、ライブラリ、およびその他の依存関係を含む軽量で分離されたランタイム環境です。コンテナ化されたマイクロサービスは、基盤となるハードウェアやオペレーティング システム、さらには他のコンテナ化されたマイクロサービスから独立して動作できるため、ほぼすべての環境にデプロイでき、他のマイクロサービスに干渉しません。
アプリケーション プログラミング インターフェイス (API) は、ソフトウェアが相互に通信できるようにする標準化されたプロトコルです。API は、コンテナ化された各マイクロサービスが相互に通信したり、アプリケーションを構成する他のサービスと通信したりできるようにするものです。これらは、マイクロサービス同士を接続する接着剤と考えることができます。クラウド ネイティブ アプリケーションでは、2 つのマイクロサービス間の API が、各マイクロサービスが要求するものと、他のマイクロサービスに提供できるデータを通信します。
コンテナ化されたマイクロサービスと API はすべて、Kubernetes などのオーケストレーション ツールによって動的に管理されます。これらのオーケストレーション ツールは、クラウド ネイティブ アプリケーションの複雑なライフサイクルを管理できるだけでなく、リソースの割り当てを最適化し、必要に応じて負荷を分散し、障害が発生した場合にコンテナーを再起動し、負荷の増加に応じてアプリケーションをスケールアウトし、コンテナー化されたマイクロサービスをサーバーに展開およびプロビジョニングすることもできます。
クラウド ネイティブ アプリケーション開発は、スケーラブルで柔軟性があり、回復力のあるアプリケーションを構築するための最新のアプローチです。オンプレミス環境から移行したり、クラウドで新しいワークロードを設計したりする組織の場合、次のプラクティスによってプロセスを簡素化し、リスクを軽減できます。
アプリケーションの移行は、特にオンプレミス環境からクラウドにアプリを移動する場合に課題となる場合があります。ただし、いくつかの計画と準備により、より簡単かつシームレスにすることができます。
計画フェーズには、次のアクションが含まれます。
ポートフォリオ評価– 組織の現在のアプリケーションを評価して、クラウド移行に最適なアプリケーションを特定します。関連する基準には、アプリケーションの移行によるビジネス価値、複雑さ、技術的に実現可能かどうかなどが含まれます。
必要な変更の評価– どのアプリケーションを再設計、リファクタリング、または再作成する必要があるか、またその方法に注意してください。これには通常、アプリをマイクロサービスに分割する方法やコンテナを実装する方法などを特定することが含まれます。
クラウド プロバイダーのエンゲージメント- アプリケーションの移行に使用するクラウド プロバイダーを決定します。この選択における重要な要素には、サポートのレベル、価格、提供されるサービス、コンプライアンスなどがあります。
計画が完了したら、適切なツールを使用して実際にアプリケーションを移行または構築します。
マイクロサービスに分割してコンテナ化– アプリケーションはマイクロサービスに分解され、すべての依存関係が含まれたコンテナにパッケージ化され、環境間での移植性と一貫性が確保されます。
Kubernetes を使用したオーケストレーションの実装– Kubernetes などのコンテナ オーケストレーション プラットフォームは、デプロイメント、スケーリング、およびライフサイクル操作を管理します。リソースの割り当てを自動化し、アプリケーションの回復力を維持します。
宛先サーバー アーキテクチャの準備– ワークロードを効果的に処理するには、速度、帯域幅、冗長性、およびセキュリティの要件に合わせてクラウド環境を構成する必要があります。
マイクロサービスと軽量コンテナ– マイクロサービスとコンテナは開発と運用を簡素化し、長期にわたるアプリケーションの管理、更新、改善を容易にします。
効率を高めるツールを選択する– テクノロジー スタックはアプリケーションの要件と一致する必要があります。一部のソリューションはデータ処理に最適ですが、他のソリューションはマイクロサービスの作成と管理に適しています。
既存のアプリケーションを移行する場合でも、新しいアプリケーションを導入する場合でも、ベスト プラクティスによって長期的な回復力が確保されます。
生産性向上のための CI/CD – 継続的インテグレーションにより開発者は常に最新のコードで作業でき、継続的デリバリーにより本番環境への展開が自動化されます。これにより、コミュニケーションが改善され、バグが削減され、市場投入までの時間が短縮されます。
IaC を使用した不変のインフラストラクチャ - コードとしてのインフラストラクチャは、リソース管理を自動化および標準化し、予測可能で安定したデプロイメントを保証します。IaC は、既存のインスタンスを変更するのではなく、新しいインスタンスを作成することで、安全性と効率性を向上させます。
サーバーレスで管理オーバーヘッドを排除- サーバーレスにすることで、サーバーを直接管理する必要がなくなります。開発者は消費したリソースに対してのみ支払い、スケーリングは高速で、コンプライアンス/セキュリティ機能が組み込まれていることがよくあります。
セキュリティを優先– 開発全体にわたって、アクセス制御、暗号化、ネットワーク セキュリティ、侵入検知を統合します。「シフトレフト」のセキュリティ アプローチにより、最初から回復力が確保されます。
問題を迅速に検出するための可観測性- アプリケーションとインフラストラクチャ全体のログ、メトリック、トレースを収集し、障害や脆弱性をリアルタイムで診断します。
最適化された通信のためのサービス メッシュ– サービス メッシュはサービス間の通信を簡素化し、開発者が複雑なネットワークの詳細を管理するのではなく、機能の構築に集中できるようにします。
クラウド ネイティブ環境でのテスト- 本番環境への移行前に重要なコンポーネントを展開し、包括的にテストします。
データ移行- 整合性と一貫性を維持しながらアプリケーション データをクラウド ストレージに移動し、新しい環境で正しく実行されるようにアプリケーションを再構成します。
継続的な監視– 展開後は、パフォーマンス、スケーラビリティ、リソース割り当てを継続的に監視します。どの段階でも問題が発生する可能性があり、アプリケーションが新しいクラウドベースの環境で安定していると確信できるまでには数週間かかる場合があることに注意してください。
クラウド コンピューティングにより、IT 運用 (Ops) チームとソフトウェア開発 (Dev) チームのパートナーシップである DevOps の時代が到来しました。プロセスの統合だけでなく、コラボレーションと効果的なコミュニケーションにも重点を置いています。クラウドで拡張し、オンデマンドでリソースを簡単かつシームレスにプロビジョニングする機能により、多くの小さな反復を伴いながら高速で効率的なアプリケーション開発、テスト、および展開を重視するアプローチである DevOps が可能になりました。
組織がアプリケーションとコンピューティングにクラウド ネイティブ アプローチを採用すると、継続的インテグレーション (CI) と継続的デリバリー (CD) のメリットも得られ、回復力、監視性、拡張性、管理性に優れたアプリケーションを実現できます。
クラウド コンピューティングが DevOps への道を開いた一方で、DevOps は高度な自動化とソフトウェア開発と IT 運用の連携強化を通じて、クラウドの進化にも貢献しました。DevOps プラクティスはクラウドで繁栄することができ、今日の激しい市場で競争力を維持したい組織にとって、クラウド ネイティブ アプリケーションの開発は急速に不可欠になりつつあります。
Nutanix は、今日の組織が直面している最新のインフラストラクチャの課題を理解しており、それらの困難を軽減してビジネスの成功を支援するソリューションを開発しました。当社では、クラウドでの新しいアプリケーションの構築と展開、および既存のアプリケーションのクラウドへの移行を簡単にするハイパーコンバージド インフラストラクチャ(HCI) とハイブリッド マルチクラウド ソリューションを提供しています。
Nutanix Kubernetes Platform (NKP ™ )を使用すると、ハイブリッド、マルチクラウド、オンプレミス環境全体でコンテナ管理が容易になり、市場投入までの時間を短縮し、より迅速にイノベーションを実現できます。Nutanix Data Services for Kubernetes (NDK ™ )を追加すると、クラウドネイティブ環境向けに特別に設計されたさまざまな高度なデータ サービスが利用できるようになります。2 つのソリューションを併用することで、次のことが可能になります。
アプリケーションの開発を迅速化
自動化による開発、テスト、デプロイの簡素化
API と GitOps ワークフローによるプラットフォームエンジニアリングを即座に実現
1 つの画面から全てのクラスタと環境に関する深い洞察を得る
厳格なセキュリティ基準を満たすように設計されたエンタープライズクラスのセキュリティ機能
クラウドネイティブアプリケーションをアプリケーションレイヤーで制御
クラウドネイティブアプリケーションのプロビジョニングと運用を簡素化して統一
その他多数
クラウド ネイティブは、速度、スケーラビリティ、回復力を重視したモジュール型アーキテクチャを使用してアプリケーションを構築および実行するアプローチです。マイクロサービス、Linux コンテナ、Kubernetes などのオーケストレーション ツールを活用して、動的なクラウド環境全体で頻繁かつ独立した更新と迅速なイノベーションを実現します。
クラウド ネイティブ アプリケーションは、コンテナー、マイクロサービス、API、Kubernetes などのオーケストレーション ツールを使用して、クラウド環境向けに特別に設計されています。クラウド対応アプリは、クラウド用に再ホストまたはリファクタリングされた従来のアプリケーションであり、多くの場合、真のクラウド ネイティブ ソリューションと比較すると、モノリシックな依存関係と限られた柔軟性が保持されます。
クラウド ネイティブは、継続的な配信、迅速なスケーリング、運用の回復力を実現することで、デジタル変革を加速します。企業にとって、これはイノベーション サイクルの高速化、ダウンタイムの削減、ベンダー ロックインなしでプライベート、パブリック、ハイブリッド マルチクラウド環境全体でワークロードを実行できる柔軟性を意味します。
クラウド ネイティブ アーキテクチャは、継続的インテグレーションとデリバリー (CI/CD)、自動テスト パイプライン、コードとしてのインフラストラクチャをサポートすることで、DevOps と連携します。これらの機能により、IT チームは信頼性の高い更新を頻繁にプッシュし、ハイブリッドおよびマルチクラウド環境全体でアプリケーションのライフサイクルをシームレスに管理できます。
Kubernetes は、クラウド ネイティブ アプリケーションのオーケストレーション レイヤーであり、コンテナの展開、スケーリング、負荷分散、自己修復を自動化します。これにより、マイクロサービスがクラスター全体で効率的に実行されるようになり、エンタープライズ規模の複雑な分散アプリケーションを管理するために不可欠になります。