月額500円でiPhone無料ランキング2位に耐える電子書籍サービス構築

Pocket

こんにちは!久しぶりに電子書籍投稿サービス、こみおん!の関連記事です。
でも今回は技術よりな内容です。

といっても、対して技術寄りでもないんですけどね。
こみおん! がどうやって動いてるかを徹底解説!

まずサーバーのスペック
SaaSesの月額500円ぐらいのVPSサーバーです。こんな感じ
CPU: 2.66GHz
メモリ: 512MB
HDD: 50GB

つぎに、サーバーソフトウェア関連
OS: CentOS release 5.6 (Final)
DB: MySQL
WEB: Apache
APP: RoR 2.x系 + Apache

つぎに、クライアント側ソフトウェア関連
iOS向けネイティブアプリで動いてます。
サーバとのデータのやり取りには基本的にはJSONを使用
書籍ビューワは独自実装、ほかはライブラリ使用しまくり(Twitter+OAuthとか)

おまけにおまけに、CDN
無料のCDNサービス、CloudFlare使ってます。だいたい6割ぐらいのアクセスをCloudFlareがさばいてくれてるっぽい。
4.2 GB bandwidth saved by CloudFlare7.5 GB total bandwidth って書いてあった。
https://www.cloudflare.com/

いたってシンプルですね!
DBはたしかMySQLオンリーなんですよ。memcachedだって使ってないんですよ。
それでもiPhone無料ランキング2位でも止まらず動くんだからすごいでしょ。えへへ。
まぁ、昔作ってから放置してるだけなんだけど。

 

で、なぜ500円のサーバーでちゃーらへっちゃらーで動いているかというと、
CloudFlareのおかげもあるとは思うけど、
主にはサーバのアプリケーションの設計が秀逸だからだと思うのです。
秀逸っていうか、手抜きなんですけど。

たしかアプリのアルゴリズムが
booksテーブルの中のrankpointカラムをDESCして、その一覧100個のJSONを返す
↓iphone
UITableViewで表示、書籍が選択されたら書籍ビューワを起動
->書籍ビューワは渡されたJSONの中の値にしたがって書籍の内容を取得開始
->同時に、書籍を読んだという旨をサーバに通知
↓サーバ
サーバ側でrankpointを修正、もしこの部分でエラーになっても、書籍の閲覧には問題はない

って感じです。書籍の閲覧にはトランザクションが不要であることや、
書籍の内容がJPEGである(アプリケーションサーバ不要)であることなど、
実装が手抜きであること に起因して軽いんだと思います。

 

ひとりで電子書籍投稿サービスが作れる・維持できるっていうんだから、
世の中のIT技術力は進化したものです。

今後はNoSQLデータベースとか使ったりして、
より低コストな運用とか出来たりして、ますます便利になっていくことでしょうよ。
サーバもどんどんクラウドになっていくし。

それらを使えるように常に知識は持っておかないとね!
MongDB?なにそれ?おいしいの?え、TTってなに?って現状な俺はまだまだ無知識です。がんばろー。

 

以上、雑談記事でした。
要約すると、「本当に必要な情報以外は保存しないようにしたら案外軽いよ、アプリケーション」って感じかと思います。

 

Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です