coderdojo-japan / coderdojo.jp

☯️ CoderDojo Japan (@coderdojo-japan) official website developed by Ruby on Rails with @YassLab team. 💎
https://coderdojo.jp
Other
62 stars 102 forks source link

connpass APIの呼び出し回数を削減する #1550

Closed takatama closed 1 year ago

takatama commented 1 year ago

connpass APIは、series_idに複数のグループをカンマ区切りで指定してイベント情報を取得できます。

グループごとにAPIを呼び出すのに比べ、呼び出し回数を大幅に削減できます。これにより、#1535 で導入したSleepを入れても、現実的な時間で情報の取得が完了します。

懸念事項が2つあります。

  1. この実装だとDojoやDojoEventServiceが大量になった場合に性能問題を引き起こす可能性があります。もっと良いやり方があればぜひご指摘ください 🙇
  2. テスト(spec)ですが、series_idが1つだけのままになっています。テストするのに適した道場があればお知らせください 🙇
yasulab commented 1 year ago

PR ありがとうございます! https://github.com/coderdojo-japan/coderdojo.jp/pull/1535 についてですが、こちらはマージ後に Rake タスクが失敗し、近日開催の道場などの各種機能が動かなくなったために一旦 Revert した、という経緯になります 😭💦 (原因調査のためコメントで TODO としていました!)

これにより、https://github.com/coderdojo-japan/coderdojo.jp/pull/1535 で導入したSleepを入れても、現実的な時間で情報の取得が完了します。

イイですね!! 😻🆒 開発環境では問題なく動き、本番環境では止まったので、タスクの実行時間が長くなったのが原因かなぁと考えていました 🤔💭 そうであれば本 PR で解決するかもですね...!! 👀💡

  • テスト(spec)ですが、series_idが1つだけのままになっています。テストするのに適した道場があればお知らせください 🙇

1つの Dojo が複数の series_id を持っているケースでテストしておくと大体のケースは網羅できると思うので、API 開発の背景周りにも詳しい CoderDojo Kodaira さんの seried_id でテストすると良さそうかなと思いました! (cc/ @togazo さん)

https://github.com/coderdojo-japan/coderdojo.jp/blob/6553a9d5d9a74a23efcd012a57654eac3ae73878/db/dojo_event_services.yaml#L511-L518

yasulab commented 1 year ago

🤔.oO(今のところこんな感じでフワッと考えています)

  1. @takatama さん: テストケースを追加する
  2. @yasulab: 一旦本 PR をマージしてみる
  3. @yasulab: 本番環境でタスクを実行できるか確認する
    • @yasulab: もし動かなかったら、一旦ログを取っておく
    • @yasulab: もし動かなかった理由が明確ですぐに直せそうなら、エイヤッで直す
    • @yasulab: そうでなければ、一旦 Revert する
takatama commented 1 year ago

@yasulab テストコードを追加しました! 「適切な道場はありますか?」と聞いてしまったのは、テストに使っていたデータhttps://coderdojo-okutama.connpass.com/が実在する道場だと思いこんでいたためです 😅okutama2を作ってしのいでいます。

yasulab commented 1 year ago

テストコードの追加ありがとうございます...!! (>人< )💖

しばらく時間が取れなさそうなので、まとまった時間が取れるときにマージ&デプロイして、本番環境の方でもうまく動くか試してみますね! 🚀✨

yasulab commented 1 year ago

こちら一旦マージしますね! 🚀✨ PR & Review ありがとうございました...!! (>人< )✨

yasulab commented 1 year ago

以下、一通り実行して、本番環境でも問題なく動くことも確認しました!! 🚀 ✅ ✨ connpass API に関するタスクの改善 PR、ありがとうございます...!! 😻🆒✨

  1. @takatama さん: テストケースを追加する
  2. @yasulab: 一旦本 PR をマージしてみる
  3. @yasulab: 本番環境でタスクを実行できるか確認する
    • @yasulab: もし動かなかったら、一旦ログを取っておく
    • @yasulab: もし動かなかった理由が明確ですぐに直せそうなら、エイヤッで直す
    • @yasulab: そうでなければ、一旦 Revert する