Cloudネイティブ
クラウド・ネイティブは、クラウド・コンピューティング・テクノロジを利用するアプリケーションを構築および実行するためのアプローチです。これには、クラウドネイティブのテクノロジーとプラクティスを使用して、Oracle Cloud Infrastructure(OCI)、他のクラウド・インフラストラクチャ、オンプレミスのデータセンターで実行できるスケーラブルで自己回復性のあるアジャイルなアプリケーションを設計、開発、導入することが含まれます。
クラウド・ネイティブは、スケーラビリティ、可用性、運用オーバーヘッドの削減など、クラウド・コンピューティングの利点を活用するように設計および進化しています。コンテナ、マイクロサービスおよびサーバーレス・アーキテクチャを使用し、DevOpsプラクティスを実装してソフトウェア配信を自動化および合理化します。
クラウド・ネイティブの目標は、変化するビジネス・ニーズに迅速に適応できるインフラストラクチャの柔軟性とスケーラビリティを組織に提供することです。この実装アプローチにより、より優れたユーザー・エクスペリエンスと信頼性を実現するだけでなく、市場投入までの期間を短縮し、敏捷性を高め、コストを削減できます。
拡張
クラウド・ネイティブの進化には、従来のモノリシック・アプリケーションから、クラウド環境で実行するように設計されたマイクロサービスベースのアーキテクチャへの移行が含まれます。この進化は、ソフトウェアの開発とデプロイメントにおいて、スケーラビリティ、信頼性、俊敏性を高める必要性によって促進されます。また、コンテナ、Kubernetes、DevOpsなど、クラウド・ネイティブ・アプリケーションをより効率的に構築、デプロイおよび管理できる最新のテクノロジおよびプラクティスの採用も含まれます。クラウドネイティブの未来は、自動化、セキュリティ、Infrastructure as a Service(IaaS)の分野における最新のテクノロジーとイノベーションによって形作られ続けると予想されています。
アーキテクチャ
クラウド・ネイティブ・アーキテクチャとは、スケーラブルで自己回復性があり、セキュアなクラウドベースのアプリケーションを構築およびデプロイするための一連の設計原則およびパターンを指します。これには、コンテナ、マイクロサービス、DevOpsなどの最新のテクノロジとプラクティスを使用して、クラウドベースのアプリケーションを設計および提供することが含まれます。
クラウド・ネイティブ・アーキテクチャでは、アプリケーションは、個別に開発、デプロイおよび管理できる小規模で独立した疎結合のサービスに分割されます。これらのサービスはAPIを使用して相互に通信し、コンテナを使用してパッケージ化およびデプロイされます。これにより、システム全体を中断することなく、簡単にスケーリング、管理、更新できるアプリケーションを構築できます。
クラウド・ネイティブ・アーキテクチャでは、アプリケーションとサービスをデプロイするための自動化された継続的デリバリ・パイプラインの使用も強調しています。これにより、新機能やバグ修正を迅速かつ簡単にデプロイし、アプリケーションのパフォーマンスと可用性を継続的に監視および最適化できます。
要約すると、クラウド・ネイティブ・アーキテクチャは、拡張性、自己回復性、安全性があり、クラウド・コンピューティングの利点を活用できるクラウドベースのアプリケーションを構築およびデプロイするのに役立ちます。
クラウド・ネイティブ・コンピューティング基盤
Cloud Native Computing Foundation(CNCF)は、クラウド・ネイティブ・コンピューティングに関連するオープンソース・プロジェクトおよびテクノロジをホストおよび促進する非営利団体です。この基盤は、クラウド・ネイティブ・テクノロジーの繁栄するエコシステムを構築し、その成長と採用を促進することを目的としています。
CNCFは、テクノロジーベンダー、ユーザー、開発者がクラウドネイティブプロジェクトでコラボレーションし、クラウドネイティブのテクノロジーと標準の開発を推進するための中立的なプラットフォームを提供します。CNCFがホストする一般的なプロジェクトには、Kubernetes、Prometheus、Envoy、Linkerdなどがあります。
CNCFは、Linux Foundationの支援のもとで運営され、クラウド・ネイティブ・テクノロジーの中立的かつベンダーニュートラルなホームを提供します。また、同財団は他の組織や業界団体と緊密に連携し、クラウドネイティブのベストプラクティスを推進し、クラウドネイティブコンピューティングの現状を推進しています。
CNCFの目標は、組織がクラウド・ネイティブ・テクノロジーの導入と使用を容易にし、さらにこれらのテクノロジーの長期的な持続可能性と成長を確保することです。コラボレーションとイノベーションのためのプラットフォームを提供することで、CNCFはクラウドネイティブコンピューティングの開発を推進し、その未来を形作るのに役立ちます。
クラウド・ネイティブとCNCF
クラウド・ネイティブとは、クラウドでスケーラブルなアプリケーションを構築および実行できる一連のプラクティスおよびテクノロジのことです。CNCFは、クラウド・ネイティブ・テクノロジーの開発をホストおよび促進するオープンソースのソフトウェア基盤です。つまり、CNCFはクラウド・ネイティブの動きの背後にある組織です。
クラウド・ネイティブを採用する理由
クラウド・ネイティブは現在のトレンドであり、クラウドにおける最新の技術イノベーションに合せて市場の需要があります。ニーズや目標に応じて、クラウドネイティブのメリットをさまざまな方法で活用できます。クラウド・ネイティブの利点は次のとおりです。
- スケーラビリティ:アプリケーションは、より多くのインスタンスを追加したり、仮想マシンのサイズを増やすことで垂直方向に拡張できます。
- 自己回復性:アプリケーションは、ロード・バランサおよび自動スケーリングを利用して、障害から自動的にリカバリし、増加したトラフィックを処理できます。
- コスト削減:クラウドネイティブなアプリケーションは、従量課金モデルを活用し、リソースを動的に割り当て、コストを削減し、効率を向上させることができます。
- 市場投入までの時間の短縮:継続的デリバリおよびDevOpsプラクティスを使用して、クラウドネイティブ・アプリケーションをより迅速に開発およびデプロイできます。
- セキュリティの向上:ネットワークのセグメンテーションや暗号化などのクラウドネイティブのセキュリティ機能を使用して、アプリケーションにセキュリティを組み込むことができます。
従来のアプリケーションよりもクラウド・ネイティブ
モノリシック・アプリケーションとも呼ばれる従来のアプリケーションは、オンプレミス環境で機能を提供するように構築されており、運用とメンテナンスのニーズを満たすために追加のアプリケーションが必要です。従来のアプリケーションよりもクラウドネイティブのメリットは、次のとおりです。
- スケーラビリティ:クラウドネイティブなアプリケーションは、ワークロードの容量需要の変化に応じて自動的にスケールアップおよびスケールダウンできるように設計されており、従来のモノリシック・アプリケーションよりもアプリケーションを柔軟かつコスト効率に優れています。
- 自己回復性: 1つ以上のコンポーネントが機能していないか使用可能でない場合でも、クラウドネイティブ・アプリケーションが独立して機能し続けることができるように、アプリケーションを小さい独立したコンポーネントに分割します。
- 柔軟性:クラウドネイティブ・アプリケーションをOCI、他のクラウド・プラットフォーム、オンプレミスにデプロイできるため、選択したインフラストラクチャの柔軟性が向上します。
- スピード:コンテナやマイクロサービスに似たクラウドネイティブ・テクノロジーにより、開発、テスト、導入サイクルの加速が可能になり、市場投入までの時間が短縮されます。
- コスト削減:クラウドネイティブ・アプリケーションは、クラウド・コンピューティングの従量課金モデルとコミットメント消費モデルを活用し、従来のオンプレミス・ソリューションと比較してインフラストラクチャとメンテナンスのコストを削減します。
フレームワーク
クラウド・ネイティブ・フレームワークは、クラウド・ネイティブ・アプリケーションの開発、デプロイおよび管理の構成要素を提供し、様々な業界の組織で広く採用されています。これらのテクノロジを活用することで、クラウド・コンピューティングの利点を活用し、最新のスケーラブルで回復力のあるアプリケーションを構築できます。
クラウド・ネイティブ・フレームワークは、クラウド・プロバイダからネイティブに実装できるモジュール、ライブラリ、パッケージおよびリポジトリであり、アプリケーション・コードと統合してロードすることもできます。一般的なクラウド・ネイティブ・フレームワークには、次のようなものがあります。
- Kubernetes:コンテナ化されたアプリケーションのデプロイメント、スケーリングおよび操作を自動化するためのオープン・ソースのプラットフォーム。
- Istio:マイクロサービスのネットワーク・トラフィック管理、可観測性およびセキュリティを提供するオープンソース・サービス・メッシュ。
- Knative: Kubernetesでサーバーレス・アプリケーションを構築、デプロイおよび管理するためのオープンソース・フレームワーク。
- Envoy:ロード・バランシング、トラフィック管理および可観測性を提供するクラウドネイティブ・アプリケーション用のオープンソース・サービス・プロキシ。
- Prometheus:クラウド・ネイティブ・アプリケーションのオープンソースのモニタリングおよびアラート・システム。
- Fluentd:クラウド・ネイティブ・ロギングおよび分析用のオープンソース・データ・コレクタ。
- OpenFaaS: Kubernetesでサーバーレス関数を構築およびデプロイするためのオープンソース・フレームワーク。
- Jaeger:クラウドネイティブ・アプリケーション用のオープンソースのエンドツーエンドの分散トレース・システムです。
- OpenTracing:クラウドネイティブ・アプリケーションの分散トレースのためのオープンソースのAPIおよびインストゥルメンテーション標準。
クラウド・ネイティブ・フレームワークは、このリストに限定されません。リストは参照専用です。
テクノロジ
クラウド・ネイティブ・テクノロジは、消耗品ソリューションを構築するためのクラウド・ネイティブ・フレームワークに対する抽象化のもう1つのレイヤーです。これらは、多くの場合、クラウドで提供されるPlatform as a Service (PaaS)と呼ばれ、メンテナンスおよび操作のオーバーヘッドを削減します。一般的なテクノロジは次のとおりです。
- コンテナ:あらゆるインフラストラクチャ上で実行できる軽量でポータブルな自己完結型のソフトウェア・ユニット。
- Kubernetes:オープン・ソース・プラットフォームで、コンテナ化されたアプリケーションのデプロイメント、スケーリング、オーケストレーションおよび管理を自動化します。
- マイクロサービス:アプリケーションが独立して開発、デプロイおよび管理できる小規模な独立したコンポーネントに分割されるソフトウェア・アーキテクチャ設計。
- サーバーレス・コンピューティング:クラウド・プロバイダがインフラストラクチャを管理し、アプリケーションの実行に必要なリソース容量を自動的に割り当てるコンピューティング・モデル。
- CI/CDパイプライン:コードを継続的に構築、テストおよびデプロイするための一連の自動化されたプロセス。
- サービス・メッシュ:サービス・インスタンス間の通信を柔軟、高速、信頼性を実現するマイクロサービス・アプリケーションの構成可能なインフラストラクチャ・レイヤー。
- ロード・バランサ:着信トラフィックをアプリケーションの複数のインスタンスに分散して、スケーラビリティと信頼性を向上させるコンポーネント。
- 自動スケーリング:アプリケーションが、需要の変化に応じてリソース使用率を自動的にスケーリングする機能。
クラウド・ネイティブ・テクノロジは絶えず進化しています。このリストは完全なリストではなく、参照専用です。
ベスト・プラクティス
ベストプラクティスを使用して、スケーラブルで自己回復性があり、セキュアで、より優れたユーザー・エクスペリエンスを提供できるクラウドネイティブ・アプリケーションを構築します。これらのプラクティスにより、クラウド・コンピューティングを導入し、運用オーバーヘッドの削減、市場投入までの時間の短縮、アジリティの向上など、そのメリットを活用することもできます。クラウド・ネイティブ・アプリケーションを構築するためのベストプラクティスは次のとおりです。
- マイクロサービス・アーキテクチャ:アプリケーションを、独立して開発、デプロイおよび管理できる小規模で独立した疎結合のサービスに分割します。
- コンテナ化:アプリケーションと依存関係をコンテナにパッケージ化して、一貫性のある移植可能なランタイム環境をアプリケーションに提供します。
- 自動デプロイメント:継続的インテグレーションや継続的デリバリ(CI/CD)パイプライン、Kubernetes、クラウドネイティブ・オーケストレーション・ツールなどのツールを使用して、アプリケーションのデプロイメントと管理を自動化します。
- 自己回復性とスケーラビリティ:自己修復、フェイルオーバー、自動スケーリングなどの手法を使用して、自己回復性とスケーラビリティを備えたアプリケーションを設計します。
- 可観測性: Prometheus、Grafana、トレース・ツールなどのツールを使用して、アプリケーションのパフォーマンスと動作を監視および測定します。
- セキュリティ:セキュリティのベストプラクティスとテクノロジーを実装して、暗号化の使用、セキュアな通信プロトコル、アクセス制御メカニズムなど、アプリケーションとデータを保護します。
- DevOpsの文化:開発、運用、セキュリティの各チームのコラボレーション、コミュニケーション、継続的な改善を重視するDevOps文化を採用します。
- クラウドに依存しない:クラウドに依存しないアプリケーションを設計し、あらゆるクラウド・インフラストラクチャまたはオンプレミスのデータ・センターで実行できるようにします。
設計パターン
クラウド・ネイティブ設計パターンは、スケーラブルで自己回復性があり、セキュアなクラウド・ネイティブ・アプリケーションを構築およびデプロイするのに役立ちます。これらのパターンに従うことで、クラウド・コンピューティングのメリットを活用し、ユーザー・エクスペリエンスを向上させることができます。
- マイクロサービス:モノリシック・アプリケーションを、独立して開発、デプロイおよび管理できる小規模で独立した疎結合のサービスに分割します。
- サービス・メッシュ: IstioやLinkerdなどのサービス・メッシュを使用してマイクロサービス間のネットワーク通信を実装し、トラフィック管理、セキュリティ、可観測性などの機能を提供します。
- 回路遮断器:回路遮断器パターンを実装して、カスケード障害を防止し、マイクロサービスの回復力を向上させます。
- APIゲートウェイ: APIゲートウェイを実装して、マイクロサービスへのアクセスを管理および保護し、外部コンシューマに単一のエントリ・ポイントを提供します。
- コンテナ化:アプリケーションと依存関係をコンテナにパッケージ化して、一貫性のある移植可能なランタイム環境をアプリケーションに提供します。
- 自動スケーリング:アプリケーション・インスタンスをオンデマンドで自動的にスケーリングし、パフォーマンス、信頼性、コスト効率を向上させます。
- ブルー/グリーン・デプロイメント:新しいアプリケーション・バージョンをパラレル環境にデプロイし、古いバージョンと新しいバージョン間のトラフィックを切り替えてダウンタイムを最小限に抑えます。
- カナリア・リリース:ユーザー・ベース全体にリリースする前に、テストおよび検証するユーザーのサブセットに新しいアプリケーション・バージョンを徐々にリリースします。
- ストラングラー・パターン:モノリシック・アプリケーションの一部を徐々にマイクロサービスに置き換え、中断とリスクを最小限に抑えます。
採用
クラウド・ネイティブを採用するには、人、プロセス、テクノロジーの変化に加えて、組織によるソフトウェア開発へのアプローチの文化的な変化が必要です。戦略的かつ効率的な方法でクラウド・ネイティブを採用することで、スケーラビリティ、信頼性、俊敏性の向上というメリットを実現できます。次の情報では、クラウド・ネイティブを採用するための一般的なステップについて説明します。
- 評価
- インフラストラクチャ、プロセスおよびアプリケーション・アーキテクチャの現在の状態を評価して、クラウド・ネイティブの準備状況のレベルを決定します。
- プランニング
- クラウド・ネイティブの導入に必要な結果、タイムライン、およびステップの概要を示すクラウド・ネイティブ戦略を作成します。
- パイロット
- パイロット・プロジェクトまたは単一のマイクロサービスで小規模から開始して、クラウド・ネイティブ・プロセスをテストし、テクノロジの経験を得ます。
- ツーリング
- コンテナ、Kubernetes、DevOpsツールなどのクラウドネイティブ・アプリケーションを構築および管理するための適切なツールとテクノロジーに投資します。
- 遷移
- マイクロサービスベースのアーキテクチャにアプリケーションを再設計し、モノリシックなアプリケーションをより小型で管理しやすいサービスに分解します。
- DevOps
- ソフトウェア・デリバリ・プロセスを自動化するために、継続的統合および継続的デリバリ(CI/CD)パイプラインを実装します。
- トレーニング
- クラウドネイティブの原則、プラクティス、ツールについて開発チームをトレーニングします。
- カルチャ
- 組織内のコラボレーションと実験の文化を育成し、チームが新しいテクノロジーとプロセスを試すことを奨励します。
- 操作
- クラウド・ネイティブの導入の有効性を監視して継続的に評価し、必要に応じて調整します。
実装
クラウド・ネイティブ実装には、一般的に2つのユースケースがあります。非クラウド・ネイティブ・アプリケーション・ワークロードは、すでに本番環境で実行されており、クラウド・ネイティブ・ツールとテクノロジーを使用して新しいアプリケーション・ワークロードを構築しています。どちらのシナリオにも、ビジネス・ニーズに基づくメリットとデメリットがあります。次の比較に基づいていずれかを選択できます。
シナリオ | 再設計 | 再書込み |
---|---|---|
複雑さ | 中程度 | 最小 |
コスト | 最小 | 最大 |
作業 | 最小 | 最大 |
柔軟性 | 最小 | 最大 |
選択肢 | 最小 | 最大 |
メンテナンス | 最大 | 最小 |
市場投入までの時間 | 最小 | 最大 |
クラウド・ネイティブの未来
クラウドネイティブ・テクノロジーの未来は、今後数年で成長し、ますます普及すると予想されています。企業がインフラストラクチャとアプリケーションにクラウドベースのソリューションを採用し続けるにつれ、クラウドネイティブ・テクノロジーの需要が増加します。次の情報では、クラウドネイティブ・テクノロジの主なトレンドについて説明します。
- マイクロサービス・アーキテクチャの導入の増加
- これにより、Kubernetes、Istio、Envoyなどのマイクロサービスをサポートするクラウドネイティブ・テクノロジーの採用が増加します。
- セキュリティとコンプライアンスにフォーカス
- クラウドに機密データが格納されるため、セキュリティとコンプライアンスは依然として大きな懸念事項です。組織は、セキュリティとコンプライアンスの要件を満たすことができるクラウドネイティブ・ソリューションを求めます。
- AI/MLとの統合
- クラウドネイティブ・ソリューションは、より優れたインサイトを提供し、プロセスを自動化するために、人工知能(AI)および機械学習(ML)テクノロジとますます統合されるようになります。
- ハイブリッド・クラウド・ソリューションの出現
- 組織は、オンプレミス・ソリューションとクラウドベースのソリューションのギャップを埋めることを目指し、ハイブリッド・クラウド・ソリューションの需要の増加につながります。
クラウドネイティブ・テクノロジは、今日のペースの速いビジネス環境に必要な俊敏性、スケーラビリティおよびコスト削減を引き続き提供します。
OCIのクラウド・ネイティブ・サービス
OCIは、次のようなさまざまなクラウドネイティブ製品を提供しています。
- Container Engine for Kubernetes(OKE): OCIでのコンテナのデプロイ、管理およびスケーリングを容易にするフルマネージドのContainer Engine for Kubernetesサービス。
- 機能:開発者がインフラストラクチャを管理しなくてもマイクロサービスを構築および実行できるようにするサーバーレス・コンピューティング・プラットフォーム。
- ロード・バランサ:受信トラフィックを複数のバックエンド・サービスに分散するための高可用性でスケーラブルなロード・バランシング・サービス。
- オブジェクト・ストレージ:大量のデータを格納および取得するためのスケーラブルで可用性の高いセキュアなオブジェクト・ストレージ・サービス。
- ブロック・ボリューム:コンピュート・インスタンスにアタッチされたデータを格納および管理するための永続的なブロック・ストレージ・サービス。
- Virtual Cloud Network (VCN):非常にセキュアでスケーラブルな仮想ネットワークで、アプリケーションとデータを分離して保護できます。
- データベース: Oracle Database、MySQLおよびPostgreSQLを含む複数のデータベース・エンジンのサポートを提供する完全管理型リレーショナル・データベース・サービス。
- 自律型トランザクション処理:高速で自動化された、非常にセキュアなデータベース・サービスを提供するフルマネージドのデータベース・サービス。
OCIのクラウドネイティブ製品では、セキュアでスケーラブルな環境でクラウドネイティブ・アプリケーションを構築、導入、管理できます。これらのサービスを使用すると、クラウド・コンピューティングの利点を活用し、より優れたユーザー・エクスペリエンスを提供できます。
クラウド・ネイティブの課題
クラウドネイティブ・テクノロジには、採用する前に考慮すべきいくつかの課題があります。
- 複雑さ:クラウドネイティブなソリューションは複雑で実装が困難な場合があり、管理には専門的なスキルと経験が必要です。
- セキュリティとコンプライアンス:クラウドネイティブ・ソリューションは強化されたセキュリティ機能を提供しますが、データ・プライバシや規制要件など、新しいセキュリティとコンプライアンスの課題ももたらします。
- 既存のシステムとの統合:クラウドネイティブなソリューションを既存のシステムと統合することは困難であり、膨大な時間、労力およびリソースが必要になります。
- コスト:クラウドネイティブ・ソリューションは、一部の分野ではコスト削減を提供しますが、既存のアプリケーションとデータをクラウドに移行するコストに加えて、専門的なスキルやインフラストラクチャの必要性など、追加のコストも発生する可能性があります。
- パフォーマンス:特に、要求の高いパフォーマンス要件を持つ大量のデータまたはアプリケーションを扱う場合、パフォーマンスはクラウドネイティブ・ソリューションの問題になる可能性があります。
- クラウド・プロバイダへの依存:クラウドネイティブ・ソリューションを採用する組織は、クラウド・プロバイダに大きく依存しているため、柔軟性を制限し、インフラストラクチャやアプリケーションを制御できます。
クラウドネイティブ・テクノロジが組織に適しているかどうかを決定する場合は、これらの制限を考慮してください。多くのメリットがありますが、すべての組織に最適なソリューションではない可能性があり、オンプレミス・ソリューションやハイブリッド・ソリューションなどの代替ソリューションがより適切である可能性があります。