クラウドネイティブ
クラウドネイティブとは
クラウドネイティブとは、アプリケーション開発におけるソフトウェアアプローチの一つで、その特性、および拡張性と信頼性に優れた高性能な基礎となる開発手法を指し、アプリケーションやサービスをクラウドアーキテクチャーに適合させるために使用されます。
企業がクラウドネイティブを使用する理由
従来のアプリケーション開発サイクル (ウォーターフォールモデルなど) では、プロセス全体で遅延が生じがちです。一方、クラウド環境は、アプリケーション開発者が、分析から実装、テスト、メンテナンスに至るまで、相乗的に作業することを可能にしました。
企業と開発者にとってのメリットは、開発期間の短縮だけでなく、コストの大幅削減にもあります。クラウド上にプロビジョニングするステージング環境は、セットアップが簡単で、オンプレミス環境に比べて安価です。クラウド環境では、自動化された一連のツールを利用して、タイムリーなデバッグやコードの整合性の問題解決を迅速に行うことができ、複数デバイスでの同時テストも可能です。アップデートや継続的なメンテナンスはバックグラウンドで展開されます。
クラウドネイティブのメリット
クラウドネイティブアーキテクチャーの革新的な力は、企業に次のようなメリットをもたらします。
- 独立性: クラウドネイティブの場合、企業は複数のクラウドプロバイダーやクラウドサービスを活用することで特定のベンダーへのロックインを回避できます。このような独立性により、アプリケーションの各種コンポーネントに最適な最もコスト効率の高いクラウドソリューションを柔軟に選択することが可能になります。また企業は、クラウド環境やオンプレミスインフラストラクチャ間でワークロードをシームレスに移行できます。
- 耐障害性: 組み込みのフォールトトレランスおよびディザスタリカバリメカニズムにより、アプリケーションの耐障害性が高くなります。分散型のアーキテクチャーと自動スケーリングを使用するクラウドネイティブアプリケーションは、リソースを割り当て直してサービスの可用性を維持することにより、障害やトラフィックの急増にシームレスに対処できます。耐障害性は、レプリケーション、ロードバランシング、フォールトトレラントな設計パターンによって実現されます。
- 標準ベース: クラウドネイティブアーキテクチャーは、業界標準の手法とフレームワークに従って相互運用性と互換性を確保します。企業は、コンテナオーケストレーション用のKubernetesなどのオープン標準に従うことでベンダーのツールやサービスを活用できますが、それによってポータビリティが向上し、ネイティブクラウド環境におけるシームレスな統合とコラボレーションが可能になります。
- ビジネス・アジリティ: クラウドネイティブによって迅速なアプリケーションの開発と展開が可能になり、企業はビジネスニーズの変化にすばやく対応できます。マイクロサービスのようなクラウドネイティブアーキテクチャーは、イテレーションを加速させたり、個別のスケーリングを可能にしたり、メンテナンスを容易にしたりしますが、企業は、このような柔軟性によって強化された機能や更新をより頻繁にアプリケーションに組み込めるようになり、市場で高い競争力を得ることができます。
- 自動化: クラウドネイティブアーキテクチャーは、拡張、展開、監視、管理で自動化を活用して手作業を減らします。Infrastructure as Code (IaC) ツールやKubernetesなどのオーケストレーションプラットフォームは、インフラストラクチャのプロビジョニング、コンテナの展開、自動スケーリング、サービスの監視といったタスクの自動化に役立ちますが、自動化によって展開と管理のプロセスが簡素化されてその時間が短縮されるため、整合性が確保されてヒューマンエラーが減り、より価値の高いタスクにリソースを投入できるようになります。
- ダウンタイムなし: クラウドネイティブアプリケーションは、ダウンタイムを伴わない展開と自動スケーリングで継続的な可用性を実現することが可能です。組織は、ローリングアップデート、ブルーグリーンデプロイメント、カナリアリリースなどの手法を活用することにより、エンドユーザーの作業を中断させることなくアプリケーションの更新や変更を行えます。さらに、クラウドネイティブプラットフォームなら、必要に応じてリソースを動的にスケーリングできるため、トラフィックやワークロードが増加したときでも高可用性が確保されます。
クラウドネイティブアプリケーションの開発方法
クラウドネイティブアプリケーションを構築、維持するには、アプローチを見直し、クラウドネイティブアーキテクチャーの原則を理解する必要があります。開発者とITオペレーションのコラボレーションにより、リスクを抑えた増分更新の一貫した提供と、継続的なフィードバックを実現できます。
クラウドネイティブアプリケーションの開発は、依然として従来のソフトウェア開発ライフサイクルと多くの点で共通しています。計画、分析、設計など、基本的なことはすべて一貫しています。プロトタイピング、アルファテスト、ベータテストを経て、最終的に展開します。しかし、レイヤー間のシームレスなインテグレーションとシナジーにより、10年前には不可能だったスピードと多様性が実現されています。
他のアプリケーションと同様に、コードはまだ大量の行を書かなければなりませんが、リアルタイムのデバッグツールとデータ整合性ツールによって、開発のスピードとアジリティが大きく変わりました。複数のチームが、世界のどこからでも、コードの異なる (または同じ) 部分に同時に取り組むことができます。また、テスト用バージョンのコンパイルは、クラウドの処理能力に委ねられ、チームの他のメンバーとほぼ瞬時に共有されます。
一般的なクラウドベースアプリケーションには、「スモールバッチ思考」のメリットがあります。この場合、複数のチームメンバーは個別の小さなタスクやプロセスに集中し、それらを管理およびコンパイルして、完了した時点でアプリケーションに反映させます。クラウドでのアプリケーション開発は、スピード、コラボレーション、オンラインツールなどのメリットに限らず、スケーラビリティ、アジリティ、セキュリティの面でも開発者に評価されています。
クラウドネイティブと従来のアプリケーション開発の比較
クラウドネイティブアプリケーションの最も重要な点は、展開の速さと、エンドユーザーの互換性の大幅な向上の2点です。開発者は、異なるオペレーティングシステムの複数バージョンに対する整合性や互換性を予測する必要がなくなりました。デスクトップやモバイルのOSは、ほぼ毎日のように更新されるようになっており、数回前の更新が原因で信頼性や安定性、さらには互換性が損なわれることもあります。
ネイティブではないブラウザーベースのアプリケーションがクラウドから提供されることで、開発者は、ユーザーが互換性のあるブラウザーを使用している限り、ハードウェアやオペレーティングシステムの互換性を気にする必要がなくなります。オペレーティングシステムやブラウザーにもクラウドベースの展開によるメリットがあり (またユーザーはバックグラウンドでの更新を選択することが多く)、ハードウェアやオペレーティングシステムのあらゆる構成を想定して懸念することはほぼ不要です。
2つ目の主なメリットは、更新を迅速かつシームレスに展開できることです。繰り返しになりますが、ユーザーは多くの場合、バックグラウンドでの実行を選択します。実際、ほとんどの人は、たまに通知を受け取るだけで、気に留めてもいません。大規模でモノリシックなアプリケーションでは、通常、更新以前にかなりの数の変更 (およびテスト) が必要となります。すべてがクラウドのスピードで進行していく中で、開発者とユーザーの両方に対するこれらのメリットは重要です。
最後に、デバイスからデバイスへ、職場から自宅へ、あるいはタブレットからPCへと移動できることは、開発者やそのビジネスだけでなく、ユーザーにとっても非常に大きな柔軟性をもたらします。
クラウドネイティブが重要である理由
クラウドネイティブアプリケーションのメリットは、主に開発とリリースのスピード、コストの削減、管理のしやすさにあります。信頼性の高い安定したビルド、無限のスケーラビリティ、自動プロビジョニングと相まって、クラウドネイティブは、アプリケーションの作成、テスト、更新、展開の方法において重要なステップとなっています。
クラウドネイティブが生産性、安定性、スピードを向上
クラウドを利用している企業にとって、ネイティブアプリケーションは、レガシーアプリケーションやローカルアプリケーションと比較して、従業員の生産性を大きく向上させます。アプリケーションを最新に維持することは簡単で、自動化されており、インフラストラクチャ管理もはるかに簡単になります。信頼性、スピード、コスト削減による、非常に大きなメリットがあります。最後に、クラウドネイティブアプリケーションでは、ユーザーが必要に応じて、追加のコンピューティングリソースに動的にアクセスできます。負荷が特に高いプロセスで多くのストレージやCPUコアが必要になった場合、クラウド管理ソフトウェアにより簡単に追加できます。
レガシーモデルのアプリケーションは制約が多い
クラウドベースアプリケーションへのデジタルトランスフォーメーションが進化し続ける中、レガシーモデルのアプリケーションに固有の制約がますます明らかになってきています。また、モデルレンダリングやオーディオビジュアル/グラフィック制作などのアプリケーションがさらに大量のリソースを必要とするようになる中、クラウド経由で必要なコンピューティングパワーを利用できることの魅力が増しています。
クラウドネイティブの使用方法
最新のクラウドネイティブアプリケーションの例は、身近にあります。ノートパソコンでさえ、ターミナルとインターネット接続に少し機能を加えただけで提供されるようになり、ファイルストレージやアプリケーションはほぼ完全に仮想化されています。
ブラウザーベースのメールや生産性アプリケーションが、クラウドネイティブアプリケーションの好例です。ワープロや表計算のための専用のデスクトップアプリケーションから移行するユーザーが増え、有名なソフトウェアパッケージであっても、完全にブラウザーからアクセスするようになりました。
開発者やITプロフェッショナルにとって、この移行によるメリットはさらに大きなものでした。最近のクラウドアーキテクチャーでは、機能が大幅に拡張され、多くのプロセスがクラウドに委ねられるようになっています。AIを活用した分析とツールにより、ローカルリソースが解放され、メンテナンスが非常に容易になります。
表計算の仕上げ、メールのチェック、アプリケーションの開発とテスト (あるいは休憩時のオンラインゲーム) など、クラウドネイティブアプリケーションは、日々新しい方法でユーザーやビジネスに力を与えています。
クラウドネイティブアーキテクチャーのコンポーネント
クラウドネイティブアーキテクチャーでは、マイクロサービス、コンテナ、オーケストレーション、オブザーバビリティがシームレスに融合してアプリケーション開発の未来を切り開きます。
- マイクロサービス: クラウドネイティブアーキテクチャーは、アプリケーションを個別に開発、使用、スケーリングできる独立したサービスに分割します。マイクロサービスは特定のビジネス機能に重点を置き、APIを介して他のマイクロサービスとやり取りしますが、このようなモジュラーアプローチは、各マイクロサービスを必要に応じてスケーリングできるようにすることにより、保守性を高めて迅速な開発を可能にし、拡張性を向上させます。
- コンテナ: クラウドネイティブアプリケーションは、環境全体に整合性と拡張性をもたらす軽量のポータブルなコンテナにパッケージ化されます。コンテナは、アプリケーションとその依存関係をカプセル化して隔離し、基盤となるクラウドネイティブインフラストラクチャを問わない一貫した実行を可能にします。そしてこのようなポータビリティによってアプリケーションの展開と管理が簡素化され、開発、テスト、本番を含むすべての環境の整合性が向上して迅速なスケーリングが可能になります。
- オーケストレーション: ネイティブのクラウドプラットフォームは、Kubernetesなどのオーケストレーションツールを使用してコンテナ化されたアプリケーションの展開、スケーリング、管理を自動化し、コンテナが適切なノードに展開されてそれぞれのライフサイクルとヘルスを管理するようにします。オーケストレーションはアプリケーションの展開を簡素化し、リソースの使用を効率化して自動拡張と自動修復を可能にします。
- オブザーバビリティ: クラウドネイティブアーキテクチャーは観察に重点を置いており、ログ収集、監視、追跡ツールでアプリケーションの動作とパフォーマンスに関する有益な情報を提供します。オブザーバビリティは問題の特定と診断をサポートし、クラウドネイティブアプリケーションの正常性と信頼性を確保しますが、このようなオブザーバビリティの手法により、クラウドネイティブアプリケーションのプロアクティブな監視、効率的なデバッグ、継続的な最適化が可能になります。
クラウドネイティブ開発とは
クラウドネイティブ開発とは、クラウドネイティブアプリケーション開発の一連の手法を指し、アジャイル開発、DevOps、継続的デリバリ手法を特徴としています。
- アジャイル開発: アジャイル開発は状況に応じたプランニングを促進し、機能横断型チームが開発期間にわたって緊密に連携するようにします。プロジェクトをスプリントと呼ばれる管理可能な小さいセグメントに分割することに重点を置いており、このようなセグメントでは、機能の開発、テスト、デリバリが短いサイクルで行われます。顧客満足、継続的なフィードバック、そして変化への迅速な対応に重点が置かれるため、企業は変化し続けるユーザーのニーズを満たす質の高いソフトウェアを提供できます。
- DevOps: DevOpsは、ソフトウェア開発 (Dev) とIT運用 (Ops) を融合させてコラボレーションを促進し、プロセスを合理化してソフトウェアデリバリを自動化します。DevOpsは、開発チームと運用チームがソフトウェア開発ライフサイクルでシームレスに連携できるよう、両チーム間のサイロを解消することを目指すものであり、自動化、継続的インテグレーション、継続的デリバリ、Infrastructure as Codeを促進します。そしてそれによって効率が向上し、手作業によるエラーが減ってソフトウェアアップデートの提供が迅速化されるため、組織はコラボレーションと共同責任の文化を育んで、より確実かつ迅速にソフトウェアを提供できるようになります。
- 継続的デプロイ: 継続的デプロイは、本番環境にソフトウェアアップデートを展開するプロセスを自動化することに重点を置くものであり、小規模かつ頻繁な増分でソフトウェアの構築、テスト、展開を行って、ソフトウェアが常にリリース可能な状態になるようにします。その一方、継続的デリバリの目的は、市場投入までの時間の短縮、ソフトウェアの品質の向上、ソフトウェアのデリバリパイプラインの効率化にあります。
クラウドネイティブ展開とは
クラウドネイティブ展開は、クラウドネイティブアプリケーションを本番環境に展開するプロセスです。クラウドネイティブ展開の重要な側面としては、次のようなものが挙げられます。
- Infrastructure as Code (IaC): IaCは、バージョン管理、自動化、再現性を維持するために、コードを使用してインフラストラクチャリソースの定義と管理を行います。JSONやYAMLなどの宣言型言語でインフラストラクチャのニーズを特定してリソースの展開と構成を自動化するとともに、ベストプラクティスに従ってインフラストラクチャコンポーネントの拡張性、セキュリティ、保守性を確保します。
- 継続的デプロイ: 継続的デプロイでは、コードの変更が自動的に実行、テストされて本場環境に伝達されるため、アプリケーションが常に最新の状態に保たれるうえ、すべての問題が修正されます。GitLab CI/CDとJenkinsでCI/CDパイプラインを作成して構成、ビルド、テスト、展開を行い、DockerやKubernetesなどのCI/CD向けのテクノロジーで展開中に問題を特定して解決できます。
- 自動スケーリング: 自動スケーリングは、アプリケーションが使用するリソースの数を必要に応じて自動的にスケールアップまたはダウンする機能であり、この機能を使用することでアプリケーションを効率的に稼働させ、トラフィックの急増に対処できます。メモリ使用量、CPU消費量、リクエストレートなどの評価基準に応じてスケーリングの計画を策定し、事前定義済みのしきい値に応じたクラスターの自動スケーリングでリソースをスケーリングするとともに、パフォーマンスとリソースの使用率を監視できます。
クラウドネイティブセキュリティとは
クラウドネイティブセキュリティの重要な側面としては、次のようなものが挙げられます。
- ゼロトラストセキュリティ: このモデルでは、ネットワーク周辺内外のどのユーザーやデバイスもデフォルトで信頼できないと仮定します。これには、アクセス制御、ID検証、認証メカニズム (多要素認証) を適用してリソースとアプリケーションを保護することが含まれ、IDおよびアクセス管理 (IAM) ソリューション、暗号化、セキュアな通信プロトコルをはじめとするその他いくつかの信頼できる手法で移動データと蓄積データの安全を確保します。
- Infrastructure as Code: IaCは、インフラストラクチャリソースの管理とプロビジョニングに対する標準化および自動化されたアプローチを提供します。セキュリティ設定をコードとして指定してインフラストラクチャリソース全体にわたるセキュリティ手法を実装し、セキュリティパッチとセキュリティ強化のためのバージョン管理を更新したり維持したりできます。また、ボトルネックを認識して解決するためにセキュリティテスト (侵入テストと脆弱性アセスメント) を実施することが欠かせません。
- 継続的監視: 継続的監視では、アプリケーションとインフラストラクチャのセキュリティ脅威と脆弱性をスキャンすることにより、アプリケーションとインフラストラクチャの途切れることのないセキュリティを実現します。組織はIDPS (侵入検知および防止システム) ツールとSIEM (セキュリティ情報イベント管理) ツールを使用して脅威を検出し、信用できないアクティビティに関するアラートを受け取ることができます。
クラウドネイティブサービスとは
クラウドネイティブサービスは、アプリケーションのニーズに合わせてカスタマイズされる幅広いサービスを包含します。重要なサービスとしては、次のようなものが挙げられます。
- コンテナレジストリ: コンテナレジストリは、コンテナイメージの保存と管理のための一元的なレポジトリを提供し、開発者がコンテナイメージを保存、バージョン化、分散できるようにして整合性を確保するとともに、さまざまな環境へのコンテナ化されたアプリケーションの展開を促進します。多くの場合、コンテナレポジトリには、アクセス制御、イメージスキャン、コンテナオーケストレーションプラットフォームとの統合などの機能が含まれます。
- 通知: 通知サービスにより、ユーザーやシステムへのリアルタイムのアラート、メッセージ、または通知が可能になります。これらのサービスはタイムリーなコミュニケーションを促進するものであり、システムイベント、アプリケーションアップデート、ユーザーエンゲージメントなどのさまざまな目的で通知を送信するために使用できます。通知サービスには多くの場合、メール、SMS、プッシュ通知、Webhookなどの複数の配信チャネルが用意されています。
- ストリーミング: ストリーミングサービスは、リアルタイムのデータ処理とデータ分析を可能にします。ストリーミングサービスは、組織がスケーラブルかつ効率的な方法で継続的なデータストリームからデータを取り込み、それらを処理して有益な情報を引き出せるようにするものであり、多くの場合、リアルタイム分析、イベント主導型のアーキテクチャー、IoTのデータの処理、および低レイテンシのデータ処理を必要とするインタラクティブなアプリケーションの構築に使用されます。
- コンテナエンジン: Kubernetesなどのコンテナエンジンは、コンテナ化されたアプリケーションの展開、スケーリング、管理を自動化するオーケストレーションプラットフォームであり、スケジュールを設定してマシンのクラスター全体にコンテナを分散するのに必要なインフラストラクチャとツールを提供します。これにより、高可用性、ロードバランシング、効率的なリソースの使用が実現します。コンテナエンジンは、需要に基づいてコンテナのライフサイクル管理、サービス検出、スケーリングに対処します。
- 機能: Function as a Service (FaaS) プラットフォーム (サーバーレスプラットフォーム) により、開発者は基盤となるクラウドネイティブ インフラストラクチャを管理することなく、個別のコードユニットとして機能を展開して実行できます。機能はイベント主導型であり、需要に基づいて自動的にスケーリングされます。このようなサーバーレスモデルでは、開発者はサーバーをプロビジョニングしたり管理したりすることなく、特定の機能を実装するためのコードの記述に専念できます。機能は通常、イベントの処理、データの変換、サーバーレスアーキテクチャーの構築に使用されます。
クラウドネイティブの未来
クラウドネイティブは、今もなお比較的新しいテクノロジーですが広く普及しつつあり、クラウドネイティブアーキテクチャーを導入する企業が増えているため、この領域ではさらなるイノベーションが予想されます。クラウドネイティブのイノベーションと成長の基盤は整っており、クラウドネイティブアーキテクチャーを取り入れる企業が増えつつある中、サーバーレスコンピューティング、エッジコンピューティング、そして機械学習や人工知能のような新興テクノロジーの導入などの領域で進歩が見られると予想されます。
さらに、テクノロジープロバイダーは絶えずサービスを拡張してより専門的なサービスを提供しているため、組織はさまざまなツールやプラットフォームを利用できるようになります。そしてこのような状況がクラウドネイティブテクノロジーの導入と進化を後押しすることになると思われるため、全体としてクラウドネイティブの未来は明るく見えます。クラウドネイティブアーキテクチャーを導入する企業が増える中、この領域ではさらなるイノベーションと進展と予想されます。
HPEとクラウドネイティブ
HPEのGreenLakeとEzmeralの環境により、ITプロフェッショナルの業務が効率化され、容易になります。HPE GreenLakeは、事実上あらゆる種類のビジネスや組織向けの最適なアプリケーションのスイートとして急速に成長しており、オンプレミス、エッジ、またはあらゆる組み合わせで実行可能なas a serviceプラットフォームを通じて、デジタルトランスフォーメーションのための多様で弾力性のある基盤を提供します。
例えば、受賞歴のあるHPEのEzmeralは、人気の高いオープンソースのKubernetesを中心に構築されており、レガシーアプリケーションとクラウドネイティブアプリケーションの開発を統一するのに役立っています。Ezmeralは、開発者に対して、迅速な開発、スケーラブルなアーキテクチャー、コードのマージ、自動展開を可能にする、全く新しい方法をもたらしました。Ezmeral Data Fabricは、データサイロに終止符を打ち、世界中のエクサバイト級のデータを管理、分析することができます。
HPEのAruba Networkingも人気の高いアプリケーションで、最先端のインフラストラクチャ、エッジからクラウドまでの優れたインテグレーション、AI搭載のネットワーク監視/管理を提供します。最近追加されたAmpoolは、エンジニアやアナリスト向けの優れたSQL分析を提供します。HPE GreenLakeは、クラウドベースのデータセキュリティと完全性のすべてのメリットを提供するため、企業とその顧客の両方が、ベストインクラスのシームレスな双方向性を手に入れられます。