爆速で月額￥20～？商用SQL Serverを最安値でAzure SQL Databaseクラウドで立ててみた

#AWSかAzureか・・・
現職ではOffice 365(旧名ですね、今はMicrosoft 365)が入っており、私がJoinしてから数カ月たつがレガシーなオンプレ、アプリの環境でタイムマシーンでかなりかなり前に戻った感がある中、Power BIやPower Apps等のツールに魅力を感じてもらっており徐々に展開が始まっている。SalesforceもLightning Platform Starterの紹介をしてミニマムスタート。そんな中、雑多なデータベースのニーズがありCDS(Common Data Service)はPower Appsでは使えても（Microsoftのソリューションでは使えても）サードパーティーのハードウェアやソフトウェア、例えばバーコードスキャナーの接続が容易ではないと判明。そんな中、AWSとAzureをかじっていた経験もあってRDSかAzure SQLかどうしようかなと考えていたが両方の認定試験を受けていた私はAzureの方がGUIが豊富であることと他のMicrosoftのソリューションとつなげるのであればAzureかなということで上役の意見も考慮しAzureになりそう。自分自身の契約でO365、Azureの契約があったので試しにSQL Serverを最安値で立ててみようかと検証してみた。
#目を疑う見積もりが・・・月額16円？！
![Minimum SQL Database Cost1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/518389/d58b4b0b-ba32-c5c2-ef3a-1ab674eef915.png)
AzureでSQLサーバーを立てる際にほとんど使わないのであれば（勉強目的や負荷が少ない等）秒単位でCPU使った時間のみ利用料として課金される「サーバーレス」で作るのが良いようだ。後述のDTUという方法もある。今回はサーバーレスで作成してみた事例。別のプロビジョニングモードでは1時間単位でアップ時間をチャージされる模様で高い。こちらで見積もりすると高くてあきらめてしまう人が多いと思うが、サーバーレスやDTUでなら小規模でもなんとかなりそう。サーバーレスは直近ではGen5というジェネレーションで作成するようだが、CPU 0.5-1vCore, 2.02-3GBメモリ、1GBのストレージが最低スペックのプランのようだ。Azureのリージョンによって値段が異なり最安値と最高値のリージョンでは倍近く値段が異なる。日本に近い場所ではUS West2 が安い。US Westは高いので注意が必要。少し遠くなるがUS East, US East2もUS West2と同じ料金のようだ。1GBのストレージコストとして16円、他にCPUを利用した場合は0.016232/秒円なので1分使うと約1円となる(実際には後述する一時停止/Pauseまでは若干の課金が続くので一度アクティブになると最低1時間は何かしらの課金がされる)。表示内容を信用するとDBの玉のみ維持で（ほとんど）動かさなければ消費税合わせて月額20円程度になる。サーバーレスプランにするかしないかは事後変更ができるようなのでたくさん使うときはDTUかプロビジョニングモードで使い、ほとんど使わないときになればサーバーレスに切り替えという手法も取れる。これは知っていると状況によってかなりのコスト削減になりそうだ。
#Resource Groupは分けた方が良いかも
![Minimum SQL Database Cost2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/518389/baf0c044-58ee-c00c-61e2-cd3d9b7e17cc.png)
AzureではAWSにはないリソースグループという概念がありリソースを束ねる概念がある。ここではExperimentというリソースグループにしているが、「DBサーバー」とサーバーの下に「DB」の箱が作成される。Windowsマシンを作成するとネットワークカードやディスクのようなものが次々リソースとして作成されるがSQL Databaseの場合は極めてシンプルでDBのサーバー、DB自体しか作成されない。DB接続するためにAzureのリソースから許可するかとか現在接続中のPC/スマホのグローバルIPを許可するかなどの設定ができる。当然、これらの設定は作成後に変更もできる。**サーバー名は"任意のサーバー名.database.windows.net"という名前**になりグローバルDNS解決ができる。（従い、利用をする上で使い方によっては固定IPの契約はいらない）
![DB.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/518389/78e93d3a-ec2d-61af-683d-ba33598e4f8e.png)
セキュリティ設定変更はこんな画面で：
![Minimum SQL Database Cost4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/518389/47bf5b3e-7882-b686-fbb3-0487b9aff3fb.png)

#作成後はODBCやSSMSでつながる・・・ここまでの時間、作ろうと思ってから10分で完了
![Minimum SQL Database Cost3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/518389/b84bc306-9732-0d67-0a14-eb1d85617385.png)
![SSMS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/518389/71a6ee41-9e5b-3b8d-32b1-1ebef4052d1a.png)
![SSMS2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/518389/d072c3f3-2718-cdb7-1e6a-b24cbaa2ff3b.png)

中国語練習のため中国語にしていますことお許しください。

#使っていないときは自動電源OFF
インアクティブになってから1時間～7日後を設定可。必要時に自動アクティブになる。
![auto-pause.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/518389/bf9f6956-99de-45d4-aa5b-452bc424c00d.png)

#サーバーレス vs. DTU vs. vCore
「サーバーレス」は自動ON/OFF、パフォーマンス自動調整を期待しほとんど使わない場合はコストを低く抑えられるモデル。
少し多めに使う場合は「DTU」Basicで設定した方がよさそう。他にStandard, Premiumというものもある。
プロビジョニング「vCore」はDTUでは不足気味、常時パフォーマンス期待したい場合に設定するのがよさそうだ。お金はかかる。
https://blog.engineer-memo.com/2018/04/09/sql-database-%E3%81%AE-dtu-%E3%81%A8-vcore-%E3%82%92%E3%81%96%E3%81%A3%E3%81%8F%E3%82%8A%E6%AF%94%E8%BC%83%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B/

#US West2はパフォーマンス的に大丈夫なのか？
私の仮想Windows 10もUS West2にいてリモートデスクトップでときどき電源ONして使うのだが（スペックは B2S で動かす）、スマホのテザリングでもまずまずの描写速度なので満足している。重たくないPower BIであれば普通に動いている。MacのユーザーがPower BI Desktopをどうしようかという話をよく聞くが、Azure上にWindows 10マシン、Power BIインストールして作ってしまえばいいじゃんと思う。マシンを動かさなければ32GBのディスク容量の場合は月額300円程度だ。体感としては日本国外にあるのか否か正直わからないと思う。
ディスクは何もしないと128GBで作成されるが　[とある方法](https://qiita.com/mnoda/items/3c9ef715d11d1271c9a1) https://qiita.com/mnoda/items/3c9ef715d11d1271c9a1 で32GBに落とすことに成功している。
![PC.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/518389/6a7e6d36-c3f0-08c0-49c2-9b90907ce6c4.png)
　
#オンプレで立てないメリット
あまり語られない話だが、SQL ServerでもWindowsサーバーでも共通でCAL不要。
CALをまともに買うとこれだけでもコストがかかる。オンプレでこれが無いとライセンス違反。

#何か検証したいときのために
月額20円程度しかかからないのならしばらく置いておこうと思う。何か検証する際にすぐに使えるから便利だ。
Serverlessモードの詳しい仕様はこちら。
https://docs.microsoft.com/ja-jp/azure/azure-sql/database/serverless-tier-overview