ヤフーのナビゲーション系のバックエンドサービスの課題をk8sで解決した話 #yjbonfire

655 Views

December 03, 19

スライド概要

「Bonfire#4 Kubernetesで課題解決」で使用した資料になります。
https://yj-meetup.connpass.com/event/153658/

profile-image

2023年10月からSpeaker Deckに移行しました。最新情報はこちらをご覧ください。 https://speakerdeck.com/lycorptech_jp

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

(ダウンロード不可)

関連スライド

各ページのテキスト
1.

ヤフーのナビゲーション系の バックエンドサービスの課題を k8sで解決した話 2019年12⽉3⽇ メディアカンパニー 検索統括本部 ⾼⽊ 克彰 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.

2.

⾃⼰紹介 ■名前 ⾼⽊ 克彰(たかぎ かつあき) 18新卒⼊社 @tkgtransit ■ヤフーでの仕事 ■⼊社〜 Yahoo!地図、Yahoo!カーナビ、 DevRelアソシエイト ■今期〜 Yahoo!動画検索、Yahoo!画像検索、 DevRelアソシエイト ■趣味 ガジェット、ダーツ、写真、 ゲーム(FPS、PRG、レース) Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 2

3.

アジェンダ ・ヤフーのナビゲーション機能について ・従来のアーキテクチャ ・抱えていた課題 ・改善後のアーキテクチャー ・改善により解決されたこと ・まとめ Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 3

4.

ヤフーのナビゲーション機能 ・Yahoo!マップ ・Yahoo!カーナビ ・Yahoo!乗換案内 ・徒歩ナビ機能 ・カーナビ機能 ・乗換ナビ機能 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 4

5.

ヤフーのナビゲーション機能 ・Yahoo!マップ ・Yahoo!カーナビ ・Yahoo!乗換案内 ・徒歩ナビ機能 ・カーナビ機能 ・乗換ナビ機能 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 5

6.

従来のアーキテクチャー ・アプリ⽤仮想サーバー ・エンジンデータ更新は1台ずつ ・Web⽤に⽐べてIFが異なる ・C++, Apache Module ※簡易イメージ ・Web⽤仮想サーバー ・エンジンデータ更新は1台ずつ ・アプリ⽤に⽐べてIFが異なる ・ C++, Apache Module ・YOLP API ・仮想サーバーからPaaSに移⾏ ・その他 ・社内オブジェクトストレージ等 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 6

7.

従来のアーキテクチャー ・アプリ⽤仮想サーバー ・エンジンデータ更新は1台ずつ ・Web⽤に⽐べてIFが異なる ・C++, Apache Module ※簡易イメージ ・Web⽤仮想サーバー ・エンジンデータ更新は1台ずつ ・アプリ⽤に⽐べてIFが異なる ・ C++, Apache Module ・YOLP API ・仮想サーバーからPaaSに移⾏ ・その他 ・社内オブジェクトストレージ等 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 7

8.

従来のアーキテクチャー ・アプリ⽤仮想サーバー ・エンジンデータ更新は1台ずつ ・Web⽤に⽐べてIFが異なる ・C++, Apache Module ※簡易イメージ ・Web⽤仮想サーバー ・エンジンデータ更新は1台ずつ ・アプリ⽤に⽐べてIFが異なる ・ C++, Apache Module ・YOLP API ・仮想サーバーからPaaSに移⾏ ・その他 ・社内オブジェクトストレージ等 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 8

9.

従来のアーキテクチャー ・アプリ⽤仮想サーバー ・エンジンデータ更新は1台ずつ ・Web⽤に⽐べてIFが異なる ・C++, Apache Module ※簡易イメージ ・Web⽤仮想サーバー ・エンジンデータ更新は1台ずつ ・アプリ⽤に⽐べてIFが異なる ・ C++, Apache Module ・YOLP API ・仮想サーバーからPaaSに移⾏ ・その他 ・社内オブジェクトストレージ等 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 9

10.

抱えていた課題 ・IFが異なるだけで基本ロジック はほぼ同じだった ※簡易イメージ ・エンジンデータ更新は1台ずつ シェルスクリプトを起動していた →時間が半⽇かかっていた ・脆弱性対応などが多く、 新規開発に割くリソースが少ない ・ヒューマンエラーによる事故 ・障害発⽣時は⼿動オペレーション ・⾃動でスケールしない Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 10

11.

抱えていた課題 ・IFが異なるだけで基本ロジック はほぼ同じだった ※簡易イメージ ・エンジンデータ更新は1台ずつ シェルスクリプトを起動していた →時間が半⽇かかっていた ・脆弱性対応などが多く、 新規開発に割くリソースが少ない ・ヒューマンエラーによる事故 ・障害発⽣時は⼿動オペレーション ・⾃動でスケールしない Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 11

12.

抱えていた課題 ・IFが異なるだけで基本ロジック はほぼ同じだった ※簡易イメージ ・エンジンデータ更新は1台ずつ シェルスクリプトを起動していた →時間が半⽇かかっていた ・脆弱性対応などが多く、 新規開発に割くリソースが少ない ・ヒューマンエラーによる事故 ・障害発⽣時は⼿動オペレーション ・⾃動でスケールしない Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 12

13.

