開発からプレスリリース、サーバチューニングまで – EverRSS公開顛末記
EverRSS公開から2日ほど。
Google Reader終了目前なのもあって、多くの方にご登録いただけています。本当にありがとうございます!
今回久しぶりのセルフプロダクトをリリースするにあたって起きた、問題点などを自戒の意味も込めて振り返ってみようと思います。
セルフプロダクトなので、全て自分ひとりでこなしています。意外となんとかなるものです。
開発 〜ドメイン取得からリリースまで
思い立ったのが6月4日のことでした。
そこから(他の案件もあって)少しブランクが空いて、開発に入ったのが6月中旬。
CakePHPのベースのセットアップ(今後もやりやすいようにスクリプト化したり)、GoogleやEvernote にDeveloper登録したりと進めます。
とりあえず最低限必要な機能をピックアップします。
- Google認証
- Google Readerからのインポート
- 新規RSSの登録
- RSSリスト
- Evernote認証
- Evernote配信のセッティング
- RSSクローラ
- Evernote配信
開発に入りますが、認証など複雑なものは既存のライブラリをお借りします。
ちなみに今回使用したプラグインやライブラリはこんな感じ。
- Google,Evernote認証:opauth
- Evernote SDK:evernote-sdk-php
- RSS巡回:HTTP_Request2,XML_Feed_Parser,XML_RSS (Pear)
- Evernote へコンバートする際のHTML整形:HtmlPrefier
作り上げて、Evernoteに本番化の申請をしたのが6月25日の夜のことでした。
Evernoteのロゴ使用がダメでした…
リリースが1日伸びてしまった原因がここ。
最初、トップの枠内にある画像はこんな感じだったのですが、
26日未明にEvernoteの開発チームから返信が来て、トレードマーク利用のガイドラインに添ってくれ、
とのことで、リリースできず。
その次の日の未明、今の形で許可が降りて、リリースとなりました。
いよいよリリース!
まずは先のエントリを書き、自分のTwitterやFacebook、はてブで公開。
作った! / “EvernoteをRSSリーダー化する!EverRSSを作りました。 | aquadrops *” http://t.co/B3TUugv5MS
— 川野 大佑 (@dk19810313) June 26, 2013
プレスリリース配信
ゆーすけべーさんのテンプレを参考に、手前味噌ながら拙い文章ですがプレスリリースを各メディア社様宛にメールで送りました。
EvernoteをRSSリーダー化するサービス「EverRSS」公開
早速メディアに掲載!
こんな拙い文章にも関わらず、下記3サイトに掲載いただきました。
また、配信先のメディア(Yahoo!、livedoor、mixi、ameba、exciteなど)にも掲載され、またTwitterやFacebook、G+などでも拡散され、かなりの宣伝効果がありました。
TechWave
EverRSS という選択 ー EverenoteをRSSリーダー化、Googleリーダーからの乗り換えも2ステップでOK 【@maskin】
米GoogleのRSSリーダー「Google Reader」が2013年7月1日に終了するのを受け、代替サービスを探すものの、「新しいサービスの使い勝手は?」「ユーザーインターフェイスの具合は?」と新しいツールの具合が気になり、なかなか乗り換え先を決められない人も多い。
その点、littlebit.co が2013年6月27日にリリースした「EverRSS」なら安心だ。使い慣れたEvernoteをそのままRSSリーダーにしてくれるというものなのだ。
IT Media ねとらぼ
Googleリーダー終了するどうしよ!→EvernoteがRSSリーダーになる「EverRSS」できました
うおー、これは気になる!!
RSSリーダーとして多くのユーザーを抱えるGoogleリーダーが7月1日にサービスを終了します。代替サービスを決めあぐねているユーザーも多いかと思いますが、そんな中、エンジニアの川野大佑さんがEvernoteをRSSリーダーとして使えるツール「EverRSS」を開発し、公開しました。
RBB TODAY
EvernoteをRSSリーダー化するサービス「EverRSS」公開
littlebit.coは27日、EvernoteをRSSリーダー化するサービス「EverRSS」を公開した。
このblogにもアクセスがたくさん!
公開直後から、普段の6倍ほどのアクセスが来ました。
Twitterでも拡散が大量に…
公開間もなく不具合が多発!
公開までは何とかこぎつけ、多くの方に早速試して頂いたのですが、多くの問題が発生しました。
Google Readerからのインポートができない。
Googleから取得したリスト内の”カテゴリ”の処理に甘い部分があったのが原因。
これは公開後すぐアップデートしました。
RSSクローラ周りのトラブル。
当初、”ゆるい”RSSクローラを書いてしまっていたため、登録頂いたRSSの中にはカバーしきれていない物もありました。
- 数万単位のRSS URLが登録されたため、巡回が追いつかない。
- リダイレクト処理が抜けていた。
- そもそも存在しないRSS URL。
- RSSがXML風に見えてXML形式でない。
以前別のシステムで作成した、”お行儀のいいRSSしか読み込まないライブラリ”では、テストでは問題なかったものの、実際の運用ではエラーが多発してしまいました…
Evernoteに配信されないトラブル。
これは先のRSSの巡回が追いついていなかったのもありますが…
当初はEvernoteのAPIに蹴られる確率がかなり高かったのです。ENMLに沿ったノートを作成して投げなければならないのですが、
…といった余りお行儀の良くないものが多かったため、DOMDocumentを使って厳密にチェックすることにしました。
a hrefに関しては、正規表現でなんとかしました。
- ここはまだ継続中で、まだ配信されないケースがあるので、Exceptionを参考に調整していきます。
サーバが過負荷になるトラブル。
最初はこんな構成で動かしていました。
とりあえず1個のVPSに全部突っ込んでいたわけです…
RSSクローラの負荷(対外への同時接続が最大16程度)がトリガーになり、DBが吹っ飛んでしまいました…
27日の深夜〜28日早朝にかけて、全て閲覧できない、という致命的な状態になってしまいました。本当にごめんなさい。
急遽サーバ増強しました。
28日の早朝、どげんかせんといかんと、急遽さくらのクラウドにこんな構成で組み、EverRSSを切り離しました。
サーバのセットアップは予めスクリプトを作っているので、構築からデータ移行まで、約2時間で済ませました。
それでもRSSクローラが失敗する!サーバチューニング
さくらのクラウドに移行したことで、コストはかなり上がってしまったのですが、RSSクローラはとてもキビキビと動くようになりました。さくらのクラウド++。
ただ、数万単位のURLを一気にクロールしているため、最後の方になると、何故かホスト名解決解決に失敗するようになります。
ローカルにbindでDNSキャッシュサーバを立ててもダメ。
RSSクローラを手動で動かしてみるとファイルオープンに失敗している模様。
上限値を1024から64000に上げてみました。
これで、ちょっと様子見です。
今後のEverRSS
おおかたEvernoteに配信できるようになったので、細かいエラーを潰しつつ、
もう少し細かい設定ができるようにしたり、痒いところに手が届くにサービスにして行きたい、という所。
折角収集したRSSのデータも眠らせずに活用できるといいな。
マネタイズも考えなければならないのですが、それはまたいずれ。