181 Views
December 04, 20
スライド概要
2020年11月18日に開催した、ヤフー福岡 Tech Meetup #8「福岡に縁があるYahoo! JAPANのエンジニア」の登壇資料です。
イベントページ URL はこちらです。
https://yahoo-fukuoka.connpass.com/event/192171/
福岡へのUターンなど、これまでのキャリアをお話させていただきながら、
Yahoo! JAPANトップページの可用性を向上させる取り組みについてご紹介いたしました。
2023年10月からSpeaker Deckに移行しました。最新情報はこちらをご覧ください。 https://speakerdeck.com/lycorptech_jp
トップページの可⽤性向上の取り組み ヤフー株式会社 COO メディア統括本部 メディア開発本部 岡本 拓也 ©2020 Yahoo Japan Corporation All rights reserved.
アジェンダ 1. ⾃⼰紹介 2. トップページに掲載する情報と可⽤性 3. 可⽤性に影響を与える要素 4. 可⽤性を向上させるためのアプローチ ©2020 Yahoo Japan Corporation All rights reserved. 2
⾃⼰紹介 岡本 拓也 ⼭⼝県出⾝。福岡で学⽣時代を過ごしました。 趣味はロードバイクと、SF映画です。 ■2009年 新卒⼊社 画像配信プラットフォーム(PF) ニュース(メディア事業) コンテナ環境のログのモニタリングシステム(PF) ■2019年 福岡にUターン ニュース(メディア事業) トップページ(メディア事業)←イマココ ©2020 Yahoo Japan Corporation All rights reserved. 3
トップページの可⽤性向上の取り組み 1. ⾃⼰紹介 2. トップページに掲載する情報と可⽤性 3. 可⽤性に影響を与える要素 4. 可⽤性を向上させるためのアプローチ ©2020 Yahoo Japan Corporation All rights reserved. 4
トップページに掲載する情報と可⽤性 平常時に提供する情報 • ニュース • 天気・災害 • スポーツ • 地域情報 … 出典︓「Yahoo! JAPAN」アプリ、新たに「地域」タブの提供を開始 https://about.yahoo.co.jp/pr/release/2020/10/06b/ 「Yahoo! JAPAN」アプリ、新たに「タブ追加機能」の提供を開始 https://about.yahoo.co.jp/pr/release/2020/09/23a/ ©2020 Yahoo Japan Corporation All rights reserved. 5
トップページに掲載する情報と可⽤性 ⾮常時に提供する情報 • 豪⾬災害 • 緊急地震速報 • 新型コロナウィルスのまとめ … スマホ版トップページの新型コロナタブ PC版トップページでの災害情報表⽰例 出典︓https://about.yahoo.co.jp/csr/effort/041.html 危機から⽣命財産を守る情報を届けるため、⾼い可⽤性が必要 ©2020 Yahoo Japan Corporation All rights reserved. 6
トップページの可⽤性向上の取り組み 1. ⾃⼰紹介 2. トップページに掲載する情報と可⽤性 3. 可⽤性に影響を与える要素 4. 可⽤性を向上させるためのアプローチ ©2020 Yahoo Japan Corporation All rights reserved. 7
トップページの可⽤性に影響を与える要素 1. ⼤量のトラフィック発⽣(台⾵や豪⾬による災害情報の提供) 2. スパイクトラフィック発⽣(緊急地震速報や重⼤なニュースのPush通知) ©2020 Yahoo Japan Corporation All rights reserved. 8
トップページの可⽤性に影響を与える要素 ⼤量のトラフィック発⽣ ⼤規模かつ広域に発⽣する災害 ・特別警報が発令される規模の台⾵や豪⾬災害 ・河川氾濫等の緊急性のある災害 傾向 ・情報を求めて1⽇1億PVを超えることも ・ピークタイムは毎回異なるが、 数時間から数⽇にわたってトラフィック増 ©2020 Yahoo Japan Corporation All rights reserved. 出典:https://promo-mobile.yahoo.co.jp/risklevel/ 9
トップページの可⽤性に影響を与える要素 スパイクトラフィック発⽣ 速報性が求められる災害やニュース ・緊急地震速報 ・重⼤ニュースのPush通知 スパイクトラフィックになりやすい要素 ・⾸都圏での地震発⽣(Push配信エリアのユーザ数) ・⽇中>深夜(Push配信時間帯のユーザ数) 対応の難しさ ・スパイクの⾼さはケースによる 6/25の千葉県北東部の緊急地震速報によるスパイクトラフィック ・オートスケールは間に合わない ©2020 Yahoo Japan Corporation All rights reserved. 10
トップページの可⽤性向上の取り組み 1. ⾃⼰紹介 2. トップページに掲載する情報と可⽤性 3. 可⽤性に影響を与える要素 4. 可⽤性を向上させるためのアプローチ ©2020 Yahoo Japan Corporation All rights reserved. 11
可⽤性を向上させるためのアプローチ 1. アーキテクチャ上の戦略 2. エンジニアの活動 ©2020 Yahoo Japan Corporation All rights reserved. 12
可⽤性を向上させるためのアプローチ アーキテクチャ上の戦略1 キャッシュ システム設計段階からトラフィック増に備える ・ボトルネックになりえる箇所の性能向上 ・連携システムへの影響を抑える ・CDNやリバースプロキシレベルのキャッシュ (APIレスポンス、FEコンテンツ etc) ステートレス/シンプルな状態を維持することを意識 ・キャッシュに依存しすぎない サービスのシステムのアーキテクチャの⼀例(1〜7はデータの流れ) ・内部キャッシュ更新のタイミング インターネットの接続点近くにCDNクラスタを配置 ©2020 Yahoo Japan Corporation All rights reserved. 13
可⽤性を向上させるためのアプローチ アーキテクチャ上の戦略2 冗⻑構成+負荷分散 システム設計段階からトラフィック増に備える ・同⼀DC内の冗⻑構成と負荷分散 緊急性の⾼い情報を扱う場合の備え ・複数DCの冗⻑構成を前提で準備 ・⽚拠点がダウンしても耐えるリソース設計 100%処理可能なリソース ©2020 Yahoo Japan Corporation All rights reserved. 100%処理可能なリソース 14
可⽤性を向上させるためのアプローチ アーキテクチャ上の戦略3 コンテナテクノロジー環境でのスケーリング 緊急事態発⽣時に対処する⼿段として備える ・想定以上のリクエストが連続的に発⽣した場合、スケールアウトで対処 ・豪⾬災害が広域化し、想定以上のアクセスが同時に発⽣した場合など ・PaaS/CaaSベースのサービス提供環境を採⽤することで可能 ・Push対策には、スケールアウトの速度では間に合わない ©2020 Yahoo Japan Corporation All rights reserved. 15
可⽤性を向上させるためのアプローチ アーキテクチャ上の戦略4 それでもだめなとき… 緊急事態発⽣時に対処する⼿段として備える サーキットブレーカーの発動 ・Rate Limitを超えた場合に 事前に準備した画⾯を掲出し障害の連鎖を⽌める 簡易ページでの情報提供を継続 ・トップページでは⾼負荷時に備え簡易ページを⽤意 ・広告、レコメンデーション等を省き災害情報に絞る 高負荷時に備える簡易ページの例 ©2020 Yahoo Japan Corporation All rights reserved. 16
可⽤性を向上させるためのアプローチ エンジニアの活動1 インフラ・プラットフォームチームとの連携 効率よく開発するための社内PF コンピューティング︓IaaS/PaaS/CaaS/FaaS … ストレージ︓KVS/DBaaS/オブジェクトストレージ … ネットワーク︓CDN/リバースプロキシ/LB … モニタリング︓メトリクス/ログ/トレース … PFごとに品質基準(マニフェスト)を定義 インターフェース︓WebUI, RESTful API, … リージョン︓地域冗⻑性 アベイラビリティゾーン︓リージョン内のAZ情報 可⽤性︓稼働率の定義と⽬標稼働率 スループット︓処理可能なrps ⼀定の基準にそってコミュニケーションをとり、 サービス開発エンジニアとPF担当エンジニアが同じ⽅向を向く ©2020 Yahoo Japan Corporation All rights reserved. 17
可⽤性を向上させるためのアプローチ エンジニアの活動2 ⼤規模災害を想定した初動対応訓練 「⼤規模災害発⽣時の初動対応、第⼀報から継続的な情報提供体制の構築までの習熟」 ⼤規模災害によるリージョンの切り替えを想定した訓練シナリオ 職種横断 ・サービス開発エンジニア ⼀次対応とサービス継続 ⼤規模災害による機能停⽌ ・インフラ・PF部⾨のエンジニア ・ページ編成担当 ・リスク管理部⾨ 訓練後の振り返り ・初動対応⼿順の改善 ・⽇々のサービス開発へのフィードバック ©2020 Yahoo Japan Corporation All rights reserved. 18
トップページの可⽤性向上の取り組み まとめ • 危機から⽣命財産を守る情報を提供するため、可⽤性を⾼める • 可⽤性を向上させるためのアプローチ • 影響要因にあわせたアーキテクチャ上の戦略 • 災害に備える訓練、組織づくり ©2020 Yahoo Japan Corporation All rights reserved. 19
Tech Blogのご紹介 トップページのFEサービス開発や、 インフラ・プラットフォーム部⾨の具体的な取り組みを紹介しています。 是⾮ご参照ください。 https://techblog.yahoo.co.jp/ ©2020 Yahoo Japan Corporation All rights reserved. 20
©2020 Yahoo Japan Corporation All rights reserved.