みなさんはサーバーに対して処理を行う際に、どのようにリクエストを行っていますでしょうか。 ニフティクラウドの様なクラウドサービスではコントロールパネルが用意されているため、人間の操作によってリクエストを行うこともできますし、 イベントの検知を行うプログラムを用意し、その内部でリクエストを行う処理を記述している方もいらっしゃるかと思います。 この度、2015/8/5(水)にリリースしたニフティクラウドタイマーは時間をキーとしてこのようなリクエストを行うことができるサービスです。 本記事では、ニフティクラウドタイマーを利用してプログラムを記述することなくサーバーの運用を自動化しコストの削減とサーバーのイメージ化を行う方法をご紹介します。
ニフティクラウドタイマーについて
ニフティクラウドタイマーは、Unix系OSにおけるcronの様に時間を指定し、 cronにおけるプロセス実行の代わりに、定期的にリクエストを実行することができるサービスです。時間とリクエストの内容はコントロールパネルから容易に登録することができます。ニフティクラウドタイマーでは時間とリクエストの組を1タイマーとして扱い、 2,000円/月(税別、以下同)という安価な料金で30タイマーまで登録することができます。
リクエストの種類にはHTTPリクエスト、MQTT、Fluentdがあるほか、 いくつかのニフティクラウドとの連携機能を用意しています。 各リクエストでは下記のようなユースケースを想定しています。
- 非同期ワークフローのエントリーポイントとしての、WebHookへのHTTPリクエストやFluentdクラスタへのレコードの送出
- ニフティクラウドMQTT(β)などのMQTT Brokerと連携したデバイスへの定期的なメッセージのPublish
- ニフティクラウド連携機能を用いたサーバー起動・停止などの定期実行
サーバー運用の自動化
今回はニフティクラウド連携機能の具体的な利用例として、次のようなシナリオを説明します。 ニフティクラウドのサーバーは従量制の場合に、起動時と停止時で利用料金が異なるため、利用しない時間帯が分かっている場合にサーバーを停止させておくことで、コストを削減につなげることができます。 このような作業を実行するために、ニフティクラウドタイマーを使って、サーバーに対して定期的に日次の起動・停止リクエストの設定を行います。 また、バックアップとして月に1回、イメージ作成のリクエストを行う設定を行ってみます。
詳細な要件は下記となります。
- サーバータイプはmediumを想定
- 午前8時から午後10時まではサーバーを起動し、それ以外は停止する
- 月初めの1日にサーバーをイメージとして保存する
- 処理が失敗した場合にはメールで通知を送る
上記の想定通りにサーバータイプ medium のサーバーを毎日 10 時間停止すると、月額課金で 24,200 円掛かりますが、従量課金だと 19,740 円(1ヶ月を720時間として計算。起動中420時間×42円+停止中300時間×7円)に抑えることができます。
サーバー起動用タイマーの作成
それでは、実際にタイマーを作成してみましょう。
ニフティクラウドのコントロールパネルにログインし、 左上のメニューから構築・運用・管理とたどり、タイマーのダッシュボードを開きます。
作成ボタンからタイマーの作成を行います。
ステータスは有効のままとし、タイマー名とスケジュールを入力します。 スケジュールは要件の通り、午前8時を設定します。
タイプにサーバー起動を選択すると、専用のフォームが表示されるので、 起動させたいサーバーのリージョン、サーバー名を選択し、起動時のサーバータイプ、料金プランを設定します。
要件ではリクエスト失敗時に通知することになっていたので、 リクエスト失敗時に通知するにチェックと通知先のメールアドレスを入力します。
最後に作成内容を確認し、タイマーの作成を行います。
サーバー停止用、イメージ作成用タイマーの作成
サーバー停止用、イメージ作成用のタイマーもサーバー起動用タイマーと同様に作成することができます。
ニフティクラウドでは同じ名前のイメージは作成することができませんが、 ニフティクラウドタイマー経由で作成されたイメージ名には末尾に日付情報が付与されます。 イメージ名が被って失敗することはありませんのでご安心ください。
リクエスト実行
設定した時刻を待たずに、その場でリクエストを実行することもできます。
処理の内容に間違いがないか、スケジュールに無理がないか等を確認することができます。
効果
前述の通り、今回の要件であればサーバー1台あたり 24,200 - 19,740 = 4,460 円/月のコスト削減となります。 ニフティクラウドタイマーの利用料金が 2,000 円/月ですので、総計で 2,460 円/月の削減となり、額は小さく見えます。 しかし、これは medium サーバー 1 台の場合であり、スペックの高いサーバーや台数が多いほど、削減額は大きくなります。 例として同要件で large8 が 10 台の場合は(63,360 - 49,500)×10 - 2,000 = 136,600 円/月とサーバー2台分以上の削減となります。 また、手作業で行う場合に比べてオペレーションミスが減る、運用コストが削減できるなどの効果もあります。 ※large8 サーバーの従量課金は、起動中110円/時、停止中11円/時で、また1ヶ月を30日=720時間として計算しています。詳しい料金は、ニフティクラウド料金一覧をご覧ください。
まとめ
ニフティクラウドタイマーにおける、ニフティクラウド連携機能を用いたサーバーの起動・停止およびイメージ化の自動化を行う方法をご紹介しました。 このほかにも 「1日ごとにサーバーのスナップショットを取得したい」、「特定のURLにHTTPリクエストを行い、ステータスコードとして4xx/5xxを返したら通知してほしい」 などの定期的なリクエストをプログラムなしに利用することが可能です。 今回紹介した様に、ニフティクラウドタイマーでは時間をキーにした運用の自動化を簡単に行えますので、是非ご利用ください!