クラウドネイティブアーキテクチャを成功させるための6つの原則

クラウドネイティブアーキテクチャを成功させるための6つの原則

クラウドネイティブ アーキテクチャは、クラウド環境でアプリケーションをゼロから構築するための設計パターンです。クラウド ネイティブ アーキテクチャには厳格なルールはありませんが、ほとんどのクラウド ネイティブ アプリケーションはマイクロサービスとして編成されています。マイクロサービスは主に、アプリケーションを小規模なチームで保守できる、自律的で疎結合なユニットに分解するために使用されます。各マイクロサービスは通常、コンテナまたはコンテナのグループとしてデプロイされます。

さらに、クラウド ネイティブ アプリケーションは通常、12 要素アプリ フレームワークの原則に従います。これらは以下を中心に構築されています:

  • パフォーマンス: アプリケーションはスケーラビリティを考慮して設計されており、大規模な環境でも優れたパフォーマンスを発揮するように設計されています。
  • 回復力: アプリケーションは、拡張性に優れた小さなコンポーネントから構築されます。
  • 回復力: アプリケーションは障害に対して高い回復力があり、障害が発生したコンポーネントは他のコンポーネントの動作を中断することなく自動的に交換できます。
  • セキュリティ: アプリケーションを構築するときは、アプリケーションまたはそのデータが攻撃者によって侵害されないようにセキュリティを考慮してください。

ネイティブアーキテクチャの原則

クラウドネイティブ アプリケーションを構築するときは、まず、動的なスケーリングを実現し、障害を自動的に処理し、コンポーネントをできるだけ簡単に追加または削除するために、複数の次元で継続的に移動できるシステムを構築する必要があります。次の原則に従うことで、クラウド ネイティブ アーキテクチャはより強力になり、変更への適応性が向上し、保守も容易になります。

1. 自動設計

システムを展開、修復、拡張し、関連するログとイベントを生成する自動化されたプロセスを作成します。以下を自動的に処理するシステムを構築します。

  • マシンインスタンスなどのプロビジョニングされたインフラストラクチャ。
  • CI/CD パイプラインのビルド、テスト、デプロイの各ステージ。
  • ワークロードやその他のアプリケーション要件に基づく動的なスケーラビリティ。
  • バックアップ、ヘルス監視、および災害復旧。

2. 可能な限りステートレスに保つ

クラウド ネイティブの純粋主義者の中には、クラウド ネイティブ アプリケーションはステートレスであるべきだと考える人もいますが、現実にはステートレス アプリケーションの開発は難しい場合があります。ただし、分散アプリケーションの管理状態 (現在実行中のインスタンスの数など) を追跡することは難しいため、可能な限りステートレス コンポーネントを使用する必要があります。ステートレス コンポーネントを使用すると、スケーリング (レプリカの追加)、修復 (インスタンスの削除と新しいインスタンスへの置き換え)、ロールバック、ワークロードのバランス調整 (どのインスタンスがどのトランザクションを処理しているかを考慮する複雑なロジックが不要) が容易になります。

3. 柔軟な設計

設計に冗長性を追加することで、クラウド ネイティブ アプリケーションに回復力を構築します。クラウドネイティブ アプリケーションは、インスタンス クラスター、データ レプリケーション、マルチ AZ またはマルチリージョンのクラウド デプロイメントを使用することで、単一障害点を回避します。オンプレミスで実行する必要があるアプリケーションでは、少なくとも一部のコンポーネントについては、ハイブリッド アーキテクチャを使用してパブリック クラウドを活用し、高可用性と災害復旧を実現する必要があります。

一般的な回復力メカニズムの例:

  • 接続の切断やサービスのタイムアウトなどの一時的な問題によって引き起こされる一時的な障害を識別し、要求を再試行する機能。
  • サーキットブレーカーパターンを実装し、操作が再試行された回数を確認し、サービスをアクティブ化せずに後続の再試行でエラーを返します。
  • 依存している他のサービスに障害が発生した場合に、サービスが適切に機能低下し、適切なユーザー エクスペリエンスが維持されるようにします。
  • アプリケーションの使用率制限とスロットルに基づいて、大量のユーザーを識別して制限します。
  • 補正トランザクションを使用すると、ビジネス トランザクションが一連の小さなトランザクションに分割され、分散システムでトランザクションの一貫性を実現しやすくなります。

