2012年7月4日水曜日

MyBike.JP障害について

7/22 21:22 自転車ページのアーカイブを公開しました
7/4 20:18 日誌のアーカイブを公開しました

先日発生したMyBike.JPの障害についてご報告します。

簡潔に結論を書きますと、インターネットアーカイブや検索サービスのキャッシュに残されたデータを除き、全ユーザの自転車の登録情報、画像、コンポーネント情報、日誌、アクティビティ、ユーザ自身の認証情報(メールアドレス、ユーザ名、パスワード、Bio、Twitter接続情報等)が失われました。ユーザの皆さまには大変申し訳ありませんが、現在のところ復旧の見込みはありません。

直接的な原因は、運営のオペレーションが遅れたことにより、さくらインターネットのVPS解約期限を過ぎてサーバが消滅したことです(クラウドやVPSの障害ではありません)。

これまでに起こった事象と、今後の対応方針について以下にまとめます。

障害発生から現在まで


  • 17:20 MyBike.JPの障害アラートが発報。2台構成のサーバのうち、データベースサーバにリモートログインを試みたが、ログインすることが出来なかった。
  • 17:30 ホスティング先であるさくらインターネットのVPSコントロールパネルを確認したところ、データベースサーバのIPアドレスエントリが存在しないことを確認した。
  • 17:38 さくらインターネットに電話で問い合わせ。契約内容を確認したところ、6月30日で解約となっていたが17:20頃まで動作していた。事情を説明して復旧の可能性について問い合わせたが、不可能という返答をいただいた。
  • 18:37 Googleのキャッシュから公開データのサルベージを開始。
  • 18:42 @MyBikeJPMyBike.JP Facebookページで障害情報の告知。
バックアップはサーバ内にダンプする形式で日次で処理を行なっていましたが、ファイルサイズが数十Gほどあるため、外部サービスへの転送・保存は行なっていませんでした。外部サービスを利用しなかったのは純粋にコスト的な問題です。

今後について

MyBike.JPは今後もサービスを提供する予定です。

ソースコードは別システムで保管・管理しているため、障害の影響は一切受けておりません。よって、同一システムでの再スタートはすぐにでも可能です。しかしながら、運用や機能の改善(日誌や自転車データのエクスポートなど)を行わずして失った信頼は得られないと考えており、しばらくの期間(数週間〜2ヶ月くらいを予定)ブラッシュアップを行う予定です。

具体的には次のようなことに取り組む予定です。
  • 運用の改善
  • セキュリティの改善
    • SSL対応
    • 外部サービスアカウントでのログイン対応(Facebook, Twitter)
  • UI / UXの改善
  • 自転車管理、コンポーネント管理の強化
  • 各種データのエクスポート機能

作業状況は可能な限り(中の人が更新可能な範囲で)このブログでご報告します。

ユーザの皆さんへのお願い

MyBike.JPに協力してくれる方を募集しています。 前進するために必要なことは一緒に知恵を絞りますし、学びの場として捉えていただいても構いません。次のような方を探しています。
  • Python, Django, MongoDB, RDBMSに理解のあるウェブアプリケーションエンジニア
  • UI / UXデザイナ
  • iPhone / Androidアプリケーションエンジニア
  • サーバを貸してくれる人
手伝っていただいても、おそらく大した見返りはありません。 サイトのAuthorとして名前が刻まれて、ポートフォリオの一つとして載せられる程度のことしか出来ないと思いますが、自転車が好きならきっと楽しい作業になると思います。手伝ってもよいよという方がいらっしゃればinfo@mybike.jp@MyBikeJP, Facebook MyBike.JP pageまでご連絡ください。

最後に、今回の事象についてユーザの皆さんにはお詫び申し上げるほかありません。管理不行き届きと言われても仕方がない状況ですが、温かい声をかけてくれるユーザさんも少なからずいらっしゃってたいへん励みになりました。

今後共どうぞよろしくお願い致します。

2012年1月24日火曜日

