kkamegawa's weblog

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

Microsoft MVP Award renewal

one more year!ということで、今年も何とかMVP Awardを Developer Technologiesのカテゴリーで受賞できました(12回目です)。ありがとうございます。今年はMicrosoftのシステムが一時的にメンテナンスしていた?のか少し遅くなったようです。

去年はラジオの紹介(今週金曜22:00〜よければ来てね)でしたが、今年もイベントを企画しています。もうすぐ集客サイトを公開します(最終確認中)。

devblog.connpass.com

ブログ書く頻度がなかなか減ってしまっていますが、ネタがいくつか下書きのまま…今年もGitHubやAzure DevOps(Server 2022?2023?はいつ出るのだろう)や開発効率化について色々考えていこうと思います。

よろしくお願いします。

Azure DevOps 2022/6/2の更新

Azure DevOps Sprint 204リリースノートの翻訳を行いました。オリジナルはこちらからご覧ください。

docs.microsoft.com

Azure PipelinesでmacOS 12とUbuntu 22.04がプレビュー公開されました。今年後半には正式になるそうです。それまでは-latestはまだ変更されません。

Azure Boardsのダッシュボードコピーが正式版に、Boards上でたくさんItemがあるとき出ていたShow more itemsのボタンが出なくなるようになるそうです。Work Itemといえば、一つのWork Itemの更新が10000を超えるとエラーになってしまうそうです。

devblogs.microsoft.com

まぁ普通に考えて一つの作業項目を10000回更新するのはちょっと荒れすぎる運用なので見直してね、ということですね。もしもAPIで更新するようなツールを使っていて、エラーが出た場合、手動でクローズ、削除などの手段をとってくださいということだそうです。

例えば特定の一つのアイテムで保守的な作業を延々やっている場合起きるかもしれませんが、作り方としてはちょっと良くないということですね。気を付けてください。ではまた三週間後。

ranslate to Japanese to Azure DevOps release note…

Azureで自動処理を行うためのPaaSは何を選ぶ?

今自分が得意だからということもあるのですが、Azure Pipelinesを使って簡単なデータ流し込み処理をしています。ふと思ったのですが、ほかにもこの手の自動化で使えるPaaSがあってどういうときに使えばいいのかなと思って考えてみました。

Azure Automation

docs.microsoft.com

  • Azure インフラストラクチャの構成管理、簡単な自動化処理
  • Python, PowerShellスクリプト 5.x / 7.1(Preview)とAzモジュールで書いたスクリプトを指定した時間、指定した条件で実行する
  • 500分の無償枠あり
  • Hybrid Workerでオンプレミスも管理可能(クラウドと値段が違うのに注意)
  • ソースコードはGitHub / Azure Reposで管理&デプロイ可能
  • incoming Webhookでの実行も可能

日本ではJP1などのジョブ管理ソフトを使って「指定した時間にこのVMを再起動させる」とか「この処理を実行する」みたいなことをよくやっていますね。Azure Automationの場合、単発処理は楽ですが、「Aというジョブを実行した後にBというジョブを実行するけど、この条件の時はCというジョブを実行する」みたいな複雑な処理だとできないことはないけど、ちょっと辛いかも。特に業務的なカレンダーがあってそれを参照しながら動くとかね。あと、一応グラフィカルPowerShellワークフローというものはあるのですが、ランタイムが現在5.1のみなので、ちょっと辛い。

Runbookを使って、定期的に短時間で済むけど、手順書見ながらやらなくてはならないような処理はまずこれ検討したらいいように思います。

Azure Pipelines / GitHub Actions

よく使っています(笑)。Microsoftが運用するHosted Agentと自分で運用するself-hostedがあります。私が使うのはだいたいself-hostedのVMSSエージェントです。

self-hostedを使う理由ですがこの辺ですね。特に1番目と3番目が大きい理由です。

  • Microsoft-hostedは60分でジョブが打ち切られる
  • 仮想マシンがDS2くらいなので、2 vCore / 8GB RAMではつらいことがたまにある
  • 閉域網内で処理したい

処理はShell Script / PowerShell / 任意のプログラムなんでもいいので便利です。YAMLの試行錯誤がちょっと辛いかな。Azure Automationがローカルでテストしたスクリプトがほぼそのまま動くのと違って、参照情報が変わることが多いのがつらいかもしれないですね。

こちらも無償枠はありますが、申請式です。

docs.microsoft.com

1-2営業日で返事は来るはずです。

Microsoft Hosted agentの場合は定期的にイメージが変わるので、インストールされているソフトの変更には注意してください。node.jsとかPythonとかですね。self-hostedを使う場合、VMSSエージェントの利用が前提になると思いますが、VMイメージ作成を自動化していないと厳しいでしょうね。私は毎月OSパッチリリースのタイミングでAzure Compute Galleryに入れるイメージを作り直しています。

Azure Functions(のTimer Trigger)

docs.microsoft.com

この辺に注意ということで。実行時間を無制限にするにはPremium以上のプランにするか、Consumption planの場合は別途Container AppやAzure Batchなどにリクエストだけ投げて結果は別の方法で受け取るといった処理にする必要があるでしょうか。

こちらもAzure Automationと同様に複雑な条件分岐を実装することはできるけどコードでやるのはどうかな?というところです。Functionsなので、CI/CDもサポートされていますね。

(追記)
Logic Appsもコネクターで用意されている範囲であれば可能ですね。もちろんAzure Functionsと連携もできますが、それなら最初からFunctionsでいいじゃないかとも思います。

Azure WebJobs(2022/6/5追記)

docs.microsoft.com

すっかり忘れていましたが、Azure WebJobsもありますね。現状ほとんどFunctionsになると思いますが。

じゃあ何選ぶ?

ものによるけど、やはりAzure Automationでできるかどうか考えるかなぁ。Functionsは正直あまり考えない。Pipelinesは並列度が多くなると課金が比例するのと、イメージ作るのが面倒になりますね。

github.com

GitHub Actions / Azure Pipelinesと同じイメージを作るこのレポジトリをforkして、だいぶそぎ落としたカスタマイズ版を使っていますが、それでも1時間ちょっとはかかりますので。

ほかにこんな方法でやっているよ!とかあれば教えてください。

Azure DevOps 2022/5/4の更新

May the Fourth(4th) with you! ではないですが、Azure DevOps Sprint 203リリースノートの翻訳を行いました。オリジナルはこちらからご覧ください。

docs.microsoft.com

今回はBoardに対する機能改善が中心でしたね。親IDに関連付けられている子供のWorkItemって今まで取れなかったんだ(気づいていなかった)。プライベートプレビューなので、記事に書かれているメールアドレスにorganization名と"Cloud you enable private preview feature for Query by Parent Id?"とでも書いて送ればいいはずです。

今までBoardのカンバン上の順序はIDしかなかったので、swimlanesを使うかしかなかったのですが、ボード上で優先順位の変更ができるようになるのはいいですね。

バグとして報告されたとしても様々な事情で直さないということはありました。報告した人からしたらいやだけど、won't fixというラベルがつくともにょっとしますよね。Azure DevOpsではカスタマイズしないとできなかったこの値が標準でサポートされることになりました。まぁあればありがたいです。

Azure ArtifactsでUniversal Packageの複数organiztionでのupstreamがサポートされました。基本的には組織(会社など)で単一organizationを運用が推奨ですが、様々な事情でできないこともあります。そういう時には使えると便利ですね。

ではまた三週間後。

Translate to Japanese to Azure DevOps release not…