4. マイクロペリメーターを使用して各コンポーネントを構築する

クラウドネイティブ アプリケーションは、最初からセキュリティを考慮して設計する必要があるだけでなく、信頼できるコンポーネントが存在しないという前提で設計する必要があります。アプリケーションとそのユーザー間、または内部コンポーネント間にプライベート ネットワークが存在しない可能性があるため、アプリケーションの回復力を高め、信頼できない環境にコンポーネントを展開する柔軟性を実現するために、すべてのコンポーネントの強化、データの暗号化、コンポーネント間の認証の実装に重点を置く必要があります。

5. 多言語アーキテクチャを構築する

クラウドネイティブ アプリケーションでは、高度に統合されたアーキテクチャ、同じ言語で記述されたコンポーネント、同じテクノロジとフレームワークの使用は必要ありません。 REST以来

API は各コンポーネントの機能を公開できるため、異種のコンポーネントが相互に通信して使用できるようになります。そのため、チームの能力を考慮して、最大の価値と市場投入までの時間を最短にする言語またはテクノロジで各コンポーネントを記述できます。

6. コンポーネントは不変である

インフラストラクチャ コンポーネントを不変にすることで、高いレベルの俊敏性と柔軟性を実現します。つまり、展開後に構成サーバーまたは仮想マシン (VM) を変更することは許可されません。

不変サーバーがデプロイされると、再度変更することはできません。逆に、不変サーバーがデプロイされていない場合は、デプロイされたサーバーがそのまま変更されずに維持されるようにする必要があります。そうすることで、問題が発生した場合に、サーバーを迅速かつ簡単に交換し、アプリケーションを実行し続けることができます。

不変のインフラストラクチャを使用することの主な利点は次のとおりです。

  • 不変のコンポーネントは、一貫性と信頼性の高いインフラストラクチャの実現に役立ち、テストをよりシンプルかつ簡単にします。
  • 不変コンポーネントのデプロイは、より簡単かつ予測可能になります。
  • 不変コンポーネントのすべてのデプロイメントはバージョン管理され、自動化されているため、環境のロールバックが簡単かつシンプルになります。
  • 構成のドリフト、サーバーのスノー、エラーが軽減されるか、完全に排除されます。
  • クラウド サービスを使用すると、自動スケーリングも簡単に行えます。

可変サーバーはコストと反復時間を増加させ、市場投入までの時間を大幅に遅らせますが、不変インフラストラクチャはアジャイル開発を促進します。不変のインフラストラクチャにより、デプロイされた環境の信頼性、一貫性、効率性が向上し、開発者は数分で環境を再作成できるようになります。

クラウドネイティブアーキテクチャのメリットとデメリット

クラウドネイティブ アーキテクチャには多くの利点があります。

  • コスト: クラウドは、クラウドが提供するさまざまな機能を活用するだけでなく、システムが継続的に稼働して顧客にサービスを提供できるようにするための低コストのオプションを提供します。これらの機能を社内で提供するには、時間とコストがかかります。
  • 信頼性: クラウド環境では、可用性ゾーンなどの回復力と信頼性のオプションが提供され、システムが決して故障せず、停止の影響を受けないことが保証されるため、ダウンタイムによる回復不能な損失を回避できます。
  • 俊敏性: アジャイル開発では継続的なテストと最適化が必要ですが、従来のモノリシック アーキテクチャでは小さな変更でシステム全体が壊れる可能性があるため、これは困難です。クラウドネイティブ システムは継続的な変更を考慮して構築されているため、アプリケーションの更新と適応が容易になります。
  • 柔軟性: クラウド ネイティブ設計はプラットフォームに依存しないため、現在のシステムが開発に適していない場合は、最初から再コンパイルすることなく新しい環境に切り替えることができます。

