マイクロサービス開発が捗る Project Tye
2020/11/27 .NET 5 リリース記念 C# Tokyo イベント
Yuta Matsumura
#csharptokyo
松村 優⼤ (Yuta Matsumura)
Alterbooth Inc.
Chief Technical Architect
(C#, PHP, Azure, Consultant)
Microsoft MVP - Developer Technologies
Fukuoka.NET Organizer
Twitter: @tsubakimoto_s
#csharptokyo
祝 .NET 5 リリース
LTS ではないことに注意︕
サポート期間が気になる⼈は
.NET Core 3.1 を使いましょう。
#csharptokyo
.NET でマイクロサービス開発
ASP.NET Core WebAPI / gRPC
コンテナーイメージのサイズ軽減
パフォーマンス向上
#csharptokyo
https://devblogs.microsoft.com/aspnet/announcing-asp-net-core-
これまでのマイクロサービ
ス開発 (.NET & VS)
1. ソリューションファイルに複数
のプロジェクトを登録する
2. マルチスタートアッププロジェ
クトで各サービスを実⾏する
3. 他のサービスは Docker で実⾏
する
▶ ターミナルが分かれて⾯倒
#csharptokyo
アプリケーション開発以外にも学ぶことが多い。。。
Docker を使った開発⽅法
Kubernetes を使った開発⽅法
Kubernetes へのデプロイ⽅法
CNCF のサービスを使ったインフラ構成
⼤事な知識だけど、開発環境としてはなるべく意識したくない
#csharptokyo
Project Tye
.NET 製のマイクロサービスア
プリケーションの開発とデプ
ロイを⽀援する 実験的なツー
ル 。
https://github.com/dotnet/tye
5⽉の Micorsoft Build にて発
表され、現在も開発が続いて
いる。
#csharptokyo
https://devblogs.microsoft.com/aspnet/introducing-
実験的ってどういうこと︖
実験的 = Experimental
プレビュー段階よりも前であり、今後の展開が明確になっていない。
▶プレビューになるかもしれないし、クローズになるかもしれない。
Tye では public incubation project と表現されている。
つまり、今後ツールとして発展するかどうかは、みんなで盛り上げら
れるかどうか次第︕
#csharptokyo
https://github.com/dotnet/tye/blob/master/docs/FAQ.md
Project Tye でできること
コマンドラインで⾊々できる ( tye )
YAML ファイルでサービスの構成管理ができる ( tye.yaml )
サービス間の依存関係やエンドポイントを解決してくれる
コンテナーイメージを作成してくれる
Kubernetes へのデプロイメントを⾃動化してくれる
Ingress, Zipkin, Dapr, Azure Functions などをサポートしている
#csharptokyo
Tye のインストール
1. Docker
2. .NET Core 3.1 SDK or .NET 5 SDK (後述)
3. dotnet tool install -g Microsoft.Tye ▶ グローバルツール
※ .NET Core グローバルツール
$HOME/.dotnet/tools にインストールされ、マシン上の任意のディレ
クトリからツールを呼び出すことができる。
(dotnet-ef とか libman とか)
#csharptokyo
https://www.nuget.org/packages/Microsoft.Tye/
Tye のバージョン
.NET Core 3.1 SDK は必須です。
SDK Command
.NET Core 3.1
dotnet tool install -g Microsoft.Tye --version
"0.4.0-alpha.20371.1"
.NET Core 3.1,
.NET 5
dotnet tool install -g Microsoft.Tye --version
"0.5.0-alpha.20555.1
※ .NET 5 に対応した正式アナウンスは無い
#csharptokyo
Tye コマンド
コマンド名 説明
tye init tye.yaml を作成する
tye run ローカルでアプリケーションを実⾏する
tye build アプリケーションのコンテナーを作成する
tye push アプリケーションのコンテナーをプッシュする
tye deploy アプリケーションをデプロイする
tye undeploy デプロイしたアプリケーションを取り除く
#csharptokyo
https://github.com/dotnet/tye/blob/master/docs/reference/commandline/README.md
tye.yaml
Tye における構成ファイル。
サービスの実⾏情報、サービスの依存関係、オーケストレーション構
成などを定義する YAML ファイル。
YAML のスキーマ定義も公開されているため VSCode などではインテ
リセンスも効く。
#csharptokyo
https://github.com/dotnet/tye/blob/master/docs/reference/schema.md
ダッシュボードが便利
tye run でダッシュボードが
⾃動⽣成され、サービス⼀覧
から各アプリケーションにア
クセス可能。
各アプリケーションのログを
参照することもできるため、
とても便利。
#csharptokyo
サービス間の HTTP 情報は⾃動構成
環境変数に⾃動的に保持される。
#csharptokyo
環境変数︓フロントエンドの接続情報
Key Value
SERVICE:FRONTEND:PROTOCOL http
SERVICE:FRONTEND:PORT 54224
SERVICE:FRONTEND:HTTPS:PROTOCOL https
SERVICE:FRONTEND:HTTPS:PORT 54225
SERVICE:FRONTEND:HTTPS:HOST localhost
SERVICE:FRONTEND:HOST localhost
#csharptokyo
環境変数︓バックエンドの接続情報
Key Value
SERVICE:BACKEND:PROTOCOL http
SERVICE:BACKEND:PORT 54222
SERVICE:BACKEND:HTTPS:PROTOCOL https
SERVICE:BACKEND:HTTPS:PORT 54223
SERVICE:BACKEND:HTTPS:HOST localhost
SERVICE:BACKEND:HOST localhost
#csharptokyo
環境変数︓Redis への接続
Key Value
CONNECTIONSTRINGS:REDIS localhost:6379
tye.yaml で以下のように定義しているから▼
- name: redis
image: redis
bindings:
- port: 6379
connectionString: "${host}:${port}"
#csharptokyo
環境変数の補⾜
すべてのサービスに環境変数が網羅されます ( tye.yaml の env 以
外)
ポート番号は指定していなければ毎回変わります
サービス URI は IConfiguration.GetServiceUri(name) で取得可
▶ NuGet : Microsoft.Tye.Extensions.Configuration
#csharptokyo
デモ
1. ローカル開発
2. Azure Kubernetes Service へのデプロイ
#csharptokyo
Appendix
Introducing Project Tye | ASP.NET Blog
GitHub - dotnet/tye
.NET Conf 2020 関連動画
Keynote - Welcome to .NET 5 - YouTube
Developing and Deploying Microservices with 'Tye' - YouTube
Secretless Development from Local to Cloud with the New
Azure SDKs, Project Tye, and Kubernetes - YouTube
https://tsubalog.hatenablog.com/archive/category/Tye
#csharptokyo

マイクロサービス開発が捗る Project Tye