【Quarkusテクノロジーシリーズ】クラウドネイティブ時代の「クラウドネイティブ・アーキテクチャ・システム」のJava「救世主」はQuarkus ではクラウドネイティブとは何か?

クラウドネイティブ時代のJava「救世主」

クラウドネイティブ時代において、Java プログラムには実は大きな欠点があり、最も人気のある Spring Boot/Spring Cloud マイクロサービス フレームワークを例に挙げると、最適化されたアプリケーションの起動には少なくとも 3 ~ 4 秒かかり、多くの Bean が必要とする遅延ロード。時間、メモリには数百 M が必要で、ビジネス ロジックは少し複雑です。1G 以上のメモリがないと、ビジネスのニーズを満たすのは困難ですか?

Quarkus について説明する前に、まずクラウド ネイティブとは何かを理解しましょう。Quarkus が次世代 Java クラウド ネイティブ サービスである理由は何ですか?

クラウドネイティブアーキテクチャの概要

Cloud Native (クラウド ネイティブ)、これは奇妙で馴染みのある言葉ですが、Matt Stineによって提案された概念であり、 DevOps、Continuous Delivery (継続的デリバリー)、Microservices (MicroServices)、Agile Infrastructure、コンウェイズ法など

正確に言うと、クラウド ネイティブは文化でありトレンドでもあり、クラウド コンピューティングの必然的な方向性であり、その重要性は、クラウドを障害ではなく、クラウド戦略の成功の基礎にすることです。

クラウドネイティブの特徴と側面:

  • テクノロジー (マイクロサービス、アジャイル インフラストラクチャ)
  • 管理 (DevOps、継続的デリバリー、コンウェイの法則、再構築など)

クラウドネイティブは、一連のクラウド技術や企業管理手法を集めたものとも言えます。

クラウドネイティブの定義と概念

Cloud Native (クラウド ネイティブ) は、アプリケーションとインフラストラクチャの展開と障害修復をより高速かつ機敏にし、企業向けのクラウド コンピューティングの展開コストを大幅に削減できる、より優れたツール、自己修復システム、自動化システムのコレクションです。

現在業界で認知されているクラウドネイティブには主に以下のレベルが含まれます。

  • コンテナー、サービス グリッド、マイクロサービス、不変のインフラストラクチャ、公開された API はすべて、クラウドネイティブ関連の概念に近いものです。
  • クラウド ネイティブ テクノロジは、システムを疎結合にし、柔軟なスケーリングをサポートし、管理しやすく、明確にすることができます。

コンテナー、kubernetes、サーバーレス、FaaS テクノロジーの進化に伴い、CNCF (Cloud Native Computing Foundation、クラウド ネイティブ コンピューティング財団) は、クラウド ネイティブの概念をより広義に「アプリケーションの弾力性、耐障害性、可観測性を高めるための基盤」と定義しています。 「テクノロジー、アプリケーションの展開と管理を容易にする基本ソフトウェア、アプリケーションの作成とオーケストレーションを容易にする実行フレームワークなど」と述べ、開発者がクラウド リソース、製品、およびサービスを最大限に活用できるようにしたいと考えています。配信能力。

クラウドネイティブの開発経緯

  • 2004 年から 2007 年にかけて、Google は Cgroups などのコンテナ テクノロジーを社内で大規模に使用しました。
  • 2008 年、Google は Cgroups を Linux カーネル バックボーンに統合しました。
  • 2013 年に、Docker プロジェクトが正式にリリースされました。
  • 2014 年には、Kubernetes プロジェクトも正式にリリースされました。
    • Kubernetes プロジェクトのリリースの理由も非常に理解しやすく、コンテナーと Docker を使用して、誰もがこれらのコンテナーを便利に、迅速に、エレガントに管理できるようにする方法が必要であり、これが Kubernetes プロジェクトの本来の目的です。 。Google と Redhat による Kubernetes のリリース後、このプロジェクトの開発は非常に迅速に行われました。
  • 2015年にCNCFが設立されました。
    • CNCF Cloud Native Foundation は、Google、Redhat、Microsoft などの大手クラウド コンピューティング ベンダーといくつかのオープンソース企業によって共同で設立されました。CNCF の設立時の設立メンバーは 22 名で、Kubernetes は CNCF が主催する最初のオープンソース プロジェクトとなりました。
  • 2017 年、CNCF の会員数は 170 名に達し、14 の基金プロジェクトに達しました。
  • CNCF設立3周年を迎えた2018年には会員数195名、財団プロジェクト19件、インキュベーションプロジェクト11件と、これほど開発スピードが速いのはクラウドコンピューティング分野全体でも非常に珍しいことだ。

