270 Views
June 15, 20
スライド概要
KubeFest Tokyo 2020 というイベントで登壇しました。
このイベントは Kubernetes を利用している人、これから導入したい人が新しいことを学んだり、ネットワーキングすることを狙いとして開催するワンデイのオンラインイベントです。
登壇内容としては、ゼットラボが Yahoo! JAPAN 向けに提供する Kubernetes as a Service(CaaS) のディスプレイ広告(YDN)への導入事例の紹介が主な内容です。
広告検索システムで利用する検索エンジン Vespa を Kubernetes 上で稼働させる上での課題や苦労した点などについても説明しています。
2023年10月からSpeaker Deckに移行しました。最新情報はこちらをご覧ください。 https://speakerdeck.com/lycorptech_jp
ヤフー/ゼットラボの ステートフルアプリケーションへの挑戦 2020年6月13日 飯田 諒 Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.
自己紹介 ■ 名前 ▷ 飯田 諒 ■ 経歴 ▷ 2015年 ヤフー新卒入社 ▷ 広告やニュース記事向けの内製検索エンジンの開 発・運用を経験 ▷ 2018年~ 広告配信プラットフォームの開発・運 用に従事 ▷ Kubernetes 利用歴は1年半くらい Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 2
話すこと ■ ディスプレイ広告 (YDN) への CaaS 導入事例の紹介 ■ CaaS 移行で苦労した点 Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 3
ディスプレイ広告 (YDN) ■ 設定されたユーザ層に広告を配信可能なサービス ▷ 様々な形式で広告を配信 Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 4
広告配信のシステム概要 広告主 入稿システム 広告検索システム クライアント ユーザ Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 5
広告配信のシステム概要 広告主 入稿システム 広告検索システム クライアント ユーザ ▷ リクエストに応じて最適な広告を返却 ▷ 高速なレスポンスが要求される => 検索エンジン Vespa を利用 Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 6
広告検索システムの課題 ■ 現行は baremetal + VM で稼働しており 以下が課題 ▷ マシンリソースをうまく使えていない ▷ サーバ故障時の運用が面倒 ▷ リリースに時間がかかる Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 7
広告配信システムへの CaaS 導入 ■ 広告配信システムの検索エンジン Vespa を CaaS (ステートフル環境) で稼働させる CaaS へ移行 Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 8
Vespa ■ OSSとして公開されている検索エンジン ▷ 2017年9月に Oath社が公開 ▷ Yahoo! JAPAN の他サービスでも利用 ■ 機能・特徴 ▷ スケーラブル ▷ 大規模なデータを高速で処理 ▷ 多様なランキングなど Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 9
Vespa ■ Vespa のデータ管理 (冗長性 2の場合) Vespa クラスタ (Vespa Server の集合) Server1 b1 b2 b5 b6 Server2 b1 b2 b3 b4 Server3 b3 b4 b5 b6 bucket (ドキュメントの集合) bucket を担当する Server は動的に決まる primary secondary Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 10
システム概要 アラート検知 メトリクス監視 設定変更 開発メンバー (サービス側) デプロイ ログ検索 Prometheus Alertmanager Grafana Vespa クラスタ Vespa Server ... ログ管理PF ログ転送 ストレージ Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 11
システム概要 アラート検知 メトリクス監視 設定変更 開発メンバー (サービス側) デプロイ ログ検索 Prometheus Alertmanager Grafana Vespa クラスタ Vespa Server ... ログ管理PF ログ転送 ストレージ Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 12
システム概要 アラート検知 メトリクス監視 設定変更 開発メンバー (サービス側) デプロイ ログ検索 Prometheus Alertmanager Grafana Vespa クラスタ Vespa Server ... ログ管理PF ログ転送 ストレージ Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 13
システム概要 アラート検知 メトリクス監視 設定変更 開発メンバー (サービス側) デプロイ ログ検索 Addon-Manager が提供 Prometheus Alertmanager Grafana Vespa クラスタ Vespa Server ... ログ管理PF ログ転送 ストレージ Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 14
システム概要 アラート検知 メトリクス監視 設定変更 開発メンバー (サービス側) デプロイ ログ検索 Prometheus Alertmanager Grafana Vespa クラスタ Vespa Server ... ログ管理PF ログ転送 ストレージ Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 15
システム概要 アラート検知 メトリクス監視 設定変更 開発メンバー (サービス側) デプロイ ログ検索 Prometheus Alertmanager Grafana Vespa クラスタ Vespa Server ... ログ管理PF ログ転送 ストレージ Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 16
システム概要 Vespa クラスタ Vespa Server1 Vespa Server2 Vespa Server30 SC pv pv pv ストレージ Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 17
システム概要 Vespa クラスタ 1 Vespa Server : 1 Pod : 1 PV Vespa Server1 Vespa Server2 Vespa Server30 SC pv pv pv ストレージ Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 18
システム概要 Addon-Manager Vespa クラスタ Vespa Server1 Vespa Server2 Vespa Server30 SC pv pv pv ストレージ Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 19
システム概要 Vespa クラスタ 1 Vespa クラスタ 30 Vespa Server 構成 Vespa Server1 Vespa Server2 Vespa Server30 SC pv pv pv ストレージ Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 20
システムの運用体制 Kubernetes クラスタの構築・運用 ▷ クラスタの作成 ▷ 古いバージョンのメンテナンス ▷ StorageClass の提供など CaaS管理者 ゼットラボ社 ストレージ管理者 ストレージの 構築・運用 アプリケーション Kubernetes クラスタの利用 ▷ Nodeのスケーレイン・アウト ▷ アプリケーションのデプロイ PV の作成・運用 利用者 (サービス側) Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 21
CaaS 移行で苦労した点 ■ ストレージ関連の問題 ■ データをロストしないための設計 ■ デバッグが困難 Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 22
CaaS 移行で苦労した点 ■ ストレージ関連の問題 ■ データをロストしないための設計 ■ デバッグが困難 Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 23
ストレージ関連の問題 (1) ■ Node側とストレージ側のボリューム上の データ削除は同時に行われない (非同期) ▷ StorageClass で mount:discard (≒同期削除) を設定 して対応 ※ thin provisioning の場合 ストレージ 使用率 90%超 Node Pod /mnt/device 使用率 約30% Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 24
ストレージ関連の問題 (2) ■ ストレージの IOPS がボトルネック ▷ ディスクの性能自体を向上 (HDD -> SSD) ▷ ストレージプールの分割 ストレージ ストレージ 1 Kubernetes クラスタに 1 ストレージプールの構成 Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 25
CaaS 移行で苦労した点 ■ ストレージ関連の問題 ■ データをロストしないための設計 ■ デバッグが困難 Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 26
データをロストしないための設計 ■ ローリングアップデートで Node・Pod が消え ることを考慮した設計・実装が必要 ▷ preStop Hookで更新データの同期処理 更新 更新A'で更新Aが上書きされる場合がある Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 27
データをロストしないための設計 ■ ローリングアップデートで Node・Pod が消え ることを考慮した設計・実装が必要 ▷ preStop Hookで更新データの同期処理 更新 更新データを同期してから Node の再作成が行われるようにする Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 28
CaaS 移行で苦労した点 ■ ストレージ関連の問題 ■ データをロストしないための設計 ■ デバッグが困難 Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 29
デバッグが困難 ■ ローリングアップデートで Node が再作成され るため Node が保持する情報が消失する問題 ▷ ログ管理PF / Grafana に様々なログやメトリクスを 連携しておき調査しやすくしておく レイテンシ・スループット CPU / メモリ使用率など Grafana vespa ■ journal ログ ■ アプリケーションログ ▷ エラーログ ▷ 更新・検索ログ ログ管理PF Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 30
まとめ ■ ディスプレイ広告 (YDN) の検索エンジ ンを CaaS 移行したシステム概要を紹介 ■ ステートフルアプリケーションの移行は 苦労する点は多い ▷ 乗り越えれば明るい未来が待っているはず Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 31