明けましておめでとうございます!今年の元日は DeclarativeSql の vNext を作ろうということでほぼコーディングをして過ごしていました。
これまでしばらくやるやる詐欺をしていたのですが、実際に製品で使ってくださっている方から「とても便利で感激したので、ぜひお礼したい」とお食事に誘っていただいたりしたので、嬉しくなってついに重い腰を上げましたw 素敵な感想をいただいて本当に嬉しかった!
vNext ブランチにコードがコミットされているのでいくらか何してるかは確認できますが、もう少しだけ機能追加したら pre 版をリリースしようと思っています。
サービス停止のフラグ
DeclarativeSql は簡単な CRUD 操作を対象にしているデータベースの種類関係なく透過的に書けるというのが良いところのひとつです。言わずもがな Oracle データベースもサポート対象にしていて、今回実装した機能の動作確認をしようと思い Azure 上に Oracle VM (= ここでは Oracle データベースがインストールされた仮想マシンのことを指します) の環境を構築していました。以前は勤め先で Oracle を使っていたのをいいことにテスト環境を間借りして動作確認したりしていたのですが、今は手元に Oracle 環境がないのでクラウドで何とかしようと短絡的に考えたワケです...。
ちょっと Azure の仮想マシンで Oracle Database でも立ててみるかなぁと思ったら、月額 \80,000 とかで吹き出しそうになったww 消し忘れたらクラウド死するやん...!><。
— じんぐる (@xin9le) 2016, 1月 1
Oracle Database 11g R2 Standard Edition の一番安いプランでもコレです。超ショボいマシン性能のくせにお高いなんてもんじゃない。MSDN サブスクリプションで賄える範囲 (\15,500/月) をゆうに超えている...(白目。とはいえ、全くテストしないワケにはいかないのでビクビクしながら仮想マシンを立てました。
最低サイズのインスタンスなのに 8万円/月 なインスタンスを立てた。怖すぎる...。
— じんぐる (@xin9le) 2016, 1月 1
案の定引っかかった
数時後、作業を終えてサッサと仮想マシンを削除してひと眠り。翌朝親戚の家で新年の食事会があるとのことで出向いたところで...
Azureのアカウントが停止されたぁぁぁぁぁうぎゃゃゃゃゃ
— じんぐる (@xin9le) 2016, 1月 2
Oracleのインスタンス消してあるのになんでだ!ふざけんなぁぁぁぁ
— じんぐる (@xin9le) 2016, 1月 2
新年2日目やぞぉぉぉぉぁぁぁぁぁ!
— じんぐる (@xin9le) 2016, 1月 2
嫁の実家で新年の親戚集い中に Azure 停止メール食らって全く何も食べてない(白目
— じんぐる (@xin9le) 2016, 1月 2
この時点で今月使用可能なクレジット残高は \12,000 以上あったので、いくら超絶お高い Oracle データベースを立てても数時間ぐらいで使い切ったりはしないハズ...。なのですが、利用制限に到達したと言われました。
Azure のエキスパートたちからの助言
「Why, Oracle database...」「Why, Azure subscription...!!?」と途方に暮れていたら、Azure が得意な MVP 軍団が助言をしてくれました。
@xin9le @shibayan
https://t.co/0u4lpGgi3f
既定の ¥0使用制限機能をオフにし、正規の従量課金料金を支払う必要があります。そうでない場合、使用制限を超えてしまい、サブスクリプションがすぐにオフになってしまいます。
— はつね (@hatsune_) 2016, 1月 2
cap 設定してて 1 円でも課金発生した時は止まる。昔、一回だけなったことある
— しばやん (@shibayan) 2016, 1月 2
MS的にはうっかり課金を止めてあげたのよ?だと思うの。。。
— Saori Ando (@sao_a) 2016, 1月 2
ザックリとまとめると以下の通り。
- MSDN Subscription で毎月貰える月間利用可能額を超えないよう利用上限を設定していた
- Oracle VM のような 3rd Party 製の仮想マシンは MSDN / BizSpark などのクレジット適用範囲外
- 今回 Oracle VM を立てたためにクレジット範囲外の課金が発生
- 予期せぬ課金から身を守るための保護機能が作動
- 利用上限を解除して支払いをするまでサブスクリプション停止をくらう
なので利用制限を取り払えば解決しそう、とのこと。とりあえず安心しつつも、こういう身の毛のよだつジョークをかまされたりもしました。
Azureのオラクル1か月つけっぱで100万くらった人数人いた気がする
— Keiichi Hashimoto (@k1hash) 2016, 1月 2
念のため Azure サポートに聞いてみた
Azure MVP たちを信じていないわけではないのですが、念のため停止されたサブスクリプションを再開するための方法を問い合わせてみました。まずは日本のサポートチームから。すると...
Azure のサポートさんから電話かかってきて「今営業日じゃないし、技術的な内容じゃないから翌営業 (1/5) までそのまま待て」って言われるなど。コチラ、一応サイト止まってるんですががが…。 #無慈悲過ぎた
— じんぐる (@xin9le) 2016, 1月 2
ま、まぁ今回は個人サイトだし超緊急じゃないからガマンできるんですが、もしお仕事中だったら簡単に引き下がったりしないぞバーロー。とそこにさらに JAZUG のキングから「サポートは常に US を使うんだ」と言われました。
@xin9le だからUSやで
— Keiichi Hashimoto (@k1hash) 2016, 1月 2
@xin9le 関係ないで。あっちはあっち。待機してくれてる方々にお世話になって、最後にアンケートでオール満点つけてあげるよろし。
— Keiichi Hashimoto (@k1hash) 2016, 1月 2
大変ご丁寧に、英語が苦手な僕のために問い合わせのテンプレート文章までくださり...。
@xin9le I have exceeded my sunscription "".So it has stopped. Could you restart? If I have to do something, do you teach me?
— Keiichi Hashimoto (@k1hash) 2016, 1月 2
あとは必死に英語で状況説明をして、最終的に公式回答として利用上限を外しなさいと教えていただき、無事解決と相成りました。良かった× 2。
Azure サポートへの問い合わせはこれまでしたことがなかったので、問い合わせの仕方が分かった分とてもよい体験になりました。日本のサポートさんは翌営業日まで対応してくれないけれど、US のサポートさんは「これから僕休暇に入るから別の人に引き継いでおいたよ」的な感じで解決まで持って行ってくれました。えぇ、サポートは US さんが良いですね、ハイ。
まとめ
- Oracle の課金はサブスクリプションとは別なので注意
- もしやってしまっても利用上限を (当月だけでよいので) 外して対応
- サポートは US さんのが速くて丁寧
- 利用上限設定されている状態で Oracle VM とか使えないようにしてほしい (← 強い願望
そして最後に、Twitter で助言くださった皆さん、本当にありがとうございました m( )m
追記 1 : Linux ベースの仮想マシンを使おう
Facebook で Microsoft のエバンジェリストである佐藤さんから「Linux ベースの Oracle データベースだったら大丈夫」との助言をいただきました!簡単にまとめると以下の通りです。
- 今回僕が使っていたのは Windows Server ベースの Oracle データベースの仮想マシンイメージ
- Linux ベースの場合は BYOL (= ライセンス持ち込み型) なので、本番環境向けには別途 Oracle データベースのライセンスを購入する必要がある
- 開発/テスト目的であればライセンスは不要
- なので仮想マシン自体の料金のみで Oracle データベースを利用可能
- 利用制限を外す必要がない
コレですよ!僕が求めていたものは...!そして超リーズナブル!
以下は参考資料としていただいたリンク集。
- Oracle Database 12.1.0.1 Standard Edition by Oracle
- Oracle 仮想マシン イメージの一覧
- Virtual Machines の価格
- Oracle Technology Network - Licenses
追記 2 : 日本のサポートさんとの電話
1/5 になったので日本のサポートさんから電話がかかってきました。カクカクシカジカ現状について話した後、いくつか質問してみました。以下はその一部。
Q1.「今回の例では個人サイトなので特に問題にならないですが、一発でサブスクリプション停止となると実業務でも簡単に問題になったりしますよね?そういう事例はありませんか?」
A1.「お客様と同様の事例のトラブルを担当したことがあります。確かにドキュメントには注意書きがあるのですが、ポータル上でそれが一切分からないことでご不便おかけしております。重々承知しておりますので、重ねてフィードバックを上げておきます」
Q2.「Windows Server ベースではなく Linux ベースの 仮想マシンを使えばクレジット内課金だと認識していますが、それは正しいですか?」
A2.「仰る通りです。開発/テスト目的であれば Linux ベースのものを利用することをオススメ致します」