マッシュアップアワードという、開発コンテストに応募した作品折り返し翻訳辞書(サーバ側でAzureを利用)がバズった時に、やったこととか、その際にかかった金額について書いてみます。
個人でクラウドを利用する開発ってどんな感じなの?
という時の参考になるかもと思い書いてみることにしました。
ちなみに自分のAzureレベルは、
- Azureを利用して簡単なサービスを一つ作ってみたことがある
- Azureマシンラーニングを触ってみたことがある
という程度です。(ついでに、コードはC#で書いたのですが、そのレベルについても触ったことがある、という程度です)
フロント側の対応についてはこちらを参照ください
自分は、androidアプリでのプロトタイプの実装と、その実装ロジックをサーバ側でApiとして提供する、という部分を担当しました。
利用した Azure の機能
- Azure App Service
- Azure SQL Database
- (Visual Studioからデプロイ)
バズるまでの構成、バズった時の負荷の概算、実装の簡単な説明
- Azure App Serviceは無料枠を利用
- Azure SQL DatabaseはBasicサービスレベル(~ ¥612/月)を利用
もしかしたら記憶違いがあるかもしれませんが、とりあえず安いやつを選んでいた覚えがあります。
負荷については、とりあえずリリース -> バズった!
という流れで準備不足だったこともあり、正確には測れていないのですが、おそらく 20リクエスト/s
くらいだった気がします。
サーバ側の実装はシンプルで、
- キャッシュがDBにあればそれを返す
- なければ 翻訳Api を実行して返す。結果はDBにキャッシュしておく
という感じでした。
やったこと
- Azure App Service をスタンダード(S2)のサービスプランへ変更(¥21.63/時間. ~ ¥16,116/月)
- 同時にオートスケールを設定
- ピーク時は一時的にS3へ変更(半日程度)(¥43.25/時間. ~ ¥32,130/月)
- Azure SQL Database を スタンダード(S2) のサービスレベル へ変更 (¥11.65/時間. ~ ¥8,670/月)
これでアクセスの多かった最初の1周間を乗り越えることができました。
その後は
- ダッシュボードのグラフを見ながら、徐々に安いプラン、レベルへ落としていく
という作業を行い、現在では
- Azure App Serviceは無料枠を利用
- Azure SQL Databaseはスタンダード(S0) のサービスレベル(¥2.33/時間. ~ ¥1,734/月)
に落ち着いています。
DBがS0なのは、DBの容量がベーシックの最大値を超えてしまったためです。
これについては不要なキャッシュを消す等すればBasicに戻せそうな気もしています。
最初の1週間でかかった金額について
- Azure App Service: 大体4000円程度
- Azure SQL Database: 大体2000円程度
※サービスの負荷が下がっていたのにサービスレベル、プランを落としはじめたのが1週間後だったため、高めになっております。。。おそらく慣れている人であれば、2/3 から半額程度の金額になったのではないかと思います。
※なお、この金額にMicrosoft Translator の使用料金は含まれておりません><
感想
- 無料プランでリリースしたが、札束で殴りつけることでバズった時も乗り越えられてクラウドすごいと思った(小並感)
- visual studioからのデプロイが驚くほど楽で、なんか最近はやりのDevOpsやってる感があった
- 人手や初期設備に不足のある個人開発者ほど、クラウドを利用した開発、運用の恩恵が大きいのではないかと思った
- 特にバズった時でも(札束さえあれば)サービスを安定して提供し続けられるという安心感が大きい
- 不要なインスタンスによるクラウド破産に気をつけましょう