kkamegawa's weblog

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

2021年振り返り

早いですね。今年も引きこもり状態でしたが、皆様いかがお過ごしでしょうか。

お仕事

あまり書けませんが、会社内ではいろいろAzure関係で相談いただくことが多くなりました。仕方ないとはいえ、専門ではないインフラとかMicrosoft 365関係の話が多くて、かなり困りながらやってます。この辺もうちょっとサクッとやってもらえる仲間が欲しい。

自分で手を動かすことも引き続きやっていますが、がっつりプログラムではないなー悲しい。

コミュニティ

tfsug.connpass.com

TFSUGのほうは少なかったのですが、IgniteとかBuildの時はちょこっとコミュニティとしてお手伝いしてました。オンラインになって距離と時間の制約が少なくなったのはいいことでもあり悪いことでもありですね。

devblog.connpass.com

一方金曜夜に隔週でやっているラジオはゆるゆると続いてやっています。次は1/7なので、またよろしゅうに。突発でゲストに出てくれる方も募集しています。主催の三人の知り合いで、MSのdevblogs.microsoft.comの話をしても大丈夫な方であればウェルカムです。

お買い物

こまごまとしたものは買っていますが、今年はとうとう(?)YAMAHAのRTX830買って泣きながらコンフィグ設定しました。

iPhoneもいつも通り2年ごとの買い替えでした。なので、来年は買わない予定。

Fitbit Ionicのベルトがゆるくなって固定できなくなったので(Fitbitの持病)、本体は大丈夫だったのにSenseを買う羽目になりました。これ急いでいたから気づいていなかったのですが、私の用途ではChargeで全然問題なかった。

ちょうどFitbitからアンケートが来たのでベルトと充電器の互換性がない話はボロカスに書いておきました。

サーバーが一台壊れたのでついでにNASにしてみました。2.5Gbpsのハブも買ってメインマシンが2.5Gbpsになったときの準備万端です。メインマシンは悩んでいますが、たぶんIntel Gen12のCore i7で作ることになりそうな予感がします。

来年に向けて

時間の使い方が下手だなぁと相変わらず思ってしまいます。この年になっても成長しない…そこをほんとに何とか改善します。では皆さんよいお年を。

merge文で単一のテーブルにレコードがあれば更新、なければ追加する

docs.microsoft.com

T-SQLでのmergeするときのサンプルは複数のテーブルを使ったものばかり出てくるので、単一テーブルで「レコードがあれば更新、なければ追加」する際の自分用のメモ。ProductテーブルのIDはユニークなキーとなっているとします。

create table Product(
  ID int not null,
  Name nvarchar(128),
  Price Decimal(10,2),
  RegisterDate Date
)

merge Product as P
using (select 123 as [ID], 'Apple' as Name, 100.00 as Price, '2021/12/26' as RegisterDate) as s
on p.ID = s.ID
when matched then 
  update set p.Price = 200, 
  p.RegisterDate = CAST( GETDATE() AS Date ) 
when not matched then 
  insert values (123, 'Apple', 100.00, '2021/12/26');

Azure DevOps 2021年を振り返る

Azure DevOpsアドベントカレンダー最終日の記事です。書いていただいた&読んでいただいた皆様ありがとうございました。

qiita.com

今年の振り返り的なやつをAzure DevOps Feature Timelineみながらつらつらと。十大ニュースというほどもないはずなので、5大ニュースくらいでしょうか。

サービス継続性

https://status.dev.azure.com/_historyで振り返ることができます。Last Yearでフィルタリングしても直近100件しか出ない😥。最後が8/17なので、250近くのサービス低下があったと考えられます。US Regisonでは100件以上、APACだと28件😲。RCA(事後分析レポート)が出ている障害はなかったのですが、macOS agentが4日間ほどサービス低下していた件が直ったのが12/20なので、これはそのうち出るんじゃないかなと思います。

Azure DevOpsは複数のサービスで動いていますが、サービスはUSにしかないものがあるのかもしれないので、一概に「APACにおいていれば大丈夫」とは言えないかもしれませんがネットワーク的に近い場合、APAC選んでもいいかもしれないですね。最近は海底ケーブルどんどん施設されているので、USのほうがレイテンシー小さいことがあるかもしれません。

