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