クラウドネイティブテクノロジーの生態学的ステータス

したがって、今日私たちが議論しているクラウド ネイティブ テクノロジー エコシステムは、テクノロジーの巨大な集合体です。CNCF にはクラウドネイティブのパノラマ ( github.com/cncf/landsc… 200 を超えるプロジェクトと製品があり、これらのプロジェクトと製品は CNCF の観点にも一致しています。そのため、このパノラマを背景として使用する場合は、If を追加します)考えてみると、今日私たちが議論しているクラウド ネイティブは主に次の点について話していることがわかります。

クラウドネイティブ財団 - CNCF

CNCF は現在、クラウド コンピューティングの分野で最も成功しているオープン ソース財団の 1 つであり、Kubernetes、etcd、Envoy などの有名なオープン ソース プロジェクトのホスティング財団です。

クラウドネイティブテクノロジーコミュニティ

たとえば、現在 CNCF によって正式にホストされている複数のプロジェクトが一緒になって、現代のクラウド コンピューティング エコシステムの基礎を形成しています。その中で、Kubernetes のようなプロジェクトは、世界をリードする非常に活発なオープン ソース プロジェクトとなっており、現在 CNCF を卒業したプロジェクトが数多くあります。 Kubernetes、Prometheus、Envoy、CoreDNS、containerd、Fluentd など。

クラウドネイティブサービスアーキテクチャの原則

高可用性アーキテクチャ設計の原則

  • オブザーバブル:稼働状況とデータ分析により、オブザーバブルモードでの稼働状況と稼働データ分析を実現できます。
  • グレースケール: ブルーグリーンリリース、ABテスト、カナリアリリースメカニズムなどを実現し、データサービスのフロー制御を実現します。
  • ロールバック: サービスのフォールバックおよびリバックのロールバック メソッドを実現できます。

アーキテクチャの可用性を向上させるための設計原則

  • デカップリング: メッセージキュー、分散キュー、サービス分割
  • 冗長性: リモート災害復旧、マルチポイント展開、マスター/スレーブ切り替え
  • 異質性: 分析と実装のためのサイドカー モード
  • 非同期: メッセージキュー、非同期呼び出し、リアクティブプログラミング

マイクロサービスの設計原則

公式写真の 1 つを盗む:

原則 1: 誠実さ

機能の整合性: 関数の内部ロジックは独立しており、外部への依存関係が少なくなります。

マイクロサービスの整合性: サービス内の各マイクロサービスは、明確な入力、出力、および処理ロジックを使用して、特定のビジネス操作またはプロセスを独立して完了できる必要があります。

原則 2: 技術的な制限

トランザクションの一貫性を使用する必要がある関数は、分散トランザクションの問題をできる限り回避するためにマイクロサービスに配置する必要があります。

原則 3: パフォーマンスの拡大

ユーザーが頻繁に使用し、高いパフォーマンスが要求される機能については、別のマイクロサービスとして使用してマルチノード拡張することでパフォーマンスを向上させることができます。

原則 4: カップリング

マイクロサービスとマイクロサービスは、相互呼び出しの依存関係を回避するように努める必要があります。インターフェイスは RPC 経由でリモートから呼び出すことができ、相関性の高い関数は同じマイクロサービスに配置する必要があります。