クラウドネイティブ アーキテクチャの欠点は次のとおりです。

  • 問題解決: 従来のアーキテクチャでは、線形計画に従って問題を特定できます。クラウド ネイティブ設計では、複雑なネットワーク内で相互接続され相互作用するコンテナーが使用されるため、特定のコンポーネント セット間のパスが明確でない場合があります。問題の原因が複数のコンテナに分散している場合、根本原因を特定するのが難しくなる可能性があります。
  • セキュリティ: クラウド ネイティブ アーキテクチャは、システムが動的に分散された多数のコンポーネントで構成されているため、監視とセキュリティの確保がより困難になることがよくあります。
  • 知識のギャップ: 開発者がクラウドネイティブ システムに精通していない場合、新しい言語を使用する場合と同様に、再学習する必要があり、コストのかかる間違いを避けるために新しい概念をよく理解することが重要です。

新しいクラウドネイティブ アーキテクチャの構築を検討する場合、企業組織はさまざまな長所と短所を慎重に比較検討し、ビジネス、顧客、利害関係者にとって適切な決定を下す必要があります。

<<:  2022年にマルチクラウド市場はどのように発展するでしょうか?

>>:  CloudOps: クラウド運用を最適化するための新しいフレームワーク

推薦する

Vultrはどうですか? Vultrのポーランドのデータセンターとサーバーの簡単なレビュー

Vultr はポーランドを含むヨーロッパに複数のデータセンターを持っています。 Vultr のポーラ...

伝統を覆す:これがWeChatマーケティングの仕組み

「WeChat とは何ですか?」ほとんどの人が WeChat を使ったことがあると思いますが、WeC...

ユーザーエクスペリエンスを向上させるウェブサイト最適化の3つのポイント

周知のとおり、ウェブサイトを最適化するプロセスではユーザーエクスペリエンスが重要であり、Baidu ...

外部リンクとフレンドリーリンクからのトラフィックを導入する方法について簡単に説明します

「コンテンツは王様、外部リンクは女王」という言葉の意味がまったく理解できませんでした。Web サイト...

HTML5は世界中で採用が加速しており、iOSとAndroidの境界がなくなることが期待されている

HTML5 は将来のモバイル インターネット時代に破壊的な影響を与える可能性があります。 5年前、最...

草の根ウェブマスターウェブサイトが存在する理由の簡単な分析

実際、ウェブマスターのウェブサイトは、中国でインターネットが出現し、急速に発展し始めた頃に誕生しまし...

#ニュース# bicky: ケイマン諸島のホスティングプロバイダー、ケイマン VPS、ケイマンサーバー、ケイマンホスティングを提供

ケイマン諸島で VPS やサーバーなどのビジネスを目にすることはほとんどないのですが、ケイマン諸島に...

クラウドデータベース: ゼロから1までの実践的な経験の共有

ゼロ:はじめにクラウドネイティブ時代が到来しました。今日は、さまざまなデータベースをクラウドに移行す...

新時代を突き進み、革新を求めて、志雄張昊公開講座が武漢にやってきた

月収10万元の起業の夢を実現するミニプログラム起業支援プラン9月は収穫の季節です。私たちは、熊張オー...

アマゾン、10億ドル超でMicrosoft 365クラウドサービスを利用へ

10月18日、Business Insiderは内部文書と関係者の話として、マイクロソフトがクラウド...

なぜますます多くの企業がクラウド ホスティングに目を向けているのでしょうか?

今日の労働環境は、2019 年の労働環境と比べて大きく変化しました。これは主に、過去 3 年間のリモ...

B2Bウェブサイトのランキングに影響を与える3つの主な理由とその解決策

B2B ウェブサイトは数多く存在しますが、さまざまな理由からランキングが高くないウェブサイトも少なく...

WeChatの運用とプロモーション、新規顧客獲得、アクティブ化、有料化についてまとめた3つのポイント!

まず最初に、私がこの要約を書いた理由を紹介したいと思います。 1年前、私はAlibabaやVipsh...

地元装飾会社のインターネットマーケティングとプロモーションに関する提案

ローカルウェブサイトマーケティングについて議論するとき、最もよく議論されるトピックは医療ウェブサイト...

ウィンドウ期間: 今年、他にどの中国のインターネット企業が株式を公開する可能性があるでしょうか?

2014年は中国のインターネット企業が米国株式市場に上場する最初の年と言えるだろう。 4月17日、新...