クラウド ネイティブという言葉は誰もが知っていると思います。しかし、「クラウド ネイティブとは正確には何なのか」と尋ねられたら、どのように答えますか? クラウドネイティブCloud Native Computing Foundation (CNCF) は、公式 Web サイトで次のように説明しています。
実際のところ、上記の定義はクラウド ネイティブが何であるかに関してまだ非常に曖昧です。ただし、上記の定義からいくつかの重要な情報を得ることができます。
これもわかりやすいですね。初期の頃は、企業がアプリケーションやサービスを立ち上げたい場合、マシンを購入してコンピュータ ルームを導入し、そのコンピュータ ルームのサーバーに独自のアプリケーションを導入する必要がありました。これは明らかにクラウド ネイティブではありません。結局のところ、クラウドはまだ開始されていません。 その後、多くのクラウドベンダーが登場し、クラウド環境を提供しました。現時点では、アプリケーションを展開する場合、独自のコンピューター ルームを構築する必要はなくなりました。クラウドベンダーから対応するデータセンター内のサーバーを購入するだけで、アプリケーションを展開できます。ただし、現時点では、アプリケーションはクラウド上にあるとしか言えず、アプリケーションはまだクラウド ネイティブ アプリケーションではありません。 これも上で述べた通りです。アプリケーションはクラウド環境にデプロイされますが、これはクラウド ネイティブ アプリケーションであることを意味するものではありません。現時点では、アプリケーションはクラウド ベンダーの機能を十分に活用しておらず、スケーラビリティ、フォールト トレランス、および可観測性も備えていないためです。 12要素の適用以前、クラウドネイティブとは何かを紹介しました。それでは、12 要素アプリケーションとは何かについて説明しましょう。 12 ファクター アプリは、有名な PasS プラットフォーム Heroku の CTO である Adam Wiggins 氏によって提案されました。これはもともと、クラウド上で実行されるアプリケーションが従う必要がある 12 のベスト プラクティスを指していましたが、クラウド ネイティブ アプリケーションにも適用されます。 1. ベンチマークコードベンチマーク コードとは、日常の開発と展開において、開発、テスト、オンラインなど多くの環境が存在する可能性があり、同じベンチマーク コードが必要になることを意味します。ただし、ここで主に重点が置かれているのはオンラインです。クラウド ネイティブ アプリケーションのデプロイメントはいつでもどこでも動的に拡張できるため、オンライン環境がベースライン コードに基づいてデプロイされ、1 セットのコードに対して複数のデプロイメントを実装する必要があるためです。 これもわかりやすいですね。分散アーキテクチャと同様に、複数のインスタンスが同じコードでデプロイされます。 2. 宣言的依存関係宣言的依存関係とは、依存関係を明示的に宣言する必要があることを意味します。現在、依存関係管理ツールは数多く存在します。たとえば、Java プロジェクトには Maven と Gradle が使用され、他の言語のプロジェクトにも他のパッケージ管理ツールが使用されます。 開発に必要なクラス ライブラリの明示的な依存関係に加えて、システム レベルのツールやライブラリにも依存する必要がある場合は、暗黙的な依存関係ではなく宣言的な依存関係も作成する必要があります。これは、クラウドネイティブ環境では、コンテナに基づいてアプリケーションをデプロイするためです。これらの依存関係を明示的に宣言しないと、同一のコンテナ イメージを作成できず、サービスが利用できなくなる可能性があります。 3. 構成管理アプリケーションを正常に起動するには、正しいコードに加えて、正しい構成も必要です。クラウドネイティブアプリケーションでも同様です。環境に応じて異なる構成が必要です。環境が同じであれば、構成も同じである必要があります。また、構成をコードから分離する必要があり、これも理解しやすいです。結局のところ、アプリケーション コードを複数の環境にデプロイする必要があります。構成が同じであれば、展開する方法はありません。 構成管理は、Diamond やその他の構成センターなどのミドルウェアを使用して実行できます。構成センターでは、リアルタイムの変更と構成のプッシュを実現できるため、管理と変更が非常に便利になります。 4. バックエンドサービスここでのバックエンド サービスとは、メッセージ キュー、データベース、キャッシュ、スケジューリング プラットフォームなど、アプリケーションが依存するダウンストリーム サービス、コンポーネント サービス、ミドルウェア サービスを指します。クラウド ネイティブ アプリケーションでは、これらのバックエンド サービスをリソースとして呼び出す必要があり、これらのリソースもクラウド ネイティブ アプリケーションの仕様に準拠している必要があります。つまり、いつでも動的に拡張できる必要があります。 5. ビルド、リリース、実行クラウドネイティブ アプリケーションでは、アプリケーションの構築、リリース、運用を厳密に分離する必要があります。これらのアプリケーション プロセスは、各要件の反復後にオンラインになるために必要であり、これらの手順がこの順序で実行されるため、ビルド前にリリースが存在しないことがわかりやすくなります。 Java アプリケーションの場合、ビルドとはソース コードをコンパイルしてパッケージ化することです。構築フェーズで失敗した場合、次のステップは実行されません。 アプリケーションをビルドするときに、依存関係が不足しているかコンパイル エラーがある場合は、ビルドが終了します。公開とは、コンパイルされた Jar パッケージまたはその他のフォームを構成ファイルとともに指定された環境のコンテナーにデプロイすることです。実行とは、公開するコンテンツを開始することです。現時点では、弊社の設定に問題がある場合、アプリケーションの起動に失敗する可能性があります。 6. プロセスクラウドネイティブ アプリケーションでは、アプリケーションがステートレスである必要があります。これは理解しやすいですね。結局のところ、クラウドネイティブ アプリケーションはいつでもスケーラブルであるため、アプリケーションはステートレスである必要があります。このため、開発中にコード内で状態を必要とするロジックを使用しないように注意する必要があります。たとえば、スケジュールされたタスクにより各インスタンスがスケジュールに基づいて実行されるため、問題が発生する可能性があります。 XXL-JOB のような分散スケジューリング プラットフォームを使用できます。 7. ポートバインディングアプリケーションはポートをバインドすることでサービスを提供します。ほとんどの場合、私たちはすでにこれを実行しているので、一部の友人はこれを理解できないかもしれません。その理由は、アプリケーション内でプロセス通信を使用しないようにするためです。 8. 同時実行性高い同時実行性でのプロセス拡張をサポートする必要があるため、アプリケーションはステートレスである必要があり、より多くのプロセスを展開することで拡張できる必要があります。これも分かりやすく、先ほど述べた無国籍にも関係します。 9. 扱いやすいいわゆる「扱いやすい」とは、クラウド ネイティブ アプリケーションがすばやく起動し、正常に終了できることを意味します。クラウドネイティブ環境では、容量を柔軟に拡張する機能が必要であるため、アプリケーションは迅速に起動および終了できる必要があります。 高速起動により、アプリケーションはより速くサービスを提供し、弾力的なスケーリング要件をより速く満たすことができます。また、正常な終了により、アプリケーションのシャットダウン時にタスクやトラフィックのアクセスを回避することもできます。 10. 開発環境はオンライン環境と同等さらに、開発環境、プレリリース環境、オンライン クラウド ネイティブ環境を可能な限り同じ状態に保つ必要があります。もちろん、ここでの「同じ」とは、できるだけ同じに保つことを意味します。同じ環境であれば、実装した機能が環境の問題で利用できなくなることはありません。ただし、リソースの問題により、開発環境、プレリリース環境、オンライン環境がまったく同じにならないことに注意してください。 11. ログクラウド ネイティブでは、ログをイベント ストリームとして扱う必要があります。これは、クラウド ネイティブ アプリケーションのインスタンスの数は常に変化しており、各インスタンスが常にログを生成するためでもあります。各インスタンスのログを確認することはできないため、特定のログシステムにログを収集して収集する必要があります。これは実際には分散システムでも同じです。ログは通常、ELK テクノロジーを通じて保存および分析されます。 12. プロセスの管理最後のポイントである「管理プロセス」は、バックグラウンド管理システムのタスクを 1 回限りのプロセスとして実行することを指します。実際、これは普遍的な要因ではなく、バックグラウンド システムの特定の機能に関連しています。ここでは議論しません。 要約する上記では、クラウド ネイティブとは何か、そしてクラウド ネイティブ アプリケーションの 12 の要素について説明しました。それらの多くは分散システムの要件と一致していますが、クラウド ネイティブ アプリケーションの要件はより高く、より厳格で、より自動化されています。 全体的な観点から見ると、クラウド ネイティブ アプリケーションは現在、企業や個人にとって最善かつ最速で低コストの方法です。 多くの中小企業では、独自のインフラストラクチャを構築する必要はありません。クラウドベンダーが提供する機能を直接導入して、自社のビジネスを迅速に展開することができます。結局のところ、中小企業にとって最も重要なことは生き残ることであり、そのようなことに時間とエネルギーを浪費する必要はありません。 参照する
|
<<: クラウドネイティブはデジタル世界の新たな未来をリードし、アプリケーションエンジンはクラウドネイティブの「ルート」技術革新で飛躍的な進歩を遂げる
>>: クラウドネイティブのコンテキストで JVM メモリを構成する方法
Hostdare のプレミアム中国最適化 KVM VPS は、約半年間在庫切れだった後、ようやく再入...
今年は特別な年です。感染拡大を受け、全国の多くの省が「新年は自分のいる場所で祝い、必要がない限り帰省...
1. 背景RocketMQ がマスター/スレーブ モードを採用するか、Dledger マルチコピー ...
ウェブゲームの収益分配モデルの解体「ユーザーは100元を支払い、開発者は30%から40%を受け取りま...
あるネットユーザーが百度知道で「ウェブサイトが(検索エンジンに)もっとインデックスされたほうが良いの...
SEO 最適化担当者として、コードを使用して Web サイトを整理し、基本的な SEO 最適化手法を...
ライブ放送ルームでのショッピングが日常生活の一部になると、ますます多くのインターネット有名人、スター...
ウェブマスターの皆さん、ウェブサイトの構造を最適化する際には、当然のことながらウェブサイトの重量を考...
ホストキャットの年の感謝祭、ブラックフライデー、サイバーマンデーの10日間のバーチャルホスティングプ...
チューオレンジの人気は、チュー・シージェンの感動的な物語だけでなく、王石や徐小平などの有名人の支持に...
Light Year SEO フォーラムの閉鎖から、Baidu によるスパム外部リンクの徹底的な取り...
ウェブページの最適化のためのキーワードを選択する際に、Baidu Index、Google ウェブマ...
月給5,000~50,000のこれらのプロジェクトはあなたの将来です1. SEOの定義: SEO と...
OVH のアジア太平洋データセンターの VPS がセール中です: シンガポール VPS、オーストラリ...
編集者注/オンライン教育は、今年教育業界で最もホットなコンセプトです。ベンチャーキャピタルは将来のト...