アクティビティの地図表示で自宅やオフィスを隠せるようになりました

先日追加したアクティビティ投稿機能はGarminのファイルを取り込むことで、走行ルートを地図やグラフ表示することができます。自分がどこへいったのか?どのように走っていたのか?を知るためにとても有用です。

しかし、位置情報というのはとてもデリケートな情報で、例えば、通勤時のファイルを投稿すると、自宅や職場などが一目瞭然となってしまいます。

今回のアップデートで、プライバシーに関わる位置を指定することによって、地図表示されるルートの一部を非表示できるようになりました。位置の指定はアカウント設定から行います。

プライバシータブのフォームに、住所、その名称、隠す範囲を入力してください。正しい住所でなくとも「代々木駅」などランドマークのような文章で大丈夫です。

設定すると地図上に円が表示されます。この円が走行ルートから除かれる部分です。


設定後、ルート情報を確認すると…


それとなく隠されていることが解かりますね。

このルートの正確なスタート地点は東海大東京病院なのですが、代々木駅を中心に直径1,000mほど隠しているため、参宮橋よりの高速脇からスタートとなっています。

走行データのサマリは全てのデータを処理しているので、距離や時間はルート全体を対象として計算しています。グラフ表示も同様です。

これまで、Garminのログファイルを共有しようとすると、あらかじめ自宅やオフィスを取り除いたりするための加工が必要で、手軽に利用しづらいものでした。MyBike.JPではプライバシーに関わる任意の場所を設定しておくことで安心して利用することができます。

試験中で一部のユーザに限定した機能ですが、近日中にすべてのユーザに公開予定です。

Happy riding!

2012年1月11日水曜日

アクティビティ投稿機能を追加しました

いささか旧聞になりますが、アクティビティファイルの投稿機能を追加いたしました。

高性能なサイクリングコンピュータには、走行時のデータを記録する「データロガー」機能が備わっています。GarminPolarSRMCycleOps(PowerTapに付属する小さくて黄色い箱)などが代表的なロガー製品です。日本国内ではGarmin Edgeシリーズの日本語版も販売されており、特に馴染みの深い製品と言えるでしょう。

今回MyBike.JPに追加した機能は、Garmin製品に採用されているFITファイル、TCXファイルの取り込んでウェブ上に描画するもので、具体的に書くと、走った場所やそのときのケイデンス、速度などを知ることができます。

百聞は一件にしかずですから、まずはスクリーンショットを御覧ください。


画面上側がデータを表すグラフ、下側が走行の軌跡で、右下にはサマリが表示されています。自分がどのように走ったか一目瞭然ですし、どんな道を走ったのか友達にも紹介しやすいでしょう。

この機能はまだいくつか調整が必要なため、限られたユーザにのみ公開しています。利用可能なユーザは、画面丈夫にグリーンのチェックマークアイコンと、ファイルアップロードという新しいリンクが表示されていることと思います。

もしこの機能の利用を希望される方は、MyBike.JPのアカウントを添えて以下のいずれかの方法でお問い合わせください。
  • info@mybike.jpにメールする
  • Twitterで @MyBikeJP にmentionする
  • Twitterでハッシュタグ #mybike をつけてつぶやく

また、動作確認済み機種・ファイルは次のとおりです。
  • Garmin Edge 500 firmware version 2.80
  • Garmin Edge 800 firmware version 2.40
  • Garmin Edge 705
  • Garmin ConnectよりダウンロードしたTCXファイル

「走った記録」を楽しく共有できるような仕組みを継続して考えていきたいと思います。

Happy riding!

2011年10月18日火曜日

トップページに掲載されている自転車の情報を知るには

たくさんの方々から投稿をいただき、MyBike.JPのトップページはいつも色彩豊かなバイクで飾られています。トップページの写真はユーザの投稿に応じて随時変更されており、このサイトを訪れる一つの楽しみになっています。

