aquadrops *

Technologies and Labs, Lifelog and more.

2013-06-29

開発からプレスリリース、サーバチューニングまで – EverRSS公開顛末記

everrss

EverRSS公開から2日ほど。

Google Reader終了目前なのもあって、多くの方にご登録いただけています。本当にありがとうございます!

今回久しぶりのセルフプロダクトをリリースするにあたって起きた、問題点などを自戒の意味も込めて振り返ってみようと思います。

セルフプロダクトなので、全て自分ひとりでこなしています。意外となんとかなるものです。

開発 〜ドメイン取得からリリースまで

思い立ったのが6月4日のことでした。

スクリーンショット 2013-06-29 14.00.09

 

そこから(他の案件もあって)少しブランクが空いて、開発に入ったのが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日伸びてしまった原因がここ。

最初、トップの枠内にある画像はこんな感じだったのですが、

everrss_1

26日未明にEvernoteの開発チームから返信が来て、トレードマーク利用のガイドラインに添ってくれ、

とのことで、リリースできず。

その次の日の未明、今の形で許可が降りて、リリースとなりました。

いよいよリリース!

まずは先のエントリを書き、自分のTwitterやFacebook、はてブで公開。

プレスリリース配信

ゆーすけべーさんのテンプレを参考に、手前味噌ながら拙い文章ですがプレスリリースを各メディア社様宛にメールで送りました。

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にもアクセスがたくさん!

スクリーンショット 2013-06-29 15.44.04

 

公開直後から、普段の6倍ほどのアクセスが来ました。

Twitterでも拡散が大量に…

twitter1 twtter2

公開間もなく不具合が多発!

公開までは何とかこぎつけ、多くの方に早速試して頂いたのですが、多くの問題が発生しました。

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に全部突っ込んでいたわけです…

server_1

 

RSSクローラの負荷(対外への同時接続が最大16程度)がトリガーになり、DBが吹っ飛んでしまいました…

27日の深夜〜28日早朝にかけて、全て閲覧できない、という致命的な状態になってしまいました。本当にごめんなさい。

急遽サーバ増強しました。

28日の早朝、どげんかせんといかんと、急遽さくらのクラウドにこんな構成で組み、EverRSSを切り離しました。

サーバのセットアップは予めスクリプトを作っているので、構築からデータ移行まで、約2時間で済ませました。

server_2

 

 

それでもRSSクローラが失敗する!サーバチューニング

さくらのクラウドに移行したことで、コストはかなり上がってしまったのですが、RSSクローラはとてもキビキビと動くようになりました。さくらのクラウド++。

ただ、数万単位のURLを一気にクロールしているため、最後の方になると、何故かホスト名解決解決に失敗するようになります。

ローカルにbindでDNSキャッシュサーバを立ててもダメ。

RSSクローラを手動で動かしてみるとファイルオープンに失敗している模様。

上限値を1024から64000に上げてみました。

これで、ちょっと様子見です。

今後のEverRSS

おおかたEvernoteに配信できるようになったので、細かいエラーを潰しつつ、

もう少し細かい設定ができるようにしたり、痒いところに手が届くにサービスにして行きたい、という所。

折角収集したRSSのデータも眠らせずに活用できるといいな。

マネタイズも考えなければならないのですが、それはまたいずれ。