レアジョブアプリでのアクセス負荷で生じたAPI遅延問題を アプリエンジニア視点で対策を考えてみる

E586b46d5b09f8109beb66bb146e4f20?s=47 tamappe
August 28, 2019

レアジョブアプリでのアクセス負荷で生じたAPI遅延問題を アプリエンジニア視点で対策を考えてみる

E586b46d5b09f8109beb66bb146e4f20?s=128

tamappe

August 28, 2019
Tweet

Transcript

  1. ϨΞδϣϒΞϓϦͰͷΞΫηεෛՙ Ͱੜͨ͡API஗Ԇ໰୊Λ ΞϓϦΤϯδχΞࢹ఺ͰରࡦΛߟ͑ ͯΈΔ ۄஔɹ༸ี @tamapppe

  2. None
  3. I N T R O D U C T I

    O N ۄஔɹ༸ี Yosuke Tamaoki (32) ϞόΠϧΞϓϦΤϯδχΞ 2014೥-2019೥3݄·ͰϑϦʔϥϯεͱͯ͠׆ಈ 2019೥4݄ΑΓϨΞδϣϒʹϞόΠϧΞϓϦΤϯδχΞͱͯ͠ೖࣾ झຯ: ήʔϜ(Splatoon2)ɺےτϨɺྉཧ Twitter: https://twitter.com/tamapppe 01
  4. 02

  5. Release info 03 ࠷৽ͷϦϦʔεͰiPadͷԣը໘ରԠΛ ϦϦʔε͠·ͨ͠ʂʂ ͥͻແྉମݧ΋Ͱ͖ΔͷͰΞϓϦ͔Βडߨͯ͠Έ͍ͯͩ͘͞ https://apps.apple.com/jp/app/ϨΞδϣϒӳձ࿩/id1121942360

  6. ຊ೔ͷςʔϚ ΫϥΠΞϯτ͔Βݟͨ API௨৴ϦΫΤετ஗Ԇ໰୊

  7. API஗Ԇ໰୊ 04 ϨΞδϣϒΞϓϦ͸20 - 30 ୅ͷࣾձਓϢʔβʔ͕ଟ͍ͨΊɺ ฏ೔ͷ࢓ࣄऴΘΓʹϨοεϯΛड͚Δ܏޲ʹ͋Δɻ ಛʹ࠷ۙͰ͸ฏ೔ͷ݄༵͔Ր༵ͷ21:00 - 23:00ʹAPI௨৴ͷϦΫΤε

    τ͕ଟ͘αʔόʔʹෛՙ͕͔͔Γ͗͢ΔͨΊ͔Ϩοεϯ༧໿ͷAPI͕஗ ԆؾຯʹͳΔ܏޲ʹ͋Δɻ ࣮ࡍʹ͜ͷ࣌ؒଳʹAPI௨৴ͷϦΫΤετ਺͕࠷େʹͳ͍ͬͯΔͷͰ ϞόΠϧΞϓϦଆͰରࡦΛ࿅Δඞཁ͕ग़͖ͯͨɻ ฏ೔ͷ21:00 - 23:00
  8. Kibana ͰϦΫΤετճ਺Λ֬ೝ 05 03:00 06:00 12:00 15:00 18:00 21:00 09:00

  9. Kibana ͰϦΫΤετճ਺Λ֬ೝ 06 03:00 06:00 12:00 15:00 18:00 21:00 09:00

  10. ϐʔΫλΠϜͷෛՙΛ֬ೝ͢Δͱ 07 ฏৗ࣌ʹରͯ͠ 5ഒ͍ۙϦΫΤετ͕ ϐʔΫ࣌ʹΞϓϦ͔ΒඈͿɻ webͰ΋ಉ༷ͷϦΫΤετͷ૿Ճ͕ى͖͍ͯΔ͕ɺฏৗ࣌ͱͷ ࠩ෼͕ΞϓϦ͸ಛʹେ͖͔ͬͨɻ ͳͥ͜ΜͳʹΞϓϦ͔ΒϦΫΤετ͕ඈΜͰ͍Δͷ͔ʁʁ

  11. ߨࢣ৘ใऔಘAPI Ͳ͏΍Β͕͜͜ոͦ͠͏ͩ

  12. ߨࢣ৘ใऔಘAPIͷ࢓༷ 08 1. ΞϓϦىಈ࣌ʹશͯͷϑΟϦϐϯߨࢣΛऔΔඞཁ͕͋Δ(໿1000ਓ) 2. ΩϟογϡΛ࢖͍ͬͯͯ༗ޮظݶ͸อଘ͔ͯ͠Β10෼Ҏ಺ 3. Ωϟογϡ͕࢒͍ͬͯΕ͹ΞϓϦ಺DBΛ࢖͏ɺظݶ੾ΕͳΒAPI௨ ৴ 4.

    Ϩοεϯ༧໿ͷࡍʹ͸ʮߨࢣ৘ใʯͱʮߨࢣͷεέδϡʔϧ৘ใʯ͕ ඞཁ 5. ߨࢣΫϥε͕ͦΕͧΕͷεέδϡʔϧΫϥεΛอ͍࣋ͯ͠Δ 6. ΞϓϦىಈ࣌ʹ1िؒ෼ͷεέδϡʔϧ৘ใΛऔಘ͍ͯ͠Δ 7. ଞͷੜెʹઌʹͦͷεέδϡʔϧΛऔΒΕ͍ͯͨΒϨοεϯΛ༧໿Ͱ ͖ͳ͍ͷͰͰ͖Δ͚ͩʮৗʹ࠷৽ͷεέδϡʔϧʯΛը໘ʹ൓ө͞ ͤͳͯ͘͸ͳΒͳ͍ ࣌ؒͷߜΓࠐΈ ೔ʹͪͷߜΓࠐΈ
  13. ߟ͑ͨରԠ 09 1. ࠶ؼॲཧ͢Δճ਺Λ΁Β͢ 2. ϨοεϯΛ༧໿͍ͯ͠ΔϢʔβʔ͸Ϩοεϯ ։࢝30෼લ͸ࣗಈతʹAPIΛୟ͔ͳ͍Α͏ʹ ͢Δ 3. ΞϓϦىಈ࣌ʹ1िؒ෼Ͱ͸ͳ͘1೔୯ҐͰ৘

    ใΛऔಘ͢ΔΑ͏ʹ͢Δ 4. ߜΓࠐΈݕࡧͰશͯͷߨࢣΛऔಘ͢Δ͔Ͳ͏ ͔ΦϓγϣϯΛ௥Ճ͢Δ 5. ͦͷଞ
  14. ߦͬͨରԠ 10 2. ϨοεϯΛ༧໿͍ͯ͠ΔϢʔβʔ ͸Ϩοεϯ։࢝30෼લ͸ࣗಈత ʹAPIΛୟ͔ͳ͍Α͏ʹ͢Δ → ͜ͷΑ͏ͳϢʔβʔ͸༧໿ΑΓ΋Ϩοεϯडߨ͕ϝΠϯͰΞϓϦΛىಈ͢Δ͸ͣͳͷͰ → ࠓͷઃܭʹ͓͍ͯίʔυͷӨڹൣғͱ࢓༷ͷӨڹൣғ͕গͳͦ͏͔ͩΒ

    → UIతʹҰ൪࣮૷ָͦ͏
  15. UI 11 ߨࢣݕࡧAPIͷϘλϯΛஔ͍ͯखಈͰ APIΛୟ͚ΔΑ͏ʹରԠ

  16. ࢑ఆରԠલޙͷભҠ 12 Max ࣌ͷ໿20%ͷճ਺Λ࡟ݮ

  17. ϑϩϯτΤϯυΤϯδχΞʹͱͬͯͷ APIͷݟ͑ํ 13 1. ۃྗඞཁͳ͍৘ใͰ͸API௨৴Λආ͚Δઃܭʹ͢Δ 2. Ϙλϯ࿈ଧରԠʹ͸ؾΛ͚ͭΔ 3. APIଆͷerrorCode͸ඞͣߟྀ͢Δ 4.

    ΞϓϦଆͰ΋ྫ֎ॲཧ͸ۃྗߦ͏ 5. API͸ແݶʹ࢖͑Δͷͩͱࢥ͏܏޲͕͋ΔͷͰෆඞ ཁʹୟ͔ͳ͍ઃܭΛ৺͕͚Δඞཁ͕͋Δ 6. αʔόʔ΁ͷෛՙΛߟྀ͢Δ
  18. ݁࿦ 14 ΞϓϦΤϯδχΞͱ͍͑Ͳ΋ɺ αʔόʔαΠυͷෛՙΛߟྀͯ͠࠷దͳUIɾUXΛߟ͑Δ ͷ͕ϕετͰ͋Δɻ

  19. Thank you!