.NET の 開発ツール Project Tye とは

この記事は更新から24ヶ月以上経過しているため、最新の情報を別途確認することを推奨いたします。

はじめに

 現在のアプリケーション開発はコンテナーやサーバーレスの普及と共にモノリシックからマイクロサービス・分散アプリケーションへ移ってきています。
 方法論としてアプリのための12要素や、機能としてサービスディスカバリー、サーキットブレーカー、分散トレース、監視などが必要であり、それぞれの機能やライブラリの実装として Netflix Eureka、HashiCorp Consul、Dapr、SteelToe などが開発されています。

 Project Tye は、マイクロサービスの開発を容易にすること、.NETアプリケーションのKubernetesへのデプロイを自動化することを目的としています。
 開発を容易にするとは、イコールローカルオーケストレーターのことで、「tye」から始まるコマンドで多くのサービスを実行したり、サービスディスカバリーのように他のサービスのアドレスを自動的に検出・動作することで開発時のURLの衝突を防いだりすることが可能です。

 この記事では、Project Tye のサンプルコードを動作させどのような仕組みか試してみます。

▼ 用語説明
※サービスディスカバリー:マイクロサービスでは複数のエンドポイント(インスタンス)が動的に生成され、IP が固定されることはありません。それらのエンドポイントを一括管理する仕組みがサービスディスカバリーです。ロードバランサーでは各サービス毎のロードバランサーが必要になるため、現在はサービスディスカバリーで管理する手法が一般的です。

※サーキットブレーカー:あるバックエンドサービスが落ちた場合、それ以上そのバックエンドにリクエストさせないようサーキットブレーカーを配置し、フロントに通知します。バックエンドにリクエストを処理させず、より早い回復を促します。

※分散トレース・監視:マイクロサービスでは各サービス・各インスタンス毎にログ出力すると見にくく管理しにくいため、一括して監視するための仕組みが必要です。

動作させてみる

 サンプルコードは多々ありますが、以下のサンプルを動作させてみます。
https://github.com/dotnet/tye/tree/master/samples/frontend-backend

VS Code で開き、tye run と打つだけです。

すると、「http://127.0.0.1:8000/」で専用のダッシュボードが動作します。

これは tye.yaml に記載されているサービスを tye が自動的に起動しているからで、開発者はこのサービスの記述をプロジェクトやその他の docker を動作させるような yaml にしたりすることで、任意のサービスを動作させます。

サービスディスカバリとログ出力を見てみます。
フロントエンドではバックエンドの IP を記載せず、tye.yaml 記載の ”backend” サービスを指定します。

ログはダッシュボードで各サービス毎に見ることが可能です。上記のログも URL が動的に生成されます。


まとめ

Project Tye は .NET Conf 等のイベントで紹介されていますが、実験的プロジェクトであり正式に開発されているものではありません。しかし、開発~Kubernetes 初期デプロイ時の yaml 記述などの簡略化やコンテナー開発への入り口として役立つものと思います。
※Kubernetes への本番デプロイは GitHub Actions や Azure Pipeline 等の CI/CD を使用します。
マイクロサービスの開発は複雑ですがこれを機に .NET での開発がさらに容易になればと思います。

参考URL:
https://devblogs.microsoft.com/aspnet/introducing-project-tye/
https://github.com/dotnet/tye
https://www.youtube.com/watch?v=kX0eX5tDGgc
https://www.youtube.com/watch?v=prbYvVVAcRs
https://www.youtube.com/watch?t=17224&v=J9oJTKwASjA

いいね (この記事が参考になった人の数:4)
(↑参考になった場合はハートマークを押して評価お願いします)
読み込み中...

注意事項・免責事項

※技術情報につきましては投稿日時点の情報となります。投稿日以降に仕様等が変更されていることがありますのでご了承ください。

※公式な技術情報の紹介の他、当社による検証結果および経験に基づく独自の見解が含まれている場合がございます。

※これらの技術情報によって被ったいかなる損害についても、当社は一切責任を負わないものといたします。十分な確認・検証の上、ご活用お願いたします。

※当サイトはマイクロソフト社によるサポートページではございません。パーソルクロステクノロジー株式会社が運営しているサイトのため、マイクロソフト社によるサポートを希望される方は適切な問い合わせ先にご確認ください。
 【重要】マイクロソフト社のサポートをお求めの方は、問い合わせ窓口をご確認ください