共通に利用する機能を共通のマイクロサービスで設計できます。たとえば、ログ機能、ファイル アップロード機能、および一部の基礎となる技術コンポーネントはマイクロサービスで設計できます。

クォーカスに戻ってください

Quarkus クラウドネイティブ標準

Quarkus は、Eclipse MicroProfile、Spring (Red Hat Summit 2020 トラックの一部としてデモ)、Apache Kafka、RESTEasy (JAX-RS)、Hibernate ORM (JPA)、Spring、Infinispan、Camel などの一般的な Java 標準、フレームワーク、ライブラリで動作しますなど。

Quarkus コンテキストと依存関係の注入

Quarkus の依存関係注入ソリューションは CDI (Context and dependency Injection) に基づいており、機能を拡張し、アプリケーションに構成、ブートストラップ、統合するための拡張フレームワークが含まれています。拡張機能の追加は依存関係を追加するのと同じくらい簡単ですが、Quarkus ツールを使用することもできます。

Quarkus の多言語拡張サポート

また、Java や JavaScript などの多くの言語で書かれたアプリケーションを実行し、アプリケーションをネイティブにコンパイルするための汎用仮想マシンである GraalVM に正しい情報を提供します。

驚くほど速い起動時間、極めて低い RSS メモリ (ヒープ サイズだけではありません!) により、Kubernetes などのコンテナ オーケストレーション プラットフォームでほぼ瞬時のスケールアップと高密度のメモリ使用率が実現します。

デュアルモード動作

Quarkus は当初からシンプルさと使いやすさを重視して設計されており、その機能は設定なしで通常どおり使用できます。

開発者はアプリケーションに必要な Java フレームワークを選択でき、これらのアプリケーションは JVM モードで実行することも、コンパイルしてネイティブ モードで実行することもできます。

開発者の作業を容易にするために、Quarkus には次の機能も含まれています。

  • ライブコーディング。開発者がコード変更の影響を即座に検査し、迅速にトラブルシューティングできるように設計されています。
  • 組み込みマネージド イベント バスを使用した統合命令型およびリアクティブ プログラミング
  • 統合された構成
  • シンプルなネイティブ実行可能ファイルの生成

コンテナが先

アプリケーションをパブリック クラウドでホストするか、社内の Kubernetes クラスターでホストするかに関係なく、全体的なホスティング コストを削減するには、高速起動や低メモリ消費などの機能が重要です。

Quarkus はコンテナファーストで開発されており、次の方法でメモリ使用量が少なく、起動時間が短縮されるように最適化されています。

  • Graal/SubstrateVM の完全サポート
  • ビルド時のメタデータの処理
  • 反射の使用を減らす
  • ネイティブイメージのプリブート

その結果、Quarkus で構築されたアプリケーションは、従来の Java の 1/10 のメモリしか消費せず、起動時間が短縮され (300 倍)、クラウド リソースのコストが大幅に削減されます。

クォークの6つのステップ

  • Quarkus に属するアプリケーション マイクロサービス スケルトンを迅速に構築する (アプリケーション サービスを構築するための基礎を築く)
  • Quarkus マイクロサービス アプリケーション (開発モード) は、リアルタイムのホット デプロイメント機能を実現します (変更はリアルタイムで有効になります)。
  • 複数のオープンソース ライブラリと関連するビジネス要件を統合して、関連するプログラム コードを開発します。
  • 開発とコーディングが完了すると、バージョンが確立され、開発レベルでの統合テストの段階が実行されます。
  • CLI プログラムを作成し、クラウドネイティブの実行可能パッケージ ファイルを作成し、対応するコンテナ サービスを作成します。
  • 対応するクラウドネイティブ ファイル パッケージを Kubernetes クラスターに直接統合してデプロイします

リソースを共有する

情報の共有
上記のリソースを入手するには、オープンソース プロジェクトにアクセスし、クリックしてジャンプしてください。

おすすめ

転載: blog.csdn.net/star20100906/article/details/132271379