暑い日が続きますが皆さまお元気でしょうか。世の中はお盆休みのようなので、久しぶりの過去に制作したサービスシリーズを書きます。今回はBoro Riding Shopです、このブログにも良く登場する乗馬用品のECサイトで、10年以上にわたり開発・メンテナンスしています。
今回はサーバーのインフラを中心に書いて行きます。
前史
ECサイトBoro Riding Shopは2009年からスタートしましたが、運営会社の「有限会社ボロライディングショップ」それ以前からカタログ小冊子+電話とホームページ+Eメールで通信販売を行っていました。
そのホームページはインターネットプロバイダーが利用者に提供する無料ホームページを使っていました。今では考えられませんが、ショッピング・カートなどないスタティックなホームページでした。
専用サーバー
最初のBoro Riding Shopは、さくらインターネットの専用サーバー「エントリープラン」という一番小さな専用サーバー(CPU: Celeron、メモリー: 1GB、HDD: 160GB)を利用しました。
ソフトはRuby on Rails 2.3で作り、Apache+Passengerで動かしていました、RDBはPostgreSQLでした。
とくに大きなトラブルもなく、専用サーバーでECサーとを運用していましたが。少しずつ問題が見えてきました、
- サーバーマシンが故障した場合、復旧に数日間かかる
- ステージングサーバーが無かったので、ソフトのバージョンアップでボロライディングショップの意図通りではない事がバージョンアップ後に判る事があった
- Ruby on Rails 3.0にバージョンアップしたかったが、3.0は2.3に比べCPUやメモリーのリソースを大量に必要する事が他の仕事で判り、このサーバーでのは無理そうだった
クラウド検討
他の仕事でAWSを使ったRuby on Railsサービスを作る機会があり、そこでAWSの良さがわかりBoro Riding Shopもクラウドに移行したと考え始めました。しかし、その当時はAWSのEC2は時間課金のみで24時間/365日運用すると、専用サーバーに比べかなり高価だったのがネックでした。
2011年に、さくらインターネットがさくらクラウドを開始しました。しかも価格はAWSの半分程度でした、また2012年にはストレージの大規模な障害を起こしましたが無事に乗り越えたので、安定度でも期待できるかなと思えました。
そこで、海外のVPSで運用していた開発サーバー(Redmine、Gitなどを動かしています)をさくらクラウドに移行してみることにしました。このように自分しか使っていないサーバー、しかもそれなりに使っているものがあるとクラウドの機能、操作、安定度が判り便利です。(関連記事 ケチケチAWS術)
AWSに比べると固定IPアドレスを確保しサーバーに割り振れるElastic IPアドレス機能がありませんでしたが、少し手間ですがサーバーのIPアドレスを移行できる事が判ったので問題ありませんでした。
さくらクラウドへの移行
開発サーバーをしばらく運用し、さくらクラウドの機能、操作、安定度には問題がないので、2014年にBoro Riding Shopをさくらクラウドへ移行する事にしました。
また、サーバーへのソフトインストール手順は、そのころ流行っていたChefでコード化しました。
これで、ステージング・サーバーも用意できました。またRuby on Railsも4.0にアップデートしました(開発環境では3.0を経由しましたが、Boro Riding Shopサーバーは2.3 → 4.0と移行しました)。
次はDockerか?
次はサーバーのDocker化でしょうか?開発環境やテスト環境はDockerのメリットが感じられますが、実際のサーバーでのメリットはあるのでしょうか?
Boro Riding Shopサーバーは(Nginx, Unicorn, PostgreSQL)X 1のシンプルな構成です。また乗馬用品という限られたユーザーしか利用しないサイトなのでスケーラビリティーが要求されないのも大きいですね。
Dockerに特化した高性能で低価格なサービスが現れたら検討するのでしょうか??