Micronaut on Azure
試してみた
平林 拓将(ひらりん)
himarin269 / himanago
Japan Azure User Group 9周年イベント LT 大会
2019/9/7
自己紹介
• Name
• 平林 拓将(ひらりん)
• Work
• 研修講師 / 社内システム開発
• Azure / Xamarin / LINE Bot / Grails
• Like
• C# & Microsoft Azure
• LINE関連API
• スマートスピーカー&VUI
• Social
• Twitter:@himarin269
• GitHub:himanago
• Blog:http://himanago.hatenablog.com/
Micronaut ご存じですか?
• JVMベースのマイクロサービス向けフレームワーク
• ファイルサイズ&メモリ使用量が極小
• コンパイル時DIで起動スピードが速い
• REST APIが作りやすい
• 対応言語はJava/Groovy/Kotlin
• Docker、各種クラウド対応
ちなみにGrails
• Grails
• GroovyによるRails系Webアプリケーションフレームワーク
• Springベースで構築されている
• Groovy
• Javaの簡易化・機能強化による上位互換スクリプト言語
• Javaの文法との互換性を保ちつつRubyのような特徴を取り込んでいる
• 動的型付け、セミコロンレス、クロージャ
※社内でGrails製のアプリを数個運用しています
せっかくなので
•Microsoft Azure で
•Micronautを使って
•Microservices したい!
残念ながら Functions 未対応
https://github.com/micronaut-projects/micronaut-core/issues/897
2018年11月から
動きなし?
Micronaut on Azure 試してみる
• JDK
• Azure向けには「Zulu」提供のものがおすすめ
• https://www.azul.com/downloads/azure-only/zulu/
• SDKMAN
• JDK関連パッケージ管理ツール
• Groovy/Grails/Micronautなんでもここから
• https://sdkman.io/
• Maven
• Javaのビルドツール
• Micronaut本体
• SDKMANでインストール
コマンド操作で作成・デプロイ
※ 簡単に試せるのは下記のチュートリアル
• Deploy a Micronaut app to Microsoft Azure
https://guides.micronaut.io/micronaut-azure-cloud/guide/index.html
# アプリ・コントローラー作成
mn create-app mnsample --build maven
cd mnsample
mn create-controller mnsample.hello
# Azureログイン
az login
# ビルド・デプロイ
cd ..
mvn package azure-webapp:config
mvn package azure-webapp:deploy -DskipTests=true
コード
• HelloController
<plugin>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure-webapp-maven-plugin</artifactId>
<version>1.6.0</version>
</plugin>
• pom.xmlの追記(buildタグ内)
動いた
感想:いいなと思ったところ
• 簡易なコードでAPIが作れそう
• ASP.NET CoreでWeb APIを作るときのイメージ
• Groovy が使える
• 簡単に書けるので、普段が Java でも Groovy にするのはあり
感想:ここが惜しい
• Azure App Service へのデプロイは公式では Maven
• JavaのビルドツールではMavenのほかにGradleがメジャー
• 後発で使いやすい
• Groovyスクリプトで設定が書けるのが魅力的
• Azure用のGradleプラグインがあるのでそれを使えばいけるかも(未検証)
• https://plugins.gradle.org/plugin/lenala.azure.azurewebapp
• IntelliJ IDEA+Azure Toolkit for IntelliJで開発したい
• うまくいかなかった…
• そもそもIntelliJ IDEAがMicronautを機能としてサポートするわけではない
• Maven/Gradleプロジェクトとして動かせるだけ
• 現時点ではAzure CLI+Maven(or Gradleプラグイン)でコマンドベースが楽
• エディターはVS Code
感想:ここが惜しい
• 起動が速くメモリ消費量が少ないという
特徴はあまり活かされない?
• コールドスタートは15秒以上かかる
(Micronautがすごくてもどうしようもない)
• メモリ使用量はASP.NET Coreと比較して半分くらい
まとめ
• まだ Azure では手軽にマイクロサービスを…というのは厳しい?
• Functions 対応後 or k8s上で動かすなら選択肢としてはあり?
• 現時点では 他の言語/フレームワークで Function App 作るほうが現実的
• Grailsアプリの移行も無理に Micronaut にせず素直にC#で書きそう
• Microsoft Azure で Micronaut を使って Microservices するのは時期尚早
(かも)
• よさそう!と思っても実際動かすと期待通りにはいかないもの
宣伝
【す22D】Azure+AIアシスタント・スマスピ本(単著)
• Logic Appsでの完全ノンコーディング開発法
• Azure Functionsでの応用的なクロスプラットフォーム対応
【す23D】LINE API Expert本(共著)
• C# 新SDK+AzureでClovaスキルを作る方法について書きました(裏技付き)
• 他にも多くのLINE APIについて基本から応用まで360ページ超で解説
9/22(土)の技術書典7で本を出します!(2冊)
https://techbookfest.org/event/tbf07/circle/5069404383477760
https://techbookfest.org/event/tbf07/circle/5677593911099392

Micronaut on Azure 試してみた