BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース クラウドネイティブアプリケーション開発サポートが強化されたMicronaut 1.1

クラウドネイティブアプリケーション開発サポートが強化されたMicronaut 1.1

原文(投稿日:2019/05/14)へのリンク

先日のGoogle Cloud Nextカンファレンスで、Object Computing、Inc.(OCI)は、Micronaut 1.1のリリースを発表した。新モジュールのMicronaut AWSMicronaut RabbitMQにより、クラウドネイティブなアプリケーションの開発サポートが強化されている。既存モジュールのMicronaut GCPMicronaut gPRCMicronaut GraphQLにも改善が加えられた。その他では、JDKのIntrospectorに代わる新しいBean Introspection API、Micronaut Testモジュール用の新たなテンプレートなどが目新しい。

これまではProject Particleという名称であったMicronautは、マイクロサービスベースによるクラウドネイティブなサーバレースアプリケーションをJavaやGroovy、Kotlinで記述可能な、JVMベースのフルスタックフレームワークである。Micronautは2018年3月に、OCIのプリンシパル・ソフトウェアエンジニアで、GrailとMicronautのプロダクトリーダを務めるGraeme Rocher氏によって紹介された後、同年5月にオープンソースとして公開されている。

発表によると、

Micronaut 1.1によって、テスト性に優れ、コンテナ化が簡単で、効率がよい、クラウド対応のアプリケーションを、簡単に構築することが可能になります。

MicronautはGoogle Cloud Runにも、Google App Engine Standard for Java 11にもデプロイできます。1.1では、 Google Stackdriver Traceもサポートしました。

ここからは、新機能のいくつかを説明しよう。

Micronaut Profiles

Micronautにはいくつかのプロファイルが組み込まれており、スケルトンや、現在まだ開発中ではあるが、Webあるいはコマンドラインアプリケーションのビルディングブロックとなるアプリケーションを生成することが可能である。個々のプロファイルはテンプレートと、プロファイル固有の追加コマンドで構成されている。例えばcreate-appserviceプロファイルを開始するためのもので、コントローラ(create-controller)およびクライアント(create-client)クラスを構築するためのコマンドを含む。これらのコマンドは、他のプロファイルでは使用できない場合もある。

Micronaut GCP

MicronautとGoogle Cloud Platform(GCP)を統合したMicronaut GCPは、GCP上でアプリケーションを実行するためのモジュールである。 Micronaut 1.0のリリースと同時に導入されたこのモジュールは、"アプリケーションからレイテンシ情報を収集して、Google Cloud Platform Consoleに表示する"分散トレースシステムである、Stackdriver Traceをサポートするように拡張された。

Micronaut GCPは、GCPプロジェクトのIDの設定と取得を行うコンフィギュレーションクラスのGoogleCloudConfigurationGoogleCredentialsクラスのインスタンス生成を容易にするGoogleCredentialsConfigurationなどのユーティリティを提供する。

Stackdriver Traceは次のGradle、あるいはMaven依存関係で有効にすることができる。

    
compile 'io.micronaut.gcp:micronaut-gcp-tracing:1.0.0'
    
    
<dependency>
    <groupId>io.micronaut.gcp</groupId>
    <artifactId>micronaut-gcp-tracing</artifactId>
    <version>1.0.0</version>
</dependency>
    

実行にはGCPのアカウントと、Google Cloud SDKのインストールが必要である。

先日のGoogle Cloud NextカンファレンスでのMicronaut 1.1の発表に合わせて、OCIでCore Grails開発チームの主任ソフトウェアエンジニアを務めるパートナのJeff Scott Brown氏は、"Microservices on GCP Dramatically Simplified"と題して講演し、GCPを使ったマイクロサービスの開発とデプロイのデモンストレーションを行った。

Micronaut AWS

MicronautAmazon Web Services(AWS)を統合したMicronaut AWSは、MicronautアプリケーションにAWS Lambdaサーバーレスコンピューティングを提供する新しいモジュールである。Alexa SkillsAWS API Gatewayもサポートされている。後者はMicronaut AWSの代替手段として、AWS Serverless Java Containerを使用するGraalVMなど、独自のカスタムLambdaカスタムランタイムを開発者が実装できるようにするものだ。MicronautLambdaRuntimeクラスが、カスタムLambdaランタイムへのエントリポイントを提供する。