機械的に取得することが出来るとライブ壁紙やダウンロードが容易になるのでは?という意見を何度かいただき、夏前から試験的にAPIを実装していました(本業多忙のため夏の間は一時中断していましたが…)。

試行錯誤を重ね、写真URL、トップページの自転車およびオーナ情報が取得できるAPIを、先週から試験的に公開しています。


前者はトップページ画像の正式なURLにリダイレクトを行います。後者は自転車およびオーナの情報をJSON形式で返します。

とてもシンプルなAPIですが、これから様々なAPIへ拡張することへの第一歩であり、フィードバックを得るための足がかりとしたいと考えています。ご意見・ご要望はハッシュタグ#mybikeをつけてtweet, もしくはinfo@mybike.jpまでお問い合わせください。

これからも使いやすく気の利いたサイトを目指して開発を進めます!
Enjoy riding!

2011年10月15日土曜日

ストレージ障害から復旧しました

13日の晩から15日にかけて、画像へのアクセスを伴う各種処理が停止していました。画像(写真)の入出力に伴うソフトウェアが、仕様変更により処理が行えなくなったことが原因です。当該の時間にご覧になったユーザのみなさま、ご利用のユーザのみなさま、ご迷惑をおかけしまして誠に申し訳ございませんでした。




MyBike.JPは様々なソフトウェアスタックを利用して開発しています。利用しているソフトウェアは、ネットワークサービス周りのnginxやMongoDBといったミドルウェア、開発言語のPythonはもちろんのこと、これらに付随するライブラリまで多岐に渡ります。

ソフトウェアは不定期にアップデートがあるため可能な限り追従していますが、利用しているソフトウェアの仕様変更による不整合、開発環境とプロダクション(本番)環境の差異により、不具合が発生した形となりました。

ストレージシステムには分散ファイルシステム(MongoDB GridFS)を採用しており、Python製のストレージドライバ(django-storages)を使用して読み書きを行なっています。このストレージドライバは別途ライブラリ(django-mongodb-engine)を利用します。

今回、ライブラリのバージョン変更に伴う仕様の変更により、ストレージドライバとの整合性がとれなくなり、ストレージそのものへアクセスを行うことが出来なくなったことが問題です。

新旧のソフトウェアの違いは次のようになります。

django1.2.51.3.1
django-mongodb-engine0.3.00.4.0
django-storages1.1.3 + mybike patch 11.1.3 + mybike patch 2


django-mongodb-engineのバージョンアップに伴いデータベースへのアクセス方法が変更されたため、ストレージ障害が発生したというわけです。

これまで書いたとおりソフトウェアのバージョンアップはリスクを伴いますが、セキュリティホールの修正、メンテナンス性の向上など、サイトを運営し続ける上で様々なメリットがあります。もちろん障害を起こして良いわけではありませんが、リスクを取らずに硬直化するよりも、可能な限り前進する姿勢でいたいと考えています。

いろいろご迷惑おかけしましたが、今後ともどうぞよろしくお願いします!

2011年7月24日日曜日

検索機能を追加しました

以前から要望の多かった検索機能を追加しました。ページ右上のフォームから、自転車、コンポーネント、製造者(ブランド)を検索することが出来ます。



この変更に伴いフレームナンバー検索が停止しています。こちらは盗難車の捜索に必要な機能ですので、すぐに再開する予定です。

また、ユーザや日誌の検索、売り出し中の自転車検索なども続けてサポートする予定となっています。

素敵な自転車が見つかるといいですね!
Happy riding!

山と渓谷社「自転車人 2011年夏号」に掲載されました

今月発売となった自転車人 2011年夏号にMyBike.JPが掲載されました。



「デジタルの世界で自転車はいま」という題材で、半ページほどMyBike.JPを取り上げて頂きました。もう半分は公私共に仲良くしていただいている竹谷賢二さんのiPhone / iPad向け電子ブックの話。サイトを立ち上げた経緯、今後の展望について簡単にまとめられています。

詳しくはお近くの書店で、誌面の131ページを御覧ください!