リソース名やタグはどのようにつけるの?Azure CAF #Azure リレー
2020-05-06
azblob://2022/11/11/eyecatch/2020-04-02-naming-and-tagging-000.jpg

はじめに

先週の河口さんの「自分が思う一番簡単な方法でAzureMLのAutoMLでMLOpsを組んだ」に引き続き、毎週水曜日Azure リレー第10回を担当します。河口さんの記事は、最新MLOpsをハンズオン形式で紹介してくれているので分かりやすくておすすめです!ぜひ、読まれていない方は読んでみてください。

今回はAzureで何か作るときに必要になるリソース名やタグについてです。
サービスを構築するときには、様々なものに名前を付けなくてはなりません。クラウドでは概念的な構造にも名前を設定する必要があり種類や数が多く大変です。また、IaCで実装でも事前に整理することが必須です。そんなときに役に立つルールがあります。Azureのリソースへの名前付けとリソースへのタグ付けのベストプラクティスです。

ご紹介するコンテンツ

Azureクラウド導入フレームワーク(CAF)というものがあり、その中に設計の指針となる情報がベストプラクティスとしてまとめられています。今回はその中のコンテンツの一つです。

推奨される名前付けおよびタグ付け規則

サービスの略称

クラウドのサービスは、とても種類が多いです。それぞれに作る人が自由に名前を付けると、近い言葉にはなりますが、どうしても統一されません。また、ルール作るにしてもどこまで決める?というのが課題になります。

たとえば、ロードバランサーです。ロードバランサーがインターネットに公開されているのか、それともローカルのネットワークに閉じているのかを判別できるように名前を付ける場合の略称が紹介されています。
・ロード バランサー (内部)  lbi
・ロード バランサー (外部)  lbe

次の例はクラウドでものを作るときに必ず登場してくるストレージです。統一されていないとこういうものこそ後で大変です。
・ストレージ アカウント st

このようなルールを決めてものづくりをしていきたいのですが、全て個別に決めるのは数が多いのと、どんどんサービスは増えていくので大変です。以下のリンクがそんなときに役にたちます。

推奨されるリソースの種類のプレフィックス

利用されている環境や情報の略称

リソースがどのようなアプリケーションに利用されているのか、どのようなデプロイ環境なのかをリソースに付けておくと運用しているときに目に見える状態で作業ができるので安心できます。

たとえば
デプロイ環境 prod、dev、qa、stage、test

他にも事業の単位やリージョンが紹介されています。詳細は以下のリンクで確認ください。

推奨される名前付けコンポーネント

タグでメタ情報を付与する

クラウドでリソース構築をするようになり、リソース自体にタグというメタ情報が付与できるようになりました。タグは、柔軟にリソースに情報を付与できるのでしっかり設計して活用できるようにしましょう。

クラウドはすべてのリソースをプログラムで操作できるのでメタ情報を付与しておくことで、タグによりフィルタ処理をしたり、特定のタグを持ったものだけのレポートを作成できます。タグで本番環境であることやコスト管理している部署名を付与しておくことで、「Aサービスの本番環境のリソースは何だっけ?」とか「部署ごとのの利用しているリソースは?」とか「そもそもこれ誰が管理してるんだ。。。?」といったことが簡単に収集できるようになります。また、タグは、複数Key-Valueで設定できるのでデータ自体がプログラムで扱いやすいです。

例としてこのようなものがあげられています。

リソースが利用される予定の期間
・プロジェクトの開始日
・プロジェクトの終了日

動作しているサービスのレベル
・サービスクラス サービス レベル アグリーメント レベル
 (ServiceClass、Dev、Bronze、Silver、Gold)
・障害復旧 ビジネス上の重要度
 (DR Mission-critical、Critical、Essential)

誰の持ち物で誰が支払うのか
・所有者名 サービスの所有者
・承認者名 コストの承認を担当する人物
・必要な予算/承認された予算 割り当てられた金額
・コストセンター  誰がこのコストを支払うのか

もちろんアプリケーション名などシステム情報も付与できますが、ビジネスやサービスに直結する情報も合わせて推奨されています。いままでこういった情報は別にサービスを管理するアプリケーションを構築、もしくはパッケージを購入してきてデータベースを保存されていました。リソースに直接情報を付与できれば、 別の仕組みを利用しないで済みます。手書きして間違うことも、資料をなくしてしまうこともないです。情報はそのものに張り付いていてくれるのが一番管理しやすいですね。 家畜のタグと同じです。キャッチ画像の牛は酪農のプロの方なら見分けられるのかもしれませんが、クラウドのリソースはエンジニアでも名前以上に見分けられないのですしね。タグちゃんと付けときましょう。

メタデータ タグ

まとめ

一定のルールにそってサービスが作られていると、運用開始してから扱いやすくなります。 上記の情報を組み合わせて名前をつけるルールも書いてありますので、 ぜひ、参考にして自分たちにあったルールを組み立ててみてください。

自分が新人の頃に扱ったシステムは、プログラムで利用されている変数まですべて完璧に管理されていて 調査するときには、対象変数で検索すればいいだけになっていました。その時はその凄さが分かりませんでしたが今思うとすごすぎて恐ろしさすら感じます。規模も大きく、作られた時代もだいぶ古かったので。

今はルールがオープンにベストプラクティスとして公開されています。
ぜひこういったものを利用してみてください。

Azure 向けの Microsoft Cloud 導入フレームワーク