Micronaut AWSでは、基本的なAWS SDK設定クラスであるAWSClientConfiguration、以下のようなAWS固有の環境変数を取得するクラスのEnvironmentAWSCredentialsProviderなどのユーティリティも提供されている。

    
$ export AWS_ACCESS_KEY_ID=XXXX
$ export AWS_SECRET_KEY=YYYY
    

上記の環境変数とEnvironmentAWSCredentialsProviderクラスを使用して、AWS S3クライアントを次のように確立することができる。

    
AmazonS3ClientBuilder amazonS3ClientBuilder = AmazonS3ClientBuilder.standard();
amazonS3ClientBuilder.setCredentials(new EnvironmentAWSCredentialsProvider(applicationContext.getEnvironment()));
AmazonS3 s3 = amazonS3ClientBuilder.build();
    

Micronautのcreate-functionコマンドは、(create-appと同じように)AWS Lambdaにデプロイ可能なプロジェクトを新たに構築する。

例として、次のMicronautコマンドを考える。

    
$ mn create-function org-redlich-aws-app
    

次図に示すように、これによってプロジェクトのルートディレクトリ、対応するパッケージ名を含むソースおよびテストディレクトリ構造、ファイル名(OrgRedlichAwsApp.javaOrgRedlichAwsFunction.java)に、パラメータ名org-redlich-aws-appを使用した、新しいMicronautプロジェクトが作成される。対応するテストも同時に生成される。

Micronaut AWSを使用するためのGradleとMaven依存関係は、次のようになる。

    
compile 'io.micronaut:micronaut-function-aws'
    
    
<dependency>
    <groupId>io.micronaut</groupId>
    <artifactId>micronaut-function-aws</artifactId>
</dependency>
    

Micronaut RabbitMQ

MicronautとRabbitMQを統合したMicronaut RabbitMQは、Micronautアプリケーションでメッセージ駆動型マイクロサービスを可能にする新モジュールである。オープンソースのメッセージブローカであるRabbitMQは、複数のメッセージングプロトコル監視機能をサポートし、企業内やクラウドにデプロイ可能である。アプリケーション内で生成および消費されるメッセージは、JavaコードからRabbitMQへのインターフェースを可能にするオープンソースライブラリである、RabbitMQ Javaクライアントライブラリを使用して処理される。

Micronaut RabbitMQを使用するためのGradleとMaven依存関係は、次のようになる。

    
compile 'io.micronaut.configuration:micronaut-rabbitmq'
    
    
<dependency>
    <groupId>io.micronaut.configuration</groupId>
    <artifactId>micronaut-rabbitmq</artifactId>
</dependency>
    

RabbitMQ機能を使用するMicronautアプリケーションは、次のコマンドで作成する。

    
$ mn create-app my-rabbitmq-app --features rabbitmq
    

Micronaut RabbitMQに含まれる新しいRabbitMQ固有プロファイルでは、create-rabbitmq-producercreate-rabbitmq-listenerのコマンドが使用可能になる。メッセージサービスは、新しいプロファイルを使用して次のように作成することができる。

    
$ mn create-app my-rabbit-service --profile rabbitmq

$ mn create-rabbitmq-producer Message
$ mn create-rabbitmq-listener Message
    

上記のコマンドによって、次のようなMessageProducer.javaMessageListener.javaが生成される。

    
package micronaut.rabbitmq;

import io.micronaut.configuration.rabbitmq.annotation.RabbitClient;

@RabbitClient
public interface MessageProducer {

}
    
    
package micronaut.rabbitmq;

import io.micronaut.configuration.rabbitmq.annotation.RabbitListener;

@RabbitListener
public class MessageListener {

}
    

OCIでは、入門資料(getting started)やRabbitMQを使用したイベント駆動型アプリケーションの開発、シングルページアプリケーションの開発など、さまざまなステップ・バイ・ステップのガイドを提供している。これらのガイドの大半には、Java、Kotlin、Groovyでの例が紹介されている。

リソース

この記事に星をつける

おすすめ度
スタイル

BT