とある技術の開発日記

Diary of irregular phrase programmer

Azure Dev Test Labsに触れてみた

AzureにはAzure DevTest Labsという、開発者&テスター向けの仮想マシンを管理する機能があります。

どの程度何ができるのか軽く触れてみたのでまとめておきます。

azure.microsoft.com

できること

  • 仮想マシンの数とインスタンスサイズを制限
  • 作成する仮想マシンのイメージを制限
    • Marketplaceから使用できるイメージを制限
    • 独自のVHDイメージ
  • 仮想マシンを作成後にアーティファクト(成果物)と呼ばれるアプリケーションをプロビジョニング
  • 仮想マシンの自動起動と自動シャットダウン

アーティファクト(成果物)について

まだ、日本語訳の問題なのかアーティファクトと成果物という単語が乱立しているので混乱しますが、アーティファクトは仮想マシンの作成後にインストールするアプリケーションです。

仮想マシンイメージを作るときのアーティファクト選択はWindowsとLinuxベースで異なりますが、Windowsだとこのような感じのアプリがデフォルトで用意されてます。 f:id:airish9:20160616094004p:plain

アーティファクトはjsonで管理されているリポジトリに定義されているので、独自でアーティファクトを追加する事もできます。

azure.microsoft.com

自動起動・自動シャットダウンのスケジュール

仮想マシンの自動起動や自動停止は全体だけでなく、仮想マシン単位で行う事ができます。

起動のスケジュールは曜日単位で選べるのですが、停止スケジュールは曜日選択できないようです。

f:id:airish9:20160616103958p:plain:w300:left

f:id:airish9:20160616104017p:plain:w300

まとめ

DevTest Labを使うとユーザーは制限された範囲内で仮想マシンを使用する事ができます。管理者側からするとDevTest Lab単位でコストの確認や、Azureサブスクリプションから開発&テストメンバー用にサブスクリプションを貸し出しているような利用方法になります。

f:id:airish9:20160616100617p:plain

月給を吹っ飛ばすAzureサービスについて考えてみた

f:id:airish9:20151211115528j:plain

この記事はMicrosoft Azure Advent Calendar 2015の11日目の記事です。

qiita.com

今回はAzureの料金についてのお話しです。

見積もりを作ったり、月の使用料だったりと料金を気にする機会が多いのですが、自分で頑張って計算しようとすると面倒くさいので便利なサービスはどんどん使ってしまいましょう。

プロに任せる

何事も専門家に任せると安心ですね。Microsoftでは無料で構成を伝えると見積もりを行っているので、お客様等に見積もりを出す際には積極的に利用していきたいですね。

Webからの申請とFAXでの申請の2種類があり、申請後に担当者からの返信がある一般的な見積もりです。ちなみにお値段は無料。

www.microsoft.com

だいたいの構成と料金が知りたい

構成例と大まかな料金をシミュレートするには「Microsoft Azure 簡易見積もりシミュレータ」を利用しても良いかと思います。簡単な構成例の金額が大まかに解るので大まかな試算に利用します。

www.microsoft.com

自分で頑張る

細かい部分の金額も含めて試算する場合には料金計算ツールを利用します。サービス単位に細かい設定が可能なのでもっとも利用頻度が高いです。

新しいサービスや名称変更の反映など、Azureのアップデートにも頑張って対応しているように感じます。

料金計算ツール

以上、3つを利用すれば殆ど困らない範囲で、試算はできると思います。

試算してみた

とりあえず使ってみたかったので金額を決めて試算してみました。設定金額は某○○師匠からネタを頂いてサラリーマンの月給程度とします。

サラリーマンの平均給与

サラリーマンの平均給与は、国税庁が行っている民間給与実態統計調査結果を参照します。

民間給与実態統計調査|統計情報|国税庁

ここには統計表*1があるため、平成26年度分の調査結果の中から「第12表 業種別及び年齢階層別の給与所得者数・給与額」を見ると全業種の全年齢平均給与額は\415,000だと解ります。 30歳~34歳の製造業や情報通信業の平均給与は44万円~48万円という結果が読み解けます(ミナサン オカネモチ デスネ)

今回は全年齢の平均給与:\415,000でどのくらいAzureのサービスが使えるのか調べてみました。

仮想マシン

利用頻度の高い仮想マシンのD14インスタンスを1ヶ月(31日間)動かし続けると\228,422/月となります。

f:id:airish9:20151211035044p:plain

一台でこの価格なので二台回せば1ヶ月で平均給与を吹っ飛ばせる程度にはなりますが、コア数の制限に引っかかるかと思います。

各サービスには様々な制限があるので以下のページを確認して事前に確認しておきましょう。

azure.microsoft.com