抱えていた課題 ・IFが異なるだけで基本ロジック はほぼ同じだった ※簡易イメージ ・エンジンデータ更新は1台ずつ シェルスクリプトを起動していた →時間が半⽇かかっていた ・脆弱性対応などが多く、 新規開発に割くリソースが少ない ・ヒューマンエラーによる事故 ・障害発⽣時は⼿動オペレーション ・⾃動でスケールしない Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 13

14.

抱えていた課題 ・IFが異なるだけで基本ロジック はほぼ同じだった ※簡易イメージ ・エンジンデータ更新は1台ずつ シェルスクリプトを起動していた →時間が半⽇かかっていた ・脆弱性対応などが多く、 新規開発に割くリソースが少ない ・ヒューマンエラーによる事故 ・障害発⽣時は⼿動オペレーション ・⾃動でスケールしない Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 14

15.

抱えていた課題 ・IFが異なるだけで基本ロジック はほぼ同じだった ※簡易イメージ ・エンジンデータ更新は1台ずつ シェルスクリプトを起動していた →時間が半⽇かかっていた ・脆弱性対応などが多く、 新規開発に割くリソースが少ない ・ヒューマンエラーによる事故 ・障害発⽣時は⼿動オペレーション ・⾃動でスケールしない Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 15

16.

改善後のアーキテクチャー ・API層 ・アプリとWebで統合 ・Spring Boot + Java ・社内PaaSに移⾏ ※簡易イメージ ・エンジン層 ・社内CaaSに移⾏ ・構成は Apache + C++ ・バイナリーデータは init containerで取得し、 オンメモリーに展開 ・データは⼊稿したらk8sの Cronを実⾏させるように変更 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 16

17.

改善後のアーキテクチャー ・API層 ・アプリとWebで統合 ・Spring Boot + Java ・社内PaaSに移⾏ ※簡易イメージ ・エンジン層 ・社内CaaSに移⾏ ・構成は Apache + C++ ・バイナリーデータは init containerで取得し、 オンメモリーに展開 ・データは⼊稿したらk8sの Cronを実⾏させるように変更 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 17

18.

改善後のアーキテクチャー ・API層 ・アプリとWebで統合 ・Spring Boot + Java ・社内PaaSに移⾏ ※簡易イメージ ・エンジン層 ・社内CaaSに移⾏ ・構成は Apache + C++ ・バイナリーデータは init containerで取得し、 オンメモリーに展開 ・データは⼊稿したらk8sの Cronを実⾏させるように変更 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 18

19.

改善後のアーキテクチャー ・API層 ・アプリとWebで統合 ・Spring Boot + Java ・社内PaaSに移⾏ ※簡易イメージ ・エンジン層 ・社内CaaSに移⾏ ・構成は Apache + C++ ・バイナリーデータは init containerで取得し、 オンメモリーに展開 ・データは⼊稿したらk8sの Cronを実⾏させるように変更 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 19

20.

改善により解決されたこと ・API層とエンジン層は 基本的に切り離すように変更 →修正時の検証範囲が少なく ※簡易イメージ ・エントリーポイントの統合 →保守コストの削減 ・速度が特に重要なエンジン層は kubernetesへ移⾏ →急なアクセス負荷向上時でも すぐにスケールできるように ・⼊稿データからバイナリーデータ の⽣成はk8sのCron機能を使⽤ →作業コストが削減 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 20

21.

改善により解決されたこと ・API層とエンジン層は 基本的に切り離すように変更 →修正時の検証範囲が少なく ※簡易イメージ ・エントリーポイントの統合 →保守コストの削減 ・速度が特に重要なエンジン層は kubernetesへ移⾏ →急なアクセス負荷向上時でも すぐにスケールできるように ・⼊稿データからバイナリーデータ の⽣成はk8sのCron機能を使⽤ →作業コストが削減 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 21

22.

改善により解決されたこと ・API層とエンジン層は 基本的に切り離すように変更 →修正時の検証範囲が少なく ※簡易イメージ ・エントリーポイントの統合 →保守コストの削減 ・速度が特に重要なエンジン層は kubernetesへ移⾏ →急なアクセス負荷向上時でも すぐにスケールできるように ・⼊稿データからバイナリーデータ の⽣成はk8sのCron機能を使⽤ →作業コストが削減 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 22

23.

改善により解決されたこと ・API層とエンジン層は 基本的に切り離すように変更 →修正時の検証範囲が少なく ※簡易イメージ ・エントリーポイントの統合 →保守コストの削減 ・速度が特に重要なエンジン層は kubernetesへ移⾏ →急なアクセス負荷向上時でも すぐにスケールできるように ・⼊稿データからバイナリーデータ の⽣成はk8sのCron機能を使⽤ →作業コストが削減 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 23

24.

改善により解決されたこと ・API層とエンジン層は 基本的に切り離すように変更 →修正時の検証範囲が少なく ※簡易イメージ ・エントリーポイントの統合 →保守コストの削減 ・速度が特に重要なエンジン層は kubernetesへ移⾏ →急なアクセス負荷向上時でも すぐにスケールできるように ・⼊稿データからバイナリーデータ の⽣成はk8sのCron機能を使⽤ →作業コストが削減 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 24

25.

まとめ ・デプロイから本番投⼊までの作業時間が短縮 ・ミドルウェアの更新に伴う作業時間も短縮 ・障害発⽣時も⾃動復旧 ・アクセス数増加時のスケールも⾃動化 新規開発などに集中できるように︕︕ Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 25

26.

Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.