kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

de:code 2019 DT51でいただいたAzure DevOpsの質問

はじめに

www.microsoft.com

de:code 2019に参加いただいた方、今回のお話を振っていただいた日本マイクロソフトの皆様ありがとうございました。セッション中にsli.doというサービスも使ってQ&Aをうけていたのですが、こちらでも補足します。

https://www.microsoft.com/ja-jp/events/decode/2019/default.aspx

TFS2017のNuGetパッケージ管理機能を使っているのですが、120プロジェクトを含むソリューションに対して復元と更新を実行すると2時間以上かかります。TFS2017での対策と、バージョンアップによる改善が期待できるか教えてください。

docs.microsoft.com

パッケージの全バージョンを常時公開していると、クライアントからのクエリー取得に時間がかかります。そういう場合、このdelete and recover packageのように自動的に古いバージョンのパッケージを削除するようにしてください。

もちろん、保守の都合上、古いのがないと困る、という場合は新しいバージョンには新しいフィードを作って、そちらから取得するようにしたほうがいいんじゃないかなと思います。

TFS 2018からだと思っていたのですが、TFS2017でもあるようですね。

Azure DevOpsを他の新規テナントに紐付けて作るにはどうしたらいいでしょうか?

このお話は、組織アカウント(Azure AD)ベースで作るという前提です。Azure ADに紐づけるにはいくつかのパターンがあります。

  1. 自社組織のAzure ADに作る
  2. お客さんが管理しているAzure ADにつくる
  3. 新規にAzure ADを作ってAzure B2Bで入る

1もしくは2を選ぶ場合、どちらかの組織がAzure ADゲストログオンを認める必要があります。これは組織ポリシーによるので、どちらがいいとは言えませんが、プロジェクト終了時にAzure DevOpsごと納品する前提であれば、1は選べません。

また、Azure ADのゲストユーザーライセンスには上限があるので、そこを超えないかどうかも確認が必要です。

3のAzure B2Bでのログインはおおむねいいのですが、二つほど欠点があります。

  • Teamsが使えない(現在の仕様だそうですので、Slack使ってください)
  • Azure AD P1/P2を使う場合、本体テナントとは別にP1/P2の料金がかかる

後者は考えてみればその通りで、P1/P2ラインセンスはテナント単位でかかります。最初に合意しておけばいいのですが、そうじゃない場合後出しで結構お金のかかるP1/P2の話し出すと怒られるので、気を付けましょう。

Azure DevOpsをお客さんのところで使う場合、ある程度以上のAzure ADの知識が前提になってしまうので、注意してください。

運用段階に入ったプロジェクトにAzure DevOpsを導入することで得られる恩恵を教えてください。

私個人の考えですが、運用段階に入ってから使う場合、運用で困っているポイントだけで使うのがいいと思います。CI/CDでmacOSが必要だけど、macOSのCI探してるとか、リリースが温かみのある手作業だけど、開発環境くらいは自動化したいとか。

ただし、Azure DevOpsに含まれるサービスを単独で使う場合、競合サービスと比べると見劣りするところは確かにありますので、無理に使わなくてもいいとは思います。ライセンスがあるから、まずやってみるとかでいいんじゃないでしょうか。

TFSの書籍などおすすめの資料はありますか?

会場では英語でもいいとのことだったので、ちょうど出ています。

www.visualstudiogeeks.com

www.packtpub.com

www.oreilly.com

自分も書こうと思いつつ、あるていどは書いているのですが…ペース早いですね。

Githubとどう使い分けます?

GitHub便利ですね。GitHubでホストされているOSSにコミット(PR, issue)するならGitHub使うしかないと思います。GitHub用に公開されているAzure BoardsとAzure Pipelinesのアプリがありますね。

github.com

github.com

GitHubに足りないところをちょっと補う感じです。Boardsとissue/Projectsはどうするのよ?というところですが、大規模開発でチームが複数あってひとつのおおきなプロダクトを作る場合、GitHubのリポジトリをあっち見てこっち見てというのは正直つらい。

APIでOrganization全体のProjectみるようなダッシュボード作ればいいのかもしれませんけど、Azure Boardsだとそういうのができます。ステークホルダーも横櫛で通してみやすくなるのと、チーム単位でバックログ見やすくできるので、そういうところはたぶんメリットだと思います。

Azure Pipline を使用して Azure リソースをデプロイする方法についておすすめはありますか?

最初はARMテンプレート、WebAppsでいいなら普通にタスクでもいいと思います。すごくいい記事がいっぱいあるので、おすすめです。

tech.guitarrapc.com

tech.guitarrapc.com

Azure DevOpsのサポートを日本語でうけるにはどうしたらいいでしょうか?

Azure DevOpsからのサポートは普通にMSのサポート対象です。Webから簡単に入力できるサポートは例えば、Azure DevOpsのサーバーの移行(USから東アジア)とか、手違いでだれも入れなくなったとか、そういったことであれば無料で依頼できます。

英語のみですが、機械翻訳でもちゃんと伝わります。

VSTSから、メッセンジャーなくなったので、Slackに移行したけど、いまさらながらTeamsに変えるとなんかメリットありますか?

Slackの有料プラン使っていれば安くなる、でしょうか。ほかの人からありましたが、Slackはあくまでもフロー型、Teamsはストックもできる(バックエンドのSharePointやOneDriveにファイル保存など)というところが最大の違いです。

Slack的にTeams使おうとすると、たぶん切れると思います。会社でもそういう話非常によく聞くんですが、Slackでやってること以外の使い方をしようとしないからなんですね。

Continuous Monitoring していて、パフォーマンス改善のためにリリースしたいが、すでにそのパフォーマンスアラート閾値に引っかかってリリースができない場合って起きませんか?回避する方法はありますでしょうか?

会場では一時的にアラートはずす、かなぁという回答をしてしまったんですが、例えばhotfixリリースのように緊急で回したいような場合は別のリリースパイプラインを作るという方法があります。

もちろんなんでもかんでもリリースできると困るので、branch filterを使って特定のブランチ配下にコミットされた(PRされた)ものだけリリースパイプライン実行するという方法がおすすめです。

負荷テストの未来はどうなっていますか?

2020/3にリタイアすることが決まったので、チームのブログでもほかのサービスを紹介しています。

devblogs.microsoft.com

Azure Pipeline から Azure リソース作成の際、Azure の認証はどうなるでしょうか。 Azure AD が同じではないといけないか、サービスプリンシパルを作成して ID などを別途使用できるかなど

サービスプリンシパルを作ってください、というのが回答です。デモとかではたいていAzureとAzure DevOpsの管理者権限を持っているユーザーでやってしまうのですが、本番ではそうもいかないですしね。

Slackを使っていてAzure PipelinesのService Hooksを登録するのに、パイプライン毎に登録するのがつらいのですが、まとめとか、新しいものが追加されたときに自動でついかされるようにするほうほうはありますか?

ごめんなさい。これは私も不便だと思っています。ちなみにTeamsも同じで、ユーザー単位でそれぞれのビルド定義を追加するので、結構面倒です。feedbackコマンドがあるので、そちらでフィードバックしていただければかわるかもしれません。

REST APIでそういうの作るのとかもいいんですかね…。