クラウドネイティブコンピューティングは、アプリケーションの開発と配信のパラダイムです。これには、オープンソースのLinuxコンテナー、Kubernetes、マイクロサービスなど、いくつかのテクノロジーとアーキテクチャパターンが含まれます。クラウドネイティブコンピューティングは、チーム編成を含む、アプリケーションの開発と展開のライフサイクルのすべてのドメインで、スケーラビリティ、自動化、効率、およびシンプルさを強調します。このアプローチにより、ITプロフェッショナルは、クラウドにオンデマンドで迅速かつ簡単に展開できるアプリケーションを作成します。コンピューティングリソースのコストを節約します。
クラウドネイティブコンピューティングスタック
クラウドネイティブコンピューティングでは、連携するために、いくつかのモジュール式のコード、テクノロジー、およびシステムが必要です。 TheCloud NativeComputingFoundationのCloudNativeLandscapeインフォグラフィックには、使用可能なすべてのサービスとテクノロジーがカテゴリ別に表示されます。
クラウドネイティブコンピューティングスタックには多くのコンポーネントがありますが、見た目ほど複雑ではありません。クラウドネイティブは、オープンソースソフトウェアスタックを使用して、アプリケーションをマイクロサービスとしてデプロイします。各パーツを独自のコンテナにパッケージ化します。これらのコンテナを動的に調整して、リソースの使用率を最適化します。
クラウドネイティブコンピューティングは、動的クラウド上で実行されるコンテナーを使用します。コンテナや弾力性のあるクラウドがなければ、クラウドネイティブは存在しません。このオンデマンドアプローチにより、システム管理者と開発者は、アプリケーションのサービスの必要に応じて起動および停止するコンポーネントからアプリケーションを動的に実行できます。
クラウドネイティブプログラムは緩く結合されています 。システムコンポーネントは、実行可能な限り相互に依存しないように相互接続されています。要素は、お互いを直接知る必要はほとんどありません。コードは、特定のインフラストラクチャに組み込まれていません。クラウドネイティブソフトウェアの場合、要素はAPI、サービスメッシュ、ネットワークを使用して接続されます。
クラウドネイティブプログラムもステートレスです 。データとステータスを外部データベースに保存します。クラウドネイティブプログラムは、そのデータがどこにあるかを「認識」していません。データはどこにでも保存できます。必要なときにアクセスできることが重要です。
名前が示すように、クラウドネイティブプログラムはクラウド上で生きて死にます。それらはそこで開発されています。そこでステージングされ、テストされました。そこで保護され、デバッグされます。そこに配備されました。 CIとCDを介して絶えず改善されています。
クラウドネイティブアプリケーションの管理
クラウドコンピューティングシステムを管理するために、管理者はコンテナをKubernetesで調整します。 Kubernetesはクラウドネイティブコンピューティングに不可欠であると主張する人もいます。
アプリケーションはLinuxベースのコンテナ内で実行されます。 C++やJavaなどの古い開発言語を使用することはめったにありません。代わりに、クラウドネイティブアプリケーションは通常、Go、Node.js、Rust、RubyなどのWeb中心の言語を使用して作成されます。古い言語には何の問題もありませんが、クラウドネイティブプログラミングは柔軟性と相互運用性を強調しています。
これらの目標を推進するために、クラウドネイティブコンピューティングは、サーバーレスコンピューティングとマイクロサービスという2つの他の概念も利用しています。
サーバーレスコンピューティングでは、アプリケーションは、実行中のハードウェアやその管理方法について知る必要はありません。このソフトウェアは、サーバーレスプラットフォームが提供する機能を、他の知識を必要とせずに呼び出します。つまり、開発者は、アーキテクチャの問題(たとえば、サーバーに十分なRAMがあるかどうか)ではなく、アプリケーションのビジネスロジックに集中できます。
マイクロサービスは、APIエンドポイントを介して軽量で疎結合のサービスを提供します。これらは、Representational State Transfer(REST)orgRPCなどの軽量プロトコルによって接続されています。クラウドネイティブコンピューティングでは、データはJavaScript Object Notation(JSON)またはProtobufで表される傾向があります。モジュール式の基本的なサービスを提供します。これらをLinuxシェルプログラムに似ていると考えると役立つ場合があります。Linuxシェルプログラムは、クラウド向けの単一のサービスを提供します。