翻訳者 |チェン・ジュン 校正:孫淑娟 長い間、バックエンド Java の開発は Spring フレームワークが主流でしたが、Micronaut、Quarkus、Dropwizard に代表される新しいクラウドネイティブ Java フレームワークの人気が高まっています。その中でも、Micronaut は新鮮な選択肢です。これは、Grails を構築したチームによって、最新のアーキテクチャ向けに設計および開発されました (翻訳者注: Grails は、迅速な Web アプリケーション開発のためのオープン ソース フレームワークです)。 この記事では、まず Micronaut の基本機能を紹介し、次にシンプルな RESTful API ベースのアプリケーションから始めて、それをリアクティブ ノンブロッキング IO (NIO) にリファクタリングし、Micronaut がマイクロサービスとサーバーレス アーキテクチャに基づくクラウド ネイティブ開発をどのようにサポートするかを紹介します。 Micronautの特徴Micronaut は、Spring や Grails などの従来のフレームワークから継承された多くの利点を提供します。その 1 つは「ネイティブ クラウド ネイティブ」と呼ばれ、クラウド環境向けにゼロから構築されています。クラウド ネイティブ機能には、環境検出、サービス検出、分散トレースなどが含まれます。 同時に、Micronaut はまったく新しい制御の反転 (IoC) コンテナーを提供します。コンテナーは事前 (AoT) コンパイルを使用して起動を高速化できます。ここでの AoT とは、コード ベースが増加しても起動時間が増加しないことを意味します。これは、サーバーレスおよびコンテナベースのデプロイメントにとって特に重要です。結局のところ、これらのデプロイメントでは、ノードは通常、要求に応じてシャットダウンおよび起動されます。 多言語 JVM フレームワークである Micronaut は現在、Java、Groovy、Kotlin をサポートしており、まもなく Scala もサポートする予定です。 さらに、Micronaut はレスポンシブプログラミングもサポートしています。開発者はフレームワーク内で ReactiveX または Reactor を使用できます。実際、Reactor は 2021 年 7 月にリリースされた Micronaut 3 以降、使用が推奨されています。新しいバージョンには、Responsive ライブラリが推移的な依存関係として含まれていないことに注意してください。 1. Micronaut を使い始めるMicronaut は、SDKMan を使用して、Linux や macOS を含むあらゆる Unix ベースのシステムに簡単にインストールできます。 Windows を使用している場合は、Micronaut バイナリをダウンロードし、適切なパスに追加します。 インストールが完了すると、コマンド ラインに mn ツール プロンプトが表示されます。つまり、シェルを開いて適切な場所に移動し、次のように入力できます: mn create-app micronaut-idg --build maven。 Micronaut はラッパーを通じて Gradle と Maven をサポートします。これにより、ツールを自分でインストールして構築する手間が省けます。 Gradle を使用する場合は、上記のコマンドで --build maven を使用しないでください。 mvnw mn:run コマンドを使用してサーバーを実行し、ブラウザで http://localhost:8080/ を指定すると、デフォルトで「見つかりません」という JSON 応答が表示される可能性があります。この目的のために、サンプル プロジェクトのレイアウトを調べてみましょう。これは標準の Maven プロジェクトです。メインクラスは src/main/java/micronaut/idg/Application.java にあります。メイン クラスは組み込みサーバーとして実行されることに注意してください。 Micronaut 開発サーバーは、コードに変更を加えると、実行中のアプリケーションを自動的に更新します。 2. Micronaut コントローラーを追加するSpring の MVC と同様に、さまざまなコントローラー クラスを追加して、URL をコード ハンドラーにマップできます。たとえば、src/main/java/micronaut/idg/controller/SimpleController にクラスを追加できます。以下のリスト 1 に示すように、このコントローラーを使用してテキスト応答を作成します。 リスト1. Micronautコントローラの使用 パッケージ micronaut .idg .controller ; 以下のリスト 2 に示すように、JSON 形式の応答を簡単に返すことができます。 リスト2. JSON形式のレスポンス パッケージ micronaut .idg .controller ; リスト 2 は、Micronaut が @Get アノテーションの produces パラメータに対して実行するスマートな処理を示しています。この場合、設定した JSON 応答が送信されます。 3. Micronautサービスレイヤーを追加する事前に実行できるため、Micronaut の IoC 実装は内部的にユニークです。もちろん、これは依然として CDI (Contexts and Dependency Injection) 仕様の完全な実装に属します。つまり、Spring で知られている DI のようなアノテーション (@Inject など) をすべて使用できるということです。 以下のリスト 3 では、メッセージを提供するためにサービス層 Bean を接続します。実際のアプリケーションでは、このクラスはデータ アクセス Bean を介してデータ ストアまたはその他のリモート API を呼び出すことができます。たとえば、src/main/java/micronaut/idg/service フォルダーを作成し、リスト 3 に示す 2 つのファイル (インターフェース (Simple) とその実装 (SimpleService)) を追加できます。 リスト3. シンプルなサービス層Beanの作成 //シンプルな.java リスト 1 で作成した SimpleController サービスにサービスを注入することで、新しいサービス レイヤーを使用できるようになりました。以下のリスト 4 は、コンストラクター注入を示しています。 リスト4. サービスBeanをコントローラに注入する @Controller ( "/シンプル" ) 重要なタスクは注 1 で完了し、サービス Bean が名前で接続されます。この時点で、http://localhost:8080/simple にアクセスすると、サービス層からの応答 {"message":"A simple service message"} が表示されます。 4. Micronaut を使用したリアクティブ NIO次に、Reactor と組み合わせた Micronaut の使用について説明します。この場合、Reactor と非ブロッキング IO を使用するように現在のアプリケーションをリファクタリングします。アプリケーションは引き続き同じタスクを実行しますが、内部的には非ブロッキング スタック (Reactor と Netty) を使用します。 前述のように、Micronaut 3 にはデフォルトでリアクティブ ライブラリが含まれていないため、以下のリスト 5 に示すように、まず Reactor コアを Maven POM に追加する必要があります。 リスト 5. pom.xml に Reactor を追加する <依存関係> 以下のリスト 6 に示すように、返された SimpleController を変更できます。 リスト6. コントローラーを非ブロッキングにする reacters.core.publisher.Mono をインポートします。 ご覧のとおり、Reactor の Mono クラスを使用して、同じ戻り値の型 (つまり、string/strin のマップ) をラップしているだけです。 リアクティブ モードでは、リモート サービスの使用に対して同様のサポートが利用できるため、アプリケーションを完全に非ブロッキング IO で実行できます。 5. Micronaut CLIを使用して新しいコンポーネントを作成するMicronaut コマンドライン ツール (CLI) を使用して、さまざまなコンポーネントをスタブ化することもできます。たとえば、新しいコントローラーを追加する場合は、mn add-controller MyController コマンドを使用できます。これにより、以下のリスト 7 に示すように、新しいコントローラーとそれに対応するテストが出力されます。 リスト 7. Micronaut コマンドラインを使用して新しいコントローラーを作成する mn 作成-コントローラー MyController 6. Micronaut によるクラウドネイティブ開発前述したように、Micronaut はクラウドネイティブのマイクロサービスとサーバーレス開発向けに構築されています。 Micronaut は、フェデレーションと呼ばれるクラウド ネイティブの概念をサポートしています。ここでのフェデレーションとは、複数の小規模なアプリケーションが同じ設定を共有し、同時に展開できることを意味します。これは、マイクロサービスの開発を容易にし、管理しやすいように設計されたマイクロサービス アーキテクチャによく似ています。フェデレーション サービスの詳細については、Micronaut のドキュメントを参照してください。 さらに、Micronaut はクラウド環境に簡単に導入できます。以下のリスト 8 に示すように、Google Cloud Platform (GCP) 用の Docker リポジトリをデプロイできます。 リスト 8. GCP の Docker リポジトリを使用して Micronaut アプリケーションをデプロイする ./mvnwデプロイ \ この場合、プロジェクトは Docker イメージとして GCP の Docker リポジトリにプッシュされます。ここでは Jib Maven プラグインを使用していることに注意してください。実際の Docker ファイルを作成しなくても、Java プロジェクトを Docker イメージに変換できます。 さらに、-Dpackaging=docker を使用して Docker をパッケージング ツールとして識別しました。パッケージ化が完了したら、以下のリスト 9 に示すように、GCP コマンドライン ツールを使用してプロジェクトをデプロイできます。 リスト9. コマンドラインからDockerイメージを実行する gcloud 実行デプロイ \ Micronaut がサポートするもう 1 つのクラウド ネイティブ機能はトレースです。たとえば、Micronaut を使用すると、さまざまなアノテーションを通じて Jaeger による分散トレースを有効にするのが非常に簡単になります。 以下のリスト 10 に示すように、マイクロサービス アプリケーションの application.xml ファイル内のすべてのリクエストをトレースするように Jaeger を構成できます。 リスト 10. application.xml での Jaeger 設定 トレース: 7. まとめMicronaut は、クラウドネイティブおよびマイクロサービス開発に適したさまざまな機能を提供します。同時に、このフレームワークは、従来の API ベースの開発をシンプルかつ明確にするのに適しています。さらに、Reactive NIO の Reactor や Netty とうまく統合できます。 オリジナルリンク: https://www.infoworld.com/article/3658968/intro-to-micronaut-a-cloud-native-java-framework.html 翻訳者について51CTO コミュニティの編集者である Julian Chen 氏は、IT プロジェクトの実装において 10 年以上の経験を持っています。社内外のリソースとリスクの管理に長けており、ネットワークと情報セキュリティの知識と経験の普及に注力しています。彼は、ブログ投稿、特別トピック、翻訳の形で最先端のテクノロジーと新しい知識を共有し続けています。彼はオンラインとオフラインで情報セキュリティのトレーニングや講義を頻繁に行っています。 |
<<: IoT とクラウド コンピューティングの統合では、どのようなセキュリティ上の課題に直面しますか?
>>: Dockerの基本について語る: Dockerの動作原理
[51CTO.com からのオリジナル記事] クラウド コンピューティング テクノロジーが成熟するに...
昨日、暇だったのでspeedykvmを推奨する記事「推奨:今年のベストKVM/SSD[raid10]...
月給5,000~50,000のこれらのプロジェクトはあなたの将来ですウェブサイトのトラフィックは常に...
2月1日、百度は2013年中国ウェブサイト発展動向レポートを発表し、中国の現在のウェブサイト生態環境...
私はXinさんと年に1、2回コミュニケーションを取っていますが、そのたびにたくさんの新しい驚きがあり...
[[425706]]序文分散システムでは、Redis 分散ロックは比較的シンプルで効率的であり、多く...
すべてのウェブマスターにとって、Baiduでのウェブサイトのランキングはウェブサイトのトラフィックに...
月給5,000~50,000のこれらのプロジェクトはあなたの将来です動画プロモーションは多くの人にと...
私は機械会社で働いており、主に会社のBaidu入札の管理を担当しています。会社のBaidu入札の1日...
多くのウェブマスターは、ウェブサイトのコアキーワードを決定し始めるときに、Baidu Indexを注...
ウェブサイトを最適化する際に、ウェブサイトにトロイの木馬が見つかるという状況に遭遇したことがあるかも...
Hostodo は年末から低価格プロモーションで VPS を運営しています。市場でのブランド認知度は...
【要点】全国30省の人員を巻き込み、680万人以上の会員を育成し、最大38億元の預金を集めた…江西ワ...
これは昨日、Qiyi Network カスタマー サービスで顧客から寄せられた質問です。彼はオンライ...
この記事では、JVM メモリ モデル、クラス ローダー、GC 回復アルゴリズム、GC コレクターなど...