MacでAzure Service Fabric(Java)を試す - ローカル環境

#はじめに
Azure Service Fabric(Java)を試したので記録として残しておきます。

# 動作確認環境
OS:
macOS Mojave Version 10.14.6 (18G84)

STS:
Spring Tool Suite 4 
Version: 4.5.0.RELEASE
Build Id: 201912171052

Eclise:
Eclipse IDE for Java Developers
Version: 2019-12 (4.14.0)
Build id: 20191212-1212

#1. 準備
#1.1 CLI
[Azure Service Fabric CLI](https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-cli#cli-mac)
#1.2 ローカル開発環境
[Set up your development environment on Mac OS X](https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-get-started-mac)

#1.3 今回良く使用するコマンド類

```
docker run -itd -p 19080:19080 -p 19000:19000 -p 25100-25200:25100-25200 -p 8080:8080 -v [/Users/tworks55/eclipse-workspaces/mySFWorkspace]:/tmp/mySFWorkspace --name sfonebox mysfcluster

* [/Users/tworks55/eclipse-workspaces/mySFWorkspace]部分は環境に合わせて変更

sfctl cluster select --endpoint http://localhost:19080

docker logs sfonebox
docker stop sfonebox
docker rm -f sfonebox

```

#1.3 今回良く使用するURL
http://localhost:19080/
http://localhost:8080/

#2. 検証結果
#2.1 クイック スタート:Azure Service Fabric 上に Java Spring Boot アプリをデプロイする
[クイック スタート:Azure Service Fabric 上に Java Spring Boot アプリをデプロイする](https://docs.microsoft.com/ja-jp/azure/service-fabric/service-fabric-quickstart-java-spring-boot)

ひとまずデプロイは可能だが、Scale up/Fail Over時がイマイチ。ローカル環境だから仕方ないのかもしれません。

注意点としては、

- sftestclusterを立ち上げる際に -p 8080:8080 を忘れないようにする事
- entryPoint.shに書くjarファイルの名前がBuildされたものと一致している事
- Scaleさせインスタンスを３つにするとPortが被ってエラーになる（想定どおり？）
- 起動中のインスタンスを再起動しFailOverするがDownTimeが発生する（原因不明）

あたりです。

起動後のイメージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131481/989c00cd-f7b0-2b68-72bd-36166d61ac32.png)


#2.2 クイック スタート:Azure Service Fabric on Linux に Java アプリをデプロイする
[クイック スタート:Azure Service Fabric on Linux に Java アプリをデプロイする](https://docs.microsoft.com/ja-jp/azure/service-fabric/service-fabric-quickstart-java-reliable-services)

Eclipse/STS on MacでPlugin使えない。Projectを右クリックしてもServiceFabricのメニューが出ない。
>プロジェクトを右クリックして、 [Service Fabric] ドロップダウンの [Publish Application](アプリケーションの発行) を選択します。

の操作ができない。


#2.3 チュートリアル:Azure Service Fabric 上に Java API フロントエンド サービスとステートフル バックエンド サービスを含むアプリケーションを作成する
[チュートリアル:Azure Service Fabric 上に Java API フロントエンド サービスとステートフル バックエンド サービスを含むアプリケーションを作成する](https://docs.microsoft.com/ja-jp/azure/service-fabric/service-fabric-tutorial-create-java-app)

Eclipse/STS on MacでPlugin使えない。Projectを作成しようとするとこのようなエラーが発生する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131481/645cbcad-1e85-91e9-b008-0324e44edbab.png)
そもそもLinux向けでWindowsはダメのようだが、Macはどうなんでしょう？
https://github.com/MicrosoftDocs/azure-docs/issues/30819

以下を確認する限りではMacでも行けそうですが。
https://github.com/MicrosoftDocs/azure-docs/blob/master/articles/service-fabric/service-fabric-get-started-eclipse.md


>[!NOTE] If Eclipse isn't working as expected on your Mac, or needs you run as super user), go to the ECLIPSE_INSTALLATION_PATH folder and navigate to the subfolder Eclipse.app/Contents/MacOS. Start Eclipse by running ./eclipse.

#2.4 Visual Studio Code を使用して Java Service Fabric アプリケーションを開発する
[Visual Studio Code を使用して Java Service Fabric アプリケーションを開発する](https://docs.microsoft.com/ja-jp/azure/service-fabric/service-fabric-develop-java-applications-with-vs-code)

Service Fabric Reliable Services extension for VSCodeを使って BuildしてもBuildされなかったため、TerminalでBuildを実施。
(VSCodeから通っているPATHが足りないのか、Gradleが何もせず終了してしまう）

```VSCODE.
/asf/service-fabric-java-quickstart $ gradle 

> Task :help

Welcome to Gradle 6.0.1.

To run a build, run gradle <task> ...

To see a list of available tasks, run gradle tasks

To see a list of command-line options, run gradle --help

To see more detail about a task, run gradle help --task <task>

For troubleshooting, visit https://help.gradle.org

Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.0.1/userguide/command_line_interface.html#sec:command_line_warnings

BUILD SUCCESSFUL in 685ms
1 actionable task: 1 executed
~/asf/service-fabric-java-quickstart $ gradle --version

------------------------------------------------------------
Gradle 6.0.1
------------------------------------------------------------

Build time:   2019-11-18 20:25:01 UTC
Revision:     fad121066a68c4701acd362daf4287a7c309a0f5

Kotlin:       1.3.50
Groovy:       2.5.8
Ant:          Apache Ant(TM) version 1.10.7 compiled on September 1 2019
JVM:          1.8.0_231 (Oracle Corporation 25.231-b11)
OS:           Mac OS X 10.14.6 x86_64

~/asf/service-fabric-java-quickstart $ gradle

> Task :help

Welcome to Gradle 6.0.1.

To run a build, run gradle <task> ...

To see a list of available tasks, run gradle tasks

To see a list of command-line options, run gradle --help

To see more detail about a task, run gradle help --task <task>

For troubleshooting, visit https://help.gradle.org

Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.0.1/userguide/command_line_interface.html#sec:command_line_warnings

BUILD SUCCESSFUL in 584ms
1 actionable task: 1 executed
```

```terminal.

~/asf/service-fabric-java-quickstart/Voting $ gradle

Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.0.1/userguide/command_line_interface.html#sec:command_line_warnings

BUILD SUCCESSFUL in 32s
15 actionable tasks: 11 executed, 4 up-to-date
~/asf/service-fabric-java-quickstart/Voting $ 
```

その後、extensionの機能でinstallし正常稼働。VSCODEのExtensionもまだ安定していない雰囲気。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131481/39602416-7527-c85e-f9d0-65e4173f4bde.png)