月給を溶かす構成

月給を溶かせそうな構成を考えてみました。以前、Media Servicesで痛い思いをしたので今回もAzure Media Serviceを利用します。

Media Serviceのエンコードユニットやライブストリーミングユニットは高額なのでとりあえずPremiumEncoderユニットを25立ち上げると月給を超えた金額を気軽に飛ばす事ができます。

  • Media Services
    • PremiumEncoderユニット × 25 → ¥1,017,450/月

f:id:airish9:20151211113744p:plain

溶かさないようにする仕組み

Azureには課金に関するAPIが用意されているので、そちらを利用すると月給を溶かす前に検知できるかと思います。*2

azure.microsoft.com

  • Azure Resource Usage API
    • Azureの使用状況に関するAPI
  • Azure Resource RateCard API
    • 推定金額やレート情報に関するAPI

この2つのAPIを組み合わせる事で溶かさない仕組みを作り出せるのですが、年末の忙しさにより試せませんでした。。。(今年中には触りたい)

まとめ

Media Service → 高い

俺らの給与 → 安い

*1:なぜかxlsファイル形式

*2:このAPIはプレビュー:2015/12/11現在

AzurePowerShellでリソースグループを削除する方法

勉強会でデモ用のサイトを複数立てたのでサイトが乱立していました。

一気に消したい場合はリソースグループごと削除するとサイトをまとめて消せるためとても便利です。

新ポータルから削除しても良いのですがAzure PowerShellに慣れるために試しにPowerShell経由で削除しました。

リソースマネージャを操作できるようにモジュールを切り替え

Azure PowerShellには3つのモジュールが用意されており以下のようになっています。

  • Azure
    • 従来のコマンドレットが含まれています。
  • AzureResourceManager
    • Azureのリソースをまとめて管理するためのコマンドレットが含まれています。
  • AzureProfile
    • AzureとAzureResourceManagerに共通するコマンドレットが含まれています。(Add-AzureAccount 等)

以下のようにしてAzureResourceManagerコマンドに切り替え

Switch-AzureMode -Name AzureResourceManager

リソースグループを表示

ポータルから見るとこんな感じ

f:id:airish9:20150220021927p:plain

Get-AzureResourceGroupコマンドレットでリソースグループを表示

Get-AzureResourceGroup | Format-Table ResourceGroupName

結果はこんな感じ

ResourceGroupName
-----------------
FukuazuResourceGrp01
FukuazuRsourceGrp02

リソースグループの中のリソースを表示

リソースグループの中にどんなリソースがあるか確認したい場合はGet-AzureResourceコマンドレットを使用します。NameとResourceTypeを表示する事で中身を何となく特定できます。

Get-AzureResource -ResourceGroupName FukuazuResourceGrp01 | Format-Table Name,ResourceType
Name                                                        ResourceType
----                                                        ------------
CPUHigh FukuazuBasic1Plan01                                 microsoft.insights/alertrules
CPUHigh FukuazuStandard-01Plan01                            microsoft.insights/alertrules
ForbiddenRequests fukuazu201502site003                      microsoft.insights/alertrules
ForbiddenRequests fukuazu201502site007-01                   microsoft.insights/alertrules
LongHttpQueue FukuazuBasic1Plan01                           microsoft.insights/alertrules
LongHttpQueue FukuazuStandard-01Plan01                      microsoft.insights/alertrules
ServerErrors fukuazu201502site003                           microsoft.insights/alertrules
ServerErrors fukuazu201502site007-01                        microsoft.insights/alertrules
FukuazuBasic1Plan01-FukuazuResourceGrp01                    microsoft.insights/autoscalesettings
FukuazuStandard-01Plan01-FukuazuResourceGrp01               microsoft.insights/autoscalesettings
fukuazu201502site003                                        microsoft.insights/components
fukuazu201502site007-01                                     microsoft.insights/components
FukuazuBasic1Plan01                                         Microsoft.Web/serverFarms
FukuazuStandard-01Plan01                                    Microsoft.Web/serverFarms
fukuazu201502site003                                        Microsoft.Web/sites
fukuazu201502site007-01                                     Microsoft.Web/sites

リソースグループを削除

Remove-AzureResourceGroup -Name FukuazuResourceGrp01

確認を促してくるのでYを入力

Are you sure you want to remove resource group 'FukuazuResourceGrp01'
[Y] はい(Y)  [N] いいえ(N)  [S] 中断(S)  [?] ヘルプ (既定値は "Y"): Y

ポータルからも削除されている事を確認できます。

PS C:\> Get-AzureResourceGroup | Format-Table ResourceGroupName

ResourceGroupName
-----------------
FukuazuRsourceGrp02