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.7k
想定外の負荷を乗り切ったオンライン教育サービスの裏側 / 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 NEXT CfP チームが語る 聞きたくなるプロポーザルとは / Proposals by the SRE NEXT CfP Team that are sure to be accepted
chaspy
1
690
Slack Platform(Deno) での RAG 実装 - LangChain(js) を使ってみた / rag-implementation-on-slack-platform-deno-experimenting-with-langchain-js
chaspy
0
180
SRE の考えをマネジメントに活かす / applying SRE ideas to management
chaspy
7
7k
RAGの簡易評価によるフィードバックサイクル実践 / Feedback cycle practice through simplified assessment of RAGs
chaspy
2
5.1k
定量データと定性評価を用いた技術戦略の組織的実践 / Systematic implementation of technology strategies using quantitative data and qualitative evaluation
chaspy
9
1.7k
エンジニアブランディングチームの KPI / KPI's of engineer branding team
chaspy
2
2k
「SLO Review」今やるならこうする / If I had to do the "SLO Review" again
chaspy
3
1.8k
開発者とともに作る Site Reliability Engineering / SREing with Developers
chaspy
10
8.1k
自己診断能力の獲得を目指して / Toward the acquisition of self-diagnostic skills
chaspy
1
4.9k
Other Decks in Technology
See All in Technology
Aspire をカスタマイズしよう & Aspire 9.2
nenonaninu
0
130
Automatically generating types by running tests
sinsoku
2
3.5k
Terraform Cloudで始めるおひとりさまOrganizationsのすゝめ
handy
2
190
地味にいろいろあった! 2025春のAmazon Bedrockアップデートおさらい
minorun365
PRO
1
320
30代からでも遅くない! 内製開発の世界に飛び込み、最前線で戦うLLMアプリ開発エンジニアになろう
minorun365
PRO
13
4.2k
エンジニアリングで組織のアウトカムを最速で最大化する!
ham0215
1
160
AWSの新機能検証をやる時こそ、Amazon Qでプロンプトエンジニアリングを駆使しよう
duelist2020jp
1
270
SnowflakeとDatabricks両方でRAGを構築してみた
kameitomohiro
1
450
AIコーディングの最前線 〜活用のコツと課題〜
pharma_x_tech
4
2.3k
PicoRabbit: a Tiny Presentation Device Powered by Ruby
harukasan
PRO
2
250
watsonx.data上のベクトル・データベース Milvusを見てみよう/20250418-milvus-dojo
mayumihirano
0
120
2025-04-24 "Manga AI Understanding & Localization" Furukawa Arata (CyberAgent, Inc)
ornew
2
230
Featured
See All Featured
Unsuck your backbone
ammeep
670
57k
Docker and Python
trallard
44
3.3k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
2.9k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
5
530
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
23
2.6k
Become a Pro
speakerdeck
PRO
27
5.3k
The Power of CSS Pseudo Elements
geoffreycrofte
75
5.8k
Side Projects
sachag
453
42k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Designing for Performance
lara
608
69k
Optimising Largest Contentful Paint
csswizardry
36
3.2k
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!