Azure Pipelines無料枠が申請式になる

docs.microsoft.com

docs.microsoft.com

なんといっても今年一番のニュースと言ったらこれになるでしょう。昨年末からBitCoinが高騰したことにより、こういったCIサービスの無料枠が狙われることになりました。Azure Pipelinesだけではなく、GitHub ActionsやCircle CIでも同じことが起きています。

github.blog

circleci.com

MSとしてはGitHub Actionsの方を中心に防御することにして、Azure Pipelinesの無料枠は申請式になりました。最初は申し込んでもなかなか通らなかったそうですが、今は落ち着いているようです。いい感じの機械学習モデルができたら元に戻すという話なので、期待して待ちたいと思います。

Delivery Plans 2.0が正式版になる

docs.microsoft.com

拡張機能として好評を博していたDelivery Plansが本体機能として正式版になりました。今年唯一ちゃんと作った😅新機能なんじゃないかな?本体に入ったことにより新機能や性能もよくなりました。Boardsの紹介するときは必ず入れています。

Pipelines Agent OSのEOLによる入れ替え続く

docs.microsoft.com

docs.microsoft.com

docs.microsoft.com

Windows, Ubuntu, macOSどのエージェントも古いバージョンがリタイアします。Brownout(わざと失敗させること)による警告が予定されているものもありますので、注意しておきましょう。WindowsとUbuntuはそうでもないですが、macOSはほぼ毎年更新されてリタイアすることになるので気を付けましょう。

docs.microsoft.com

docs.microsoft.com

Windows Server 2022とmacOS 11が追加されました。

Azure ReposもProtected Source対象になりました

docs.microsoft.com

個人的に気に入っている機能なのですがAzure DevOpsの各種リソースを保護対象にできます。今回はそれがReposにも広がったということですね。リリース用のtempleteを別のリポジトリに入れている時とか便利に使えますね。

PAT管理の自動化がサポートされる

docs.microsoft.com

docs.microsoft.com

小粒ですが、今までPAT(Personal Access Token)は最長一年だったので証明書と同様「忘れたころにトラブルが起きる」ものでした。Azure ADで動いているorganizationに限られるのですが、組織として運用すると担当者の引継ぎでミスしやすいところなのでうれしい機能ですね。

Azure Pipelinesのこまごました機能追加

docs.microsoft.com

docs.microsoft.com

docs.microsoft.com

派手な機能追加はなかったのですが、地味な使い勝手の改善は少しずつ行われてきました。Pipeline Decoratorとか個人的にものすごく好きな機能です。

docs.microsoft.com

一方セキュリティの強化として、自動的にEnvironmentsが作られるのが抑制されたのはいいことではあるのですが非互換としては対応必要で厳しかった人もいるのかなと思います。

まとめ

この一年もあまり主だった(目を引きやすい)わかりやすい機能強化は少なかったのですが、使っていて不便だとかセキュリティ&コンプライアンス強化のためのメンテナンスが続くという感じですね。Azure Managed IdentityのサポートOffice文書のプレビューk8sベースのセルフホストエージェントが予定されているで、この辺は期待ですね。

では来年もよろしくお願いします。

続:Azure PipelinesからのAzure Load Testingでパラメータを渡す

ついでにAzure DevOpsアドベントカレンダー20日目にしてしまいましょう。

qiita.com

kkamegawa.hatenablog.jp

の続きで、こちらの記事で「パラメータ渡せない」とあったので調べてみました。

gooner.hateblo.jp

同じパイプラインにダミーでenvを追加してみましたが、invalid jsonにもならずにうまく行ってますが…うーん🤔。私はWeb画面で編集してしまいましたが、VS Codeとか使うとエラーになるのかも?

       - task: AzureLoadTest@1
          inputs:
            azureSubscription: 'AzureLoadTest'
            loadTestConfigFile: '$(System.ArtifactsDirectory)/myWebsiteName/azure-load-testing.yml'
            resourceGroup: 'demo1204'
            loadTestResource: 'kazloadtest'
            env: |
              [
                {
                  "name": "webapp001",
                  "value": "https://webapp001.exsample.jp"
                }
              ]
 

f:id:kkamegawa:20211220182834p:plain