月額500円でiPhone無料ランキング2位に耐える電子書籍サービス構築
こんにちは!久しぶりに電子書籍投稿サービス、こみおん!の関連記事です。
でも今回は技術よりな内容です。
といっても、対して技術寄りでもないんですけどね。
こみおん! がどうやって動いてるかを徹底解説!
まずサーバーのスペック
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ってなに?って現状な俺はまだまだ無知識です。がんばろー。
以上、雑談記事でした。
要約すると、「本当に必要な情報以外は保存しないようにしたら案外軽いよ、アプリケーション」って感じかと思います。
コメントを残す