まだプログラマーですが何か?

プログラマーネタ中心。たまに作成したウェブサービス関連の話も https://twitter.com/dotnsf

タグ:objectstrage

リアルタイムに商品の最安値を調べるサービス「ねっぴ」を開発・運営しています:
ねっぴ(http://neppi.co/) 


サービス内のカテゴリを展開したり、検索窓から製品を検索して商品を絞込むと、その商品の販売を取り扱っていそうなウェブサービスを探し、取り扱っていた場合はそのサービス内での最安値を探し、最終的には価格順にソートして「どこで買うと安いか」を表示してくれる(クリックすればそのまま購入ページにいける)、というサービスです:
2015030500


有名な価格比較サイトと同様のサービスと理解いただくのが分かりやすいと思います。ただ上記のようにそのサイトもねっぴでは比較対象の1つと考えていて、必ずしもそのサイトが最安値を提供しているわけではないことがわかります。ねっぴは「その場で」&「リアルタイムに」価格を検索して比較する点が異なります。


サービスの使い方はこちらに簡単なオンラインヘルプを用意しています。ユーザートラッキングなどを目的とはしていないため、面倒なサインアップなど不要で、誰でも利用できます:
「ねっぴ」の使い方


本ブログエントリでは、「ねっぴ」の環境や技術的な内容について紹介します。
参考までに、こちらは以前に某LTでねっぴと試作段階の TweetsMapper について紹介した資料です:
ねっぴ on IDCF


上記資料内でも触れていますが、元々ねっぴは自宅サーバー環境で開発・動作確認等を行い、テスト運用を経て何度かの引越を経験し、現在は IDC フロンティア 様の IDCF クラウドを利用して運用しています。


基本構成としては一般的(?)な Linux + Tomcat + MySQL で、高速化のために一部 memcached を併用しています。 データベースの日次バックアップには Amazon S3 互換の Object Storage を使っています(参考)。 IDCF クラウドのサーバーインスタンスにはスワップメモリ領域が用意されていなくて不安(というか不安定)だったので、Linux の起動時にスワップファイルを作成して利用するようにしました(参考)。 更に IDCF を通じて利用できる Mackerel 監視サーバーを有効化するため、エージェントを導入しています:
2015030502


ここまでの環境を IDCF クラウドの light.S1 サーバー1台(!)でまかなえています。ディスクは ROOT の 15GB のみで追加なし、Mackerel は IDCF を通じて使う場合の特別プランが用意されていて、追加料金なしでもそれなりに使えます。Object Storage とネットワーク I/O は無料枠の範囲内で収まっています。

・・・というわけで、この「ねっぴ」の環境はバックアップや監視まで含めて light.S1 サーバーの月額最低料金である 500 円で実現している(!)、ということになります:
2015030501


うーん、我ながら俺って優秀やりくり上手でいい主夫になれるかもw まあやりくり上手というよりは「無茶」なだけかもしれませんけど。。。

ただこの環境を IDCF の light.S1 サーバー1台で提供している背景についても触れておく必要があります。
もともと IDCF クラウドに移る前は別業者の同価格帯のクラウド(というか VPS)を使っていました。サービスとして公開できていましたが、開発環境をそっくりそのまま公開した感じで、パフォーマンスレベルなどは二の次、という感じでした。開発者視点で考えると、そもそもどのレベルを求めるのか?という話にもなってしまい、現在もそこまでしっかり考えて公開しているわけではないのですが、当時は単に「動いたものをそのまま公開した」というレベルでした。その時点ではバックアップはしていません。監視もシェルスクリプトレベルでした。

このサービスは「リアルタイム価格検索」を行うことと、商品マスターをクローリングするという特性上、ネットワークのバックボーン性能がサービス性能に影響する度合いが大きいという特徴があります。実はここだけで見ると、自宅ネットワーク内のサーバーで運用する、という選択肢もありました。

その頃、当時仕事上で携わっていた業務で IDCF クラウドを使うことになり、light.S1 インスタンスが500円/月で提供されていること、ネットワークバックボーンに関しては非常に高いコストパフォーマンスを発揮してくれることが魅力でした。 


とはいえ移行を考えると、上記のように IDCF クラウドにはスワップメモリがないという問題があったり、当時使っていたクラウドの方がディスク容量を多く提供してくれたり、という比較要素もありました。一方で IDCF クラウド側にも無料枠で提供されている Object Storage や Mackerel といったプラス要素があり、結局は何をどう比較するか、という判断になりました。まあスワップメモリに関してはディスク上にファイルとして用意するという回避手段があること、ディスクは多いほど嬉しいけどサービスを展開する上で困るほど少なかったわけではないことが分かり、そして何よりもサービスの肝になるネットワーク性能が自宅ネットワークをも上回っていた、という違いが決め手でした。 これがディスク容量が問題になるようなケースだと結局月額料金の差になってしまうため違う判断になる可能性もありましたが、このねっぴに関してはほぼ同額の比較になりました。

結局、現時点でこのサービスを運営する先としてコストパフォーマンスでのベストは何か、という最終判断として IDCF クラウドを選んだ、という結論です。


おまけですが FAQ の1つをここに書いておきます。サービス名の「ねっぴ」は「較」の「値比」を無理やり発音した結果です。



 

IBM Bluemix を使うと、自分専用の WordPress 環境を手に入れることができます。

IBM Bluemix は IBM が提供する PaaS のサービスです。本来有償のサービスですが、最長30日間の無料トライアル期間と、トライアル終了後は特定条件下で使う場合に限り無料枠を使った継続利用ができます(無料枠を超えて利用した場合だけ課金されます)。

この無料枠の範囲内であれば、1ヶ月とか1年といった期間の制約なしにアプリケーションサーバーやデータベースサービスを利用することができます。今回はこの無料枠内で利用できるサービスの例としてブログやコンテンツ管理システムとして使われることの多い WordPress サイトを構築する手順を紹介します。なお、以下の内容は 2015/02/20 時点での内容であり、今後変更の可能性があることを留意ください。


まず、以下の作業を無料トライアル期間(サインアップから1ヶ月)内に限って行う場合はいいのですが、無料トライアル期間を超えて運用したい場合は、有償アカウントに移行する必要があります。有償アカウントに移行しても、ここで紹介するアプリケーション・サーバーとサービスのみを使う場合は無料枠内で運用できます(他のサーバーも併用する場合は無料枠を超える可能性もあります)。 トライアルアカウントを有償アカウントに変更するための手順はこちらを参照ください:
IBM Bluemix をトライアル期間(1ヶ月)を超えても無料で使う


では改めて IBM Bluemix 内に WordPress 環境を構築する手順を紹介します。まず IBM Bluemix にログインし、画面右上のデータセンターを「米国南部」にします。2015/02/20 時点で、「英国」データセンターでは以下で紹介する "WordPress on Bluemix" ボイラープレートが定義されていないため、構築の手続きが複雑になります。 今回は「米国南部」データセンターを使う、より簡単な方法を紹介します。 

そして画面上部の「カタログ」を参照すると、"WordPress on Bluemix" というボイラープレート(必要なアプリケーションとサービスを予め定義し、紐付けたテンプレート)が現れるので、これをクリックします:
2015022001


"WordPress on Bluemix" ボイラープレートの内容が表示されます。これを見ると PHP アプリケーション・サーバーに加え、ClearDB(MySQL)、Object Strage、SendGrid という3つのサービスがセットになっていることが分かります。これらを使って WordPress 環境を構築するテンプレートのようです。ここで画面右に一意になる名前(この例では dotnsf-wp)とホスト名(この例では dotnsf-wp)を入力して、最後に「作成」ボタンをクリックします:
2015022002


しばらく待つと ClearDB, Object Strage, SendGrid の3つのサービスがバインドされた状態で PHP アプリケーション・サーバーが起動します:
2015022003


改めて、ここで3つのサービスの利用料金について確認します。2015/02/20 時点ですが、これらのサービスの利用料金は以下のようになっています。制約こそありますが、無料枠の中で利用していくことができそうです:
サービス 利用料金 制約 参照
ClearDB 無料 DBサイズ 5MB、同時コネクション数 4、I/O 低、日次バックアップ有 参照
Object Strage 無料 ベータ版 参照
SendGrid 無料 月25000通までのメッセージ送信 参照


これらのサービスですが、ClearDB の実体は MySQL であり、用途としてはデータストアとして利用されます。Object Strage は画像などのメディアファイルのアップロード先として利用されます。これによってアプリケーション・サーバーが複数台構成になっても正しくメディアを取得できるような対応が可能になります。 また SendGrid はメッセージ送信サービスであり、構築した WordPress 環境のメール送信サービスとして利用します。これら3つのサービスと一緒に WordPress 本体が(PHP サーバー上で)動く、ということになります。 WordPress 環境を1インスタンスで作るだけならデータストアサービスがあればできるのですが、これらのサービスを組み合わせることで初めから IBM Bluemix の複数インスタンス機能に対応することができるようになります。その環境を簡単に構築するためのボイラーテンプレートが用意されている、ということになります。



アプリケーション・サーバーの起動後に名前部分(この例では dotnsf-wp)をクリックすると、アプリケーションサーバーインスタンスの状態が表示されます。メモリは 512MB で1インスタンス。メモリ量に限った計算ですが、これならば IBM Bluemix の無料枠内(月間750GB/H)でも運用可能です。有償アカウント移行後にこの状態よりもメモリを増やしたり、インスタンス数を増やしたりすると無料枠を超える可能性があることに注意してください。 そして「経路」と書かれた箇所に書かれた URL がこのアプリケーションが稼働している URL になります:
2015022004


コピペするなどして、この URL にアクセスしてみましょう。最初だけは WordPress の設定画面が表示され、まず言語を指定します。この例では「日本語」を指定しています:
2015022005


続けてサイトやサイト管理者の情報を入力します。最後に「WordPress をインストール」ボタンをクリックして設定は完了です:
2015022006


設定後に改めてアプリケーション URL にアクセスすると、WordPress の画面が表示されます。なお設定した管理者情報を使ってログインしていると最上段にユーザー情報も表示されます:
2015022007


試しに管理画面(http://(アプリケーションURL)/wp-admin/)にアクセス&ログインして WordPress のプラグイン情報を確認してみます。最初から IBM Object Strage や SendGrid 等のプラグインが導入されており、一部はすでに有効化されていることがわかります:
2015022008


またデフォルトのテーマは "Bluemix Style" と名付けられているようですが、パッと見で "Twenty Fourteen" テーマをコピーしたもののように見えますね。これがベースになっているのだと思います:
2015022009


最後にテーマを変更して見栄えを変えてみます。管理画面の「外観」メニューからテーマの「新規追加」を選び、検索するなどして適当なテーマを選んでインストールします。この例ではカッコよさげな "Tanzanite" という無料テーマを選んでみました:
2015022010


テーマをインストールして、有効化して、改めてトップページにアクセスするとこんな感じ。先ほどとはかなり印象の違うページになりました:
2015022011


ここまでの WordPress 環境がこれだけの手順で、しかも無料で手に入る、ということになります。結構魅力的では?

無料枠を超える話にはなりますが、仮にアクセス数などが急増して1サーバーだけでの対応が難しくなった場合は IBM Bluemix 上のサーバーインスタンスを増やしたり、メモリ数を調整したりもできるので、「本格的な利用を前提とした WordPress サービスの初期運用」にぴったりの環境だと思います。













 

このページのトップヘ