Meet at Idobata

21世紀の開発者のためのグループチャット Idobata の開発ブログです。

ngtyk の教えて!先輩イドバタリアン 〜株式会社 spice life・五十嵐さん(前編)〜

こんにちは!ngtyk です。

一人前のイドバタリアンを目指して、前回 初めの一歩を踏み出した わけですが、はて、二歩目はどうしたら…。「Idobata 二歩目」でググっても何も出てこなかったので、こんな時は!人に!頼ろう!

というわけでやってきました、株式会社 spice life 様!

image

インタビューっぽい写真!

噂によると spice life 様は全社で Idobata を使用しているとのこと…これはきっと Idobata について熟知しているに違いない!しかも今回はなんと CTO の五十嵐さん にお話を聴けることに。ヤッタネ!

ngtyk「先輩イドバタリアンとして、今日はいろいろ教えてください!」

五十嵐さん「あっ、はい…?(なんで ngtyk が来たんだ???)」

続きを読む

利用規約改定のお知らせ

いつも Idobata をご利用いただき誠にありがとうございます。

本日9月27日、利用規約 を改定いたしました。主な変更点は次のとおりです。

当社の免責 (第6条) の詳細化を行いました。また、これまで明示していなかった本サービスにおける瑕疵の扱いについても追記いたしました。

続きを読む

ngtyk のイドバタリアン成長記 〜アカウントを作成して発言してみる〜

みなさまはじめまして、ngtyk と申します。

今回より、Idobata の「これってどういうこと?」「どうやって使うといいの?」「どんな人が作ってるの?」「もしかしてこんなこともできないかな?」というアレコレを初心者目線で調べ、学び、実践して、みなさまにご紹介していきたいと思っています!

初心者目線…ということで、お恥ずかしながら Idobata 初心者です/// なにはともあれまずはアカウント登録しなければ〜と思って Idobata のサイト を見てみると…

続きを読む

だれでも入れるチャット

こんにちは、hibariya です。最近の小さなアップデートについてお知らせします。一般に公開するような「誰でも入れる」ルーム向けにゲストの招待方法を追加しました。誰でもといいつつ、ログインは必要です。

続きを読む

idobata-eventd と Server-Sent Events

書いた人: ursm

これまで Idobata ではイベント配信の仕組みとして Pusher を使ってきましたが、先日のリリースから idobata-eventd という独自のバックエンドを試験的に導入しました。idobata-eventd は送信したイベントを一定期間保持し、クライアントからの要求に応じて再送する機能を備えています。今まではネットワークが切り替わったときなど、イベントを取りこぼした可能性がある場合はすべてのデータを再取得する (= 画面全体をリロードする) する必要がありましたが、idobata-eventd では最後に取得したイベントからの増分のみを受け取って反映できるようになりました。

続きを読む

最近の Idobata

こんにちは! hibariya です。前回の Idobata 更新情報からすこし間があいてしまいました。最近のアップデートについてお知らせいたします。

@all/@here をメンションとして受け取るか

@all や @here (※) をメンションとして受け取るかどうかをユーザ毎/ room 毎にカスタマイズできるようになりました。各 room の settings -> preferences から設定を変更できます。また、左下のアカウントメニュー -> Settings からデフォルトの挙動を変えられます。

(※ @all: 全メンバー宛 @here: オンラインのメンバー宛)

「ここから下は未読」

未読のある room を開くと最も古い未読メッセージの上にマークが付くようになり、どこからが未読なのかはっきりと分かるようになりました。

ゲスト用機能の改善

Idobata ではメンバーとして参加していない organization の room にゲストとして join できます。これは昔からある機能ですが、まだまだ改善の余地がある箇所です。性能面でも至らない点があり、昨年の ISUCON5 オンライン予選が開催された際に障害を発生させてしまう原因ともなりました。障害の原因となった箇所をはじめゲストまわりの設計・実装を見直し、同様の問題が起きないようになりました。

起動の高速化

起動時の処理の見直しを行ない、最初に読み込むデータを減らすことで高速化しました。join している room の数にもよりますが、確認できているうちではスプラッシュスクリーンが表示されている時間を最大で4, 5秒ほど短縮できました。

