kkamegawa's weblog

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

Azure DevOps一年の振り返り

これはAzure DevOpsアドベントカレンダー25日目の記事です。

qiita.com

はじめに

今年はまだ少しありますが、Azure DevOpsの一年で印象深い出来事や機能強化を振り返ってみようと思います。

ブランド変更

今年はなんといってもこの話でしょうか。DevOpsという時流に乗ったキーワードをブランド名にしてしまうことはいろいろな問題もありますが、結果的には今まで知らなかった人たちにもリーチできて、トータルではよかったのかなとは思います。Azure DevOps Projectと区別しづらいという、錯覚しやすいのはどうかなとは思います。

東京で開催するローンチイベントは2回とも満員御礼、大阪でも同様で、今までのTFSUG(Team Foundation Server Users Group)でやっても、きても30人くらいが精いっぱいだったのですが、ブランド変更は大きかったんだなぁとは思います。1/19は私も東京でしゃべるので、よろしくお願いします。

jazug.connpass.com

jazug.connpass.com

現在の最大の問題は、略称がいまいち決めづらいことだと思います(そこか)。英語圏ではAzDev(Azureの略称がAzとかいわれる)などをみかけます。さすがにADOは英語圏でも冗談半分の略称っぽい。

UIの刷新

水平方向から垂直方向のナビゲーション方向へドラスティックに変わりました。中身も日々変わっていっており、「あれ、こうだっけ?」って感じです。クラウドサービスの宿命ではありますが、UIに依存するようなコンテンツが作りづらいのは全世界共通の悩みのようです。

自分は割と慣れてしまいましたが、それでもまだ「どこだっけ?」と探すこともあります。とくにAzure BoardsでバックログごとのタスクをカンバンにするUI表示するときは少し手間がかかる感じです。

以前のUIはかなり遅かったのですが、新しいUIになって応答は良くなった気がします。

UIといえば、Azure Tests配下はほとんど変わっていませんが、これから少し手が入ってほしい気がします。

GitHubとの連携

6月にGitHubを買収してからより統合の方向に進んでいっていますね。ぱっと思いつくだけでもいくつかあります。

  • GitHub/Azure DevOpsのOSS向け10並列無制限ビルドの提供
  • Azure Boardsとの連携
  • GitHubのPull Request連携強化
  • GitHubのReleaseタスク公式提供

GitHubのCEOになったNat氏がRedditで言ってましたが、そのうちGitHubアカウントでAzure DevOpsサインアップ、もしくは招待できるようになってもおかしくないのかもしれません。今まではMSアカウントをどうやって作ってもらうのかが問題の1つでもありましたし、組織ユーザーには組織のメールアドレスでMSアカウントを作れなくなっていますし。

YAMLビルド定義の提供開始

私自身はまだあんまり使ってないのですが、競合のCIサービスと同様にYAMLファイルでビルドパイプラインの定義ができるようになったのも大きいですね。それまではビルド定義の編集にwork itemを関連付けることができなくて、困っていました。個人的にはビルド定義変えるタスクとかも用意して、作業として管理したいのです。フィードバックしたのですが、意見はまっぷたつという感じでした。

YAMLになればコミットで履歴が取れるようになるので、便利ですね。自分がやってなかった理由の1つはIntelliSenseの支援がなかったことですが、VS Codeの拡張機能、Azure DevOpsのエディターでもIntelliSenseが効くようになったので、ぼちぼち使えるかなぁとは思います。

REST API 5.0

今まで .NETベースのオブジェクトモデルでのAPIが提供されていましたが、クライアントにアセンブリが必要だとか、.NET Standard 準拠じゃないから .NET Coreはどうするのみたいな話があって、いまいち使いづらいものでした。ツール作ったことありますが、どうもわやくちゃになってしまってまとまりづらくて、苦労しました。

今はREST APIの拡充とともにPythonベースのAzure-CLIにも機能が増えて、ぼちぼち使えるようになってます。まだ全機能使えるようではないみたいですが、自分がやりたいことはたぶんできそうという感じです。

Git機能の拡大

三年くらい前、Gitの投資が加速し始めたころは「TFVCはまだまだ投資続ける」といっていました。さすがにもうほとんどメンテナンスでしょうかね。巨大なソフトでGitレポジトリを複数にわたって構築していると、レポジトリ追いかけるの大変になっていくので、慣れてないうちはTFVCでもいいのかなとは思います。

単一レポジトリだと大変だ…というときにはVFS for Git使う感じでしょうかね。私はまだ使ってないんですが、docs.microsoft.comのPR出すドキュメントをオンラインで書くのはそろそろつらくなってきたので、検討してみようかと思っているところです。

機能単位でフォルダーを切っていれば部分ごとにチェックアウトできるのはTFVCの大きな利点なのですが、慣れてない人はそもそもきれいに切れないって問題もあるので、悩ましいですね…。

GitHubもAzure DevOpsも両方そこそこ使いますが、GitHubさすがに先行しているだけあって、いろいろよくできてると思います。

Azure Boardsの強化とサービス化

Azure Boardsになる前からですが、複数のチームになると、機能をいつ、どのチームがなんの機能をリリースするという情報を視覚化するのは難しい話でした。Boardsの拡張機能にあるDelivery Plansはそういうチームにお薦めしています。

後はクエリですね。結構高度なクエリが書けるので、チームごとの共通クエリ作っておけばみんなが助かると思います。

GitHubのラベルは非常に使いやすいですね。ピンとこないラベルを思い付きで作って後悔するなんてことが起きないように…Azure DevOpsでもタグで同じようなことはできますが、Area PathとIteration Pathがあるので、割と間に合っている感じですが、うまく使うと便利です。

ライセンスの変更

主にビルド関係ですが、大きく変わりました。OSS向けの無制限10並列ビルド(macOS/Windows/Linuxいずれも)、プライベートリポジトリでは240分/月までだった無償枠が1800分/月までになったことなどでしょう。

240分は確かに競合と比べても少々微妙で、たとえば .NET CoreのASP.NET Coreテンプレートから作っただけのプログラムであっても、Microsoft hostedエージェントではビルドに3-4分程度かかってしまいました。これでは7-80回くらい試行しただけで終わってしまいそうです。

ただ、Unityで作るゲームやリッチコンテンツ向けには10GBというストレージ、2CPU(Windows/Linux)という制限は少々きついように思います。そして、そもそもWindows Serverなので、UnityやUWPのビルドはちょっと大変です。Self-hostedエージェント使えということなのかもしれないですが、別途課金すればより性能の高いサーバー使えるとか、ストレージ増やせるようにするとかあってもいいかなぁと思います。

後は、Dockerコンテナーのキャッシュですかね。MSが提供しているものの一部は格納済みになっているようですが、pull遅いですしね…それもあって、MSインフラのACRをデフォルトにするのかもしれないです。

Azure Artifactsの強化

Upstreamが増えましたね。Artifactsは使いはじめて、まわるようになるまではちょっと難しい機能の1つなのですとくにエンタープライズでは更新のスケジュール決めて、統制したいというニーズはあると思うので、自前でNuGet/maven/npm用のサーバーを用意しなくていいのは便利だと思います。

Azure PipelinsでビルドしたartifactsをArtifactsへアップロードできるようになったりとか、Debug Symbolサーバーも非常にうれしいけど、知られていない機能だと思います。

今までコンパイルしたデバッグシンボルをちゃんと管理しようとするのはほんとにつらいというか、大変だったので、Symbol Server機能はもっと知られてもいいと思うんですが、ほぼVisual Studioからしか使われない(はず)のが原因かなぁ。この変のプロトコルとかオープンになってたっけ?なったら実装しそうな人はいそうだと思います。

Goodby Reporting, welcome Analytics

VSTS時代にもPower BIを使った集計ができたのですが、正式にAnalyticsサービスができて、こちらに移行となりました。まだWork Item関係しかないのですが、Azure DevOps Server(旧TFS)のレポートにあったビルド、テスト、コードコミット関係のデータも取れるようになるといいなと思います。

オンプレミスのAzure DevOps Server(旧TFS)もそのうちSQL Reportingから移行するそうです。

フィードバック先の変更

今までuservoiceで機能要望、developer communityでバグ報告、という切り分けだったのですが、わかりづらいということで、developer communityに一本化されました。要望、バグなどはdeveloper communityにどうぞ。

英語で報告するのは…という場合、言ってくれればお手伝いします(そんなに得意なわけじゃないけど)。TwitterでたまにAzure DevOpsの日本語ツィートをエゴサーチしてるので、見かけたらいろいろコメントしてます。

大規模障害

Azure DevOpsサービスは機能が多いこともあって、時々サービス低下が起きているように見えると思います。今年の事後報告書が出るくらいの大規模障害は3回だったかな…と思ったら4回ですね。

Postmortem: Azure DevOps Service Outages in October 2018 – Service Blog – Azure DevOps

Postmortem: VSTS 4 September 2018 – Service Blog – Azure DevOps

Postmortem: Global VSTS availability issues – 22 May 2018 – Service Blog – Azure DevOps

うち、一度はAzure DNSが死んでしまって、間接的に影響を受けました。

2016 年 9 月 15 日に発生した DNS の問題について – Japan Azure IaaS Support Blog

データセンターの物理的な障害はいましばらくの間あきらめるとして、前半にあったソフトウェアの更新ミスによる大規模障害は今後減っていくとうれしいですね。

事後報告が出ないような特定のリージョンだけで発生した問題や、特定の機能の障害は今後信頼性を上げてほしいと思います。

来年はどうなるでしょうか。

Brian の引退

これは大多数の方には関係ないのですが、VSS(Visual Source Safe)の時代からTFS2018までずっと開発サーバーを統括していたBrian Harryが家庭の事情で一年のサバディカル休暇に入って、トップがNat氏になりました(その後GitHub CEOを兼任)。今年3月のGlobal Summitが最後のイベントだったようです。Nat氏は良く知られているように、OSSをベースとしたスタートアップを複数成功させて手腕には定評があります。

ちょっとずつですが、いろいろ変わってきてるなぁと思った一年でした。

来年はオンプレミス版のAzure DevOps Serverが正式版になり、みんなに垂直方向のUIが使えるようになります。できれば本ちゃんと出したい…。