Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
想定外の負荷を乗り切ったオンライン教育サービスの裏側 / How We Overcame th...
Search
Takeshi Kondo
February 19, 2021
Technology
7
7.3k
想定外の負荷を乗り切ったオンライン教育サービスの裏側 / How We Overcame the COVID-19 Crisis
Developers Summit 2021
https://event.shoeisha.jp/devsumi/20210218/session/3084/
Takeshi Kondo
February 19, 2021
Tweet
Share
More Decks by Takeshi Kondo
See All by Takeshi Kondo
SRE の考えをマネジメントに活かす / applying SRE ideas to management
chaspy
7
4.7k
RAGの簡易評価によるフィードバックサイクル実践 / Feedback cycle practice through simplified assessment of RAGs
chaspy
2
4.4k
定量データと定性評価を用いた技術戦略の組織的実践 / Systematic implementation of technology strategies using quantitative data and qualitative evaluation
chaspy
9
1.5k
エンジニアブランディングチームの KPI / KPI's of engineer branding team
chaspy
2
1.7k
「SLO Review」今やるならこうする / If I had to do the "SLO Review" again
chaspy
3
1.6k
開発者とともに作る Site Reliability Engineering / SREing with Developers
chaspy
10
7.6k
自己診断能力の獲得を目指して / Toward the acquisition of self-diagnostic skills
chaspy
1
4.4k
『スタディサプリ 中学講座』における E2E Test の運用と計測による改善 / Improved E2E testing through measurement
chaspy
0
4.1k
『スタディサプリ』における SLI/SLO の継続的改善 / Continuous improvement of SLI/SLO at StudySapuri
chaspy
1
3k
Other Decks in Technology
See All in Technology
インフラとバックエンドとフロントエンドをくまなく調べて遅いアプリを早くした件
tubone24
1
430
地理情報データをデータベースに格納しよう~ GPUを活用した爆速データベース PG-Stromの紹介 ~
sakaik
1
150
[FOSS4G 2024 Japan LT] LLMを使ってGISデータ解析を自動化したい!
nssv
1
210
20241120_JAWS_東京_ランチタイムLT#17_AWS認定全冠の先へ
tsumita
2
230
The Rise of LLMOps
asei
5
1.2k
Application Development WG Intro at AppDeveloperCon
salaboy
0
180
OCI Vault 概要
oracle4engineer
PRO
0
9.7k
初心者向けAWS Securityの勉強会mini Security-JAWSを9ヶ月ぐらい実施してきての近況
cmusudakeisuke
0
120
iOSチームとAndroidチームでブランチ運用が違ったので整理してます
sansantech
PRO
0
120
100 名超が参加した日経グループ横断の競技型 AWS 学習イベント「Nikkei Group AWS GameDay」の紹介/mediajaws202411
nikkei_engineer_recruiting
1
170
dev 補講: プロダクトセキュリティ / Product security overview
wa6sn
1
2.3k
Terraform CI/CD パイプラインにおける AWS CodeCommit の代替手段
hiyanger
1
240
Featured
See All Featured
Build The Right Thing And Hit Your Dates
maggiecrowley
33
2.4k
BBQ
matthewcrist
85
9.3k
The Cost Of JavaScript in 2023
addyosmani
45
6.7k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
Designing Experiences People Love
moore
138
23k
KATA
mclloyd
29
14k
Statistics for Hackers
jakevdp
796
220k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
4
370
Designing for humans not robots
tammielis
250
25k
Visualization
eitanlees
145
15k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
RailsConf 2023
tenderlove
29
900
Transcript
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 想定外の負荷を乗り切った オンライン教育サービスの裏側 @chaspy / Takeshi Kondo Developers Summit
2021
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 @chaspy (Takeshi Kondo) ➔ Lead Software Engineer, Site
Reliability at Quipper ➔ Community ◆ Japan Datadog User Group Organizer ◆ Terraform-jp board member ➔ Social ◆ Twitter: chaspy_ ◆ Github: chaspy
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 今日お話しすること Quipper が開発する国内・海外両プロダクトが どのように未曾有の危機を乗り越えてきたか オンライン教育サービスであるスタディサプリ / Quipper は
COVID-19 により需要 が急増し、当たり前に使われる New Normal となりました。この危機をコミュニ ケーションとエンジニアリング両面でどう乗り越えたのか、その事例を紹介しま す。
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 Key Messages ➔ 問題vs私たち ◆ セクションの壁を作らずに問題に向き合うこと ➔ Fact-Based
◆ 事実(Fact)を元に計画を立て、計測し、意思決定すること
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 Agenda | 01 02 03 04 スタディサプリ /
Quipper について 国内事例紹介 海外事例紹介 まとめ
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 スタディサプリ / Quipper について 01
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 Quipper とはどんな会社? 2010年ロンドンで設立、世界に向けた教育サービス Quipper を運営。 2015年に M&A を経てリクルート傘下へ。
以降、日本向けにスタディサプリ、海外(*1)向けに Quipper というブランド名でオ ンライン教育プロダクトの開発・運営を行っている。 *1 フィリピン、インドネシアに展開中
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 国内向けサービス 小学生から受験生や大人まで、学習したい全ての人が学べる月額制のオンライン学習サービス。 約4万本の録画授業動画が見られるベーシックプランのほか、オンラインコーチングプランや生配信で授業を受けられるライブプ ランなど、一人一人が自由に学習できるよう、様々なプランを展開しています。 先生方が生徒個々人のレベルに合った最適な学習を提供できる校内インフラサービス。クラス全員に特定の講義や確認テスト、 宿題を配信することができるほか、アクティブラーニングに使える教材も提供。 生徒が夢中になって学び、希望する進路を実現することを支援しています。 隙間時間に3分で学習できる英語サービス。リスニングと発話を鍛えられる「新日常英会話コース」、短期間でのスコアアップを
狙う「TOEIC®L&R TEST対策コース」、「ビジネス英語コース」があり、業界初オンライン完結型コーチングも提供しています。
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 海外向けサービス Quipper Schoolは小学校から高校まで、学校の教室で先生方をサポートするオンラインラーニングマネージメントプラットフォー ムです。先生方は限られた時間の中で、増え続ける複雑な校務、変化する教育過程の対応などに追われています。 Quipper Schoolを通じて、私たちは先生の業務負荷を軽減するだけではなく、 21世紀を生き抜く人材育成のお手伝いをしたいと考えてい ます。
Quipper Videoは、いつでもどこでも自分のペースで学習できるオンライン講義動画サービスです。実力派講師によって解説さ れる短くまとめられた講義動画、図解説明の入ったわかりやすいテキスト、自分の苦手箇所がわかる到達度テストの三点セット によって、一人一人を自ら学べる生徒にします。教師向けプラットフォームである Quipper Schoolを使うことで、先生は生徒に 対しQuipper Videoを使った学習を促すことも可能です。 Quipper Campusは進学を考える高校生のための大学進学情報サイトです。地域や専攻による大学検索だけでなく、適性テス トを通じて自分の目指す進路に最適な教育機関を見つけることができます。現在インドネシアでのみ運営しています。
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 日本 インドネシア フィリピン 対象学年 小・中学校 高校 大学・社会人 高校
高校 オンラインビデオ (B to C) オンラインビデオ& アセスメント (B to B to C) オンラインコーチング 各国で様々なサービスラインナップにて事業展開をしています パーソナルコーチプラン サービスラインナップ
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 47万人 74万人 26万人 8万人 4万人 17 サービス会員数推移 サービス開始から
8年、有料会員数は国内外で 伸び続けています。最新の会員数は 2020年12月末時点の157万人。 (2019年までは各年度の 累計) 国外 国内 2014 2015 2016 2017 2018 2013 97万人 110 13 2019 127万人 2020 157万人
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 詳細は “Quipper handbook” で 検索🔎
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 国内事例紹介 02
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 2020年3月、COVID-19 本格流行
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 アクセス数(2020年2月~3月)
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 2020年4月7日 緊急事態宣言発令
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 アクセス数(2020年3月~5月)
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 2020年5月 一斉休校 地方自治体からの受注が増える
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 Self-Hosted MongoDB の負荷課題 生徒向けサービス 先生向けサービス 新規登録サービス AWS 内でもっとも
IO 性能が高く、最も 高価な i3en.24xlarge インスタンスクラスを使用
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 これまではスケールアップしてきたがもう後がない https://quipper.hatenablog.com/entry/2019/09/26/080000
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 解決策 ➔ データによる需要予測と負荷緩和 ◆ 今後何倍のユーザ数増加が見込まれるのか ◆ スパイクアクセスをいかに回避するか ➔
エンジニアリングによる解決 ◆ エンジニアリングチーム一丸となり”できることはなんでもやる” ◆ 最大のボトルネックとなりうる MongoDB への抜本的対処
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 データによる需要予測と負荷緩和 ➔ 基本的には昨年度実績から予測するが、 ” 一括受注”が昨年との差分 ➔ 営業から定性情報をヒアリングし、予測に反映 ◆
学校により Active Learner 率が異なる • 自治体主導で導入を決めたが、活用するかは学校に任されている場合 • 既に他の学年で活用されている学校に導入する場合
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 セクションを超えて情報連携
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 登録日や利用開始日を分散する
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 エンジニアリングで”できることはなんでもやった” ➔ SRE ◆ RDS PostgreSQL の Aurora
化 ◆ Reverse Proxy の Scaleup ◆ HPA 導入 ◆ Worker Node Group 分離 ◆ Memcached Scaleup ◆ Amazon GuardDuty 導入 ➔ Web Developer ◆ 意図しない実装による不要な update の削減 ◆ 不要な Write の削減 ◆ 不要なデータの削除 ◆ 学習データ更新サービスのrate limiting ◆ Native Client からの API call 数削減
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 MongoDB への抜本的対処
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 MongoDB への抜本的対処 ➔ “学習データ”をデータベース分離 2020年4月末 ➔ MongoReplay によるパフォーマンステスト
2020年5月末 ➔ UsageDB を Atlas へ移行 / Sharding 有効化 2020年6月末
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 “学習データ”をデータベース分離 ➔ Write Access / データ量ともに多い”学習データ”(Usage) をデータベースごと分離した ◆
いわゆる垂直分割 Main DB Usage DB
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 UsageDB を Atlas へ移行 / Sharding 有効化 ➔
Write Access の多い “Usage DB” を Sharding ◆ Managed Service(Atlas) へ移行 ◆ いわゆる水平分割 Main DB / self-hosted Usage DB / Atlas Sharding
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 MongoReplay によるパフォーマンステスト ➔ 現状の3倍のトラフィックまで耐えられることを検証 本番環境サービス Query をキャプチャ Replay
検証環境 本番環境 MainDB / Self-hosted UsageDB / Atlas MainDB / Self-hosted UsageDB / Atlas
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 大きな障害ゼロで緊急事態宣言下 でのピークを乗り切った🎉
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 海外事例紹介 03
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 Quipper がインドネシア政府より推奨教育サービス認定 http://www.recruit-mp.co.jp/news/release/2020/0414_3855.html
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 アクセス数(2020年6月~10月)
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 Timed-Exam(定期試験)を Quipper 上で実施
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 試験開始時の一斉アクセスによるサーバダウン 試験開始時の一斉アクセスにより 一部の生徒が試験を開始できなかった 先生は事前に試験問題と 開始時間と対象生徒(クラス)を登録
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 前提: オートスケーリングはスパイクアクセスに弱い ➔ CPU 使用率によるオートスケーリング(HPA)は導入して いたが... ➔ サーバのスケールアウトには時間がかかる
◆ コンテナのイメージ Pull ◆ インスタンスのスケールアウト
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 短期対策: 日中は事前にサーバをスケールアウト💸💸💸
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 解決策 ➔ 運用による負荷緩和 ➔ エンジニアリングによる解決
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 対策: 運用でカバー ➔ 先生には試験開始の24時間以前に登録を依頼 ➔ 同時試験受講者数の制限 ➔ なるべく試験実施時間を学校内で分散してもらう
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 エンジニアリングで解決したい👍
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 エンジニアリングで”できることはなんでもやる” ➔ Web Developer は Application でできる負荷対策に取 り組む
➔ 事前スケール(Scheduled-Scaling)の実現 ◆ Global Development VPoE と SRE の協力 • SRE は Kubernetes / Platform のことは詳しいが、 ドメ イン知識は不足
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 「試験の開始時間と受験 人数はデータベースにあるはず。 それをもとにサーバを事前に スケールアウトできないか?」
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 「試験の開始時間と受験 人数はデータベースにあるはず。 それをもとにサーバを事前に スケールアウトできないか?」 Global Division Director からの提案
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 Scheduled-Scaling with Kubernetes HPA
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 Scheduled-Scaling with Kubernetes HPA データベースから試 験対象人数と 開始時間を取得
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 Scheduled-Scaling with Kubernetes HPA 受験人数に対応した必要な Pod 数を Datadog
に custom metrics として送信
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 Scheduled-Scaling with Kubernetes HPA HPA から external metrics
とし て利用して事前スケール
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 技術的詳細はこちら ➔ Quipper Product Team Blog ➔ Kubernetes
Meetup Tokyo#38
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 結果 黄色の線: 試験情報に合わせた必要 Pod 数 紫の線: 実際の Pod
数 試験発生時には事前にスケールを、それ以外の時 間では CPU でのスケールを実現
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 結果 紫の線: 事前に日中スケールしていた時の Node 数 青い線: Scheduled Scaling
適用後の Node 数 紫と青の面積の差が減らしたコスト。 月間 $3150 は減らせる試算に。
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 定期試験のデータに合わせて 事前にサーバをスケールして サービスダウンを回避🎉
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 まとめ 04
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 まとめ(1/2) 負荷対策にはエンジニアリングチーム以外の事業に関わる すべてのひとの協力が必要 • エンジニアリングは重要だが、そもそもの課題発見や分析、問題に対する運 用回避のためには Developer 以外にも、Product
Manager, Sales, Customer Success, Data 全チームの協力が必要 • 問題 vs 私たちの考えで、セクションの壁を作らず向き合えた結果乗り越える ことができた
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 まとめ(2/2) 事実(Fact)ベースで判断するための負荷試験の重要性がま すます高まる • 意思決定を事実ベース(Fact-Based)で行うことが重要 • 現状のアーキテクチャで”何倍”まで耐えられるのか?の問いに答えるために 負荷試験・キャパシティプランニングの重要性が高まっている
• 正しく負荷試験を行うためには複数のチームの協力が必要
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 Key Messages ➔ 問題vs私たち ◆ セクションの壁を作らずに問題に向き合うこと ➔ Fact-Based
◆ 事実(Fact)を元に計画を立て、計測し、意思決定すること
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 @chaspy (Takeshi Kondo) ➔ Lead Software Engineer, Site
Reliability at Quipper ➔ Community ◆ Japan Datadog User Group Organizer ◆ Terraform-jp board member ➔ Social ◆ Twitter: chaspy_ ◆ Github: chaspy
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側
#devsumi 想定外の負荷を乗り切ったオンライン教育サービスの裏側 Thank you!