その他の変更点

  • 左サイドバーの Mentions から自分宛のメンションを一覧できるようになりました。
  • これまでずっと Rails デフォルトのままだったエラーページを差し替えました。
  • 各 room の settings から room_id を確認できるようになりました。bot 開発にご活用ください (関連: hubot-idobata#16)。

idobata-hooks 他

いくつか大きなアップデートがありました。

  • Backlog に対応しました (#58 @ozamasa)
  • Bitbucket のより多くのイベントに対応しました (#57 @masumiya)
  • Coveralls に対応しました (#56 @1syo)
  • esa hook で投稿時に本文も含められるようになりました (#49 #52 @kakutani)
  • hook でパラメータを受け取り、動作をカスタマイズできるようになりました (#54 @hibariya)。

idobata-hooks を含め、ここ半年の間にたくさんの  Pull Requests をいただきました。どうもありがとうございます!

これから

今後も引き続き、使い心地の改善とモバイルアプリの提供に注力していく予定です。それでは!

Idobata の 9/26 - 27 にかけてのサービス接続障害についてのご報告

こんにちは! Idobata 開発チームの hibariya です。 いつも Idobata をご利用いただき、ありがとうございます。

先週末 9/26 (土) から 9/27 (日) にかけて、Idobata では一時的にサービスに接続できなくなる障害が断続的に発生していました。 ユーザーのみなさまには大変ご迷惑をおかけしましたことを、深くお詫び申し上げます。

サービス接続障害が発生していた時期には ISUCON5 のオンライン予選が開催されていました。 Idobata は ISUCON5 の主催者と参加者との連絡用チャットとしてご利用いただいておりましたが、このたび十分なサービスを提供できませんでした。 参加者・関係者の方々にはご不便をおかけしていしまい、申し訳ありませんでした。

今回の反省を今後に生かしていくために、障害の経緯と今後の対策について、簡単にではありますがご説明いたします。

何があったか

9/26 (土)

  • 9:00 頃からサーバの負荷が増加し始め、9:30 頃に Idobata へアクセスしづらくなる。
  • 10:00 頃に現象を確認し、Web サーバのインスタンスを追加する作業を開始。
  • 10:30 頃にインスタンスの起動プロセスにエラーを確認。Engine Yard のサポートと連絡をとり、11:30 頃に追加完了。
  • 午後、API でアクセスが集中していた箇所を改善する対応を行なう。
  • 負荷の集中を軽減するため、2日目の Room へ事前に join していただけるよう ISUCON5 オンライン予選の主催者の方へ連絡。ご快諾いただく。

9/27 (日)

  • 9:30 頃に再び負荷が増加し始める。さらにインスタンスを追加。
  • 13:50 DB へのコネクション数が上限に達しつつあり、設定を変更するため10分ほどサービスを停止。
  • 18:00 から再びアクセスしづらい状況となる。
  • 18:30 頃から復旧。

何が原因だったか

今回の直接的な原因は次の通りです。

  • オンラインメンバーの多い Room への API アクセスが想定以上の負荷となり、さらにそこへアクセスが集中してしまった。
  • 結果的に API 全体へのすべてのリクエストに長い待ち時間が発生してしまった。

今回の対応

9/26 (土) のサービス接続障害を確認後、Web サーバインスタンスの追加を行ないました。 あわせて、不要なクエリ発行を抑え、集中しているアクセスを時間的に分散させる処理を追加しました。

それでも根本的な問題の解決には至らず、Room への join やアクセスが集中するタイミングでは稼働が不安定になる状態が続きました。

翌27日も ISUCON5 のオンライン予選2日目が開催されることから、引き続き Room への join が集中することが予想されたため、参加者の方々が事前に join できるよう ISUCON5 主催者の方へアナウンスをお願いしました。勝手なお願いも関わらず快く了承して頂きました。

今後の対策

今回のサービス接続障害の原因となった API へアクセスが集中しないよう、設計を改善します。 また、大規模なイベントでの利用が想定される場合には事前に備えます。

おわりに

2015年の夏以降、Idobata 開発チームは「より使い心地の良いサービス」を第一の目標として、主にパフォーマンスの改善に取り組み始めていました。その矢先にこのような事態になってしまったことを、重く受け止めています。

ふり返ってみたところ、当日は最善を尽くした対応とは言えませんでした。問題をその場で修正できなかったとしても、例えば一時的にその箇所を無効にすることでより重要な機能を提供することができたかもしれません。不慣れな対応で悔いの残る結果となりました。

ISUCON5 運営の @941 様には、当日お忙しいなかにもかかわらず快く相談に応じていただきました。この場をお借りして御礼申し上げます。 サービスが不安定な中、インターネット上でたくさんの激励のお言葉をいただき、ありがとうございました。 多くの方が思い通りにサービスを利用できなかったことと思います。申し訳ありませんでした。

本件ならびに Idobata について

何かご不明な点などありましたら、ぜひフィードバックフォームまたは hi@idobata.io までご連絡ください。 Idobata の状況については、今後もブログにて状況をお知らせいたします。 今後とも Idobata をよろしくお願いいたします。