Slide 1

Slide 1 text

©2024 Metaps Holdings, Inc. 新卒で始めるパフォーマンス改善 【OpenSearchで苦労した話】 株式会社メタップスホールディングス 新卒エンジニア 神⽥ 崇彰

Slide 2

Slide 2 text

©2024 Metaps Holdings, Inc. ⾃⼰紹介 神⽥ 崇彰 株式会社メタップスホールディングス 新卒エンジニア Takaaki Kanda @tee_develop 2020年からWebアプリケーション開発を独学で学習。イタンジ株式会社に てPythonエンジニアとして経験を積んだ後、Simple株式会社にてフロン トエンドのリプレスを技術選定から担当し、開発に従事。 ⼤学卒業後は株式会社メタップスホールディングス、プラットフォーム戦 略部にて、srestの開発に従事 2

Slide 3

Slide 3 text

©2024 Metaps Holdings, Inc. srestはAWSファンデーショナルテクニカルレビュー (FTR)認証を取得しています

Slide 4

Slide 4 text

©2024 Metaps Holdings, Inc. 無料トライアル実施中!詳しくはお声がけください。

Slide 5

Slide 5 text

©2024 Metaps Holdings, Inc. OpenSearch

Slide 6

Slide 6 text

©2024 Metaps Holdings, Inc. OpenSearch 検索 集約 ログ分析 サイト検索 アプリのモニタリング ⾼速な検索エンジン 爆速

Slide 7

Slide 7 text

©2024 Metaps Holdings, Inc. OpenSearch srestでの使い⽅ AWSのイベントデータ コスト情報

Slide 8

Slide 8 text

©2024 Metaps Holdings, Inc. OpenSearch 検索条件 集計条件 作業⼿順 ▶ indexを作成 ▶ データを投⼊ ▶ 検索条件の記述 ▶ 集計条件の記述

Slide 9

Slide 9 text

©2024 Metaps Holdings, Inc. OpenSearch 付属のDashBoardが便利

Slide 10

Slide 10 text

©2024 Metaps Holdings, Inc. 課題(パフォーマンス改善が必要だった理由) 30秒もユーザーを待たせたくない レスポンスが遅すぎてタイムアウトが発⽣する AWSの料⾦を可視化する機能 1年分のAWS Service毎のコスト情報を詳しく取得 AWS Lambdaで利⽤しているAPI GateWayの制限に引っかかる(30秒)

Slide 11

Slide 11 text

©2024 Metaps Holdings, Inc. そもそもなんで遅かったのか データの集計処理を全てRubyでやっていた ▶ 万単位データ集計をRubyで頑張ってた ▶ Rubyはそんなに速くない ▶ nested loopを含む関数を複数通す必要がある

Slide 12

Slide 12 text

©2024 Metaps Holdings, Inc. 私のレベル感

Slide 13

Slide 13 text

©2024 Metaps Holdings, Inc. 私のレベル感 検索エンジン?

Slide 14

Slide 14 text

©2024 Metaps Holdings, Inc. ブラウザの話?

Slide 15

Slide 15 text

©2024 Metaps Holdings, Inc. ⼀旦遊んでみる OpenSearchを好きに動かしてみる ▶ Docker環境の⽤意 ▶ 公式ドキュメントを読む ▶ Qiitaの記事読みながら好きにさわってみる ▶ ⽣成系AIを先⽣に壁打ち 初めての技術領域で右も左もわからない状態なので、まずは感覚を掴む

Slide 16

Slide 16 text

©2024 Metaps Holdings, Inc. 苦労した話

Slide 17

Slide 17 text

©2024 Metaps Holdings, Inc. 苦労した話 1 投⼊すべきデータの整形 ▶ タスクを進めるにあたって投⼊すべきデータを整形する必要があった ▶ 何万⾏のデータに圧倒される ▶ ./jqコマンドが便利

Slide 18

Slide 18 text

©2024 Metaps Holdings, Inc. 苦労した話 1 投⼊すべきデータの整形 ▶ 不要なJSONを取り除く ▶ JSONの改⾏を取り除く ▶ {“index”: {}}{データ}の順で1⾏ずつ繰り返す

Slide 19

Slide 19 text

©2024 Metaps Holdings, Inc. 苦労した話 2 index構造が定まらない ▶ indexは既に作られていて検索と集計を担当してた ▶ 途中でこの構造だと無理だと悟る ▶ 何度が構造を変更しながら試⾏錯誤が続く

Slide 20

Slide 20 text

©2024 Metaps Holdings, Inc. 苦労した話 3 仕様の漏れ ▶ 仕様の考慮漏れにより、index構造の再定義とクエリの再考が必要になった ▶ 振り出しへ

Slide 21

Slide 21 text

©2024 Metaps Holdings, Inc. 苦労した話 3 仕様の漏れ ▶ 仕様の考慮漏れにより、index構造の再定義とクエリの再考が必要になった ▶ 振り出しへ index構造を単純化

Slide 22

Slide 22 text

©2024 Metaps Holdings, Inc. 結果どうなった?

Slide 23

Slide 23 text

©2024 Metaps Holdings, Inc. 結果 タイムアウト 5.23秒 タイムアウト問題の解決 Web検証ツール 10秒以上 0.1秒 処理部分

Slide 24

Slide 24 text

©2024 Metaps Holdings, Inc. 結果 集計を⽬的とした関数:10 集計処理の関数: 0 ⼤量の集計処理の削除 移⾏後

Slide 25

Slide 25 text

©2024 Metaps Holdings, Inc. 感想

Slide 26

Slide 26 text

©2024 Metaps Holdings, Inc. 感想 ⼤変だったけど良い学びになった ▶ クリティカルなバグを含む重要なタスクを⼀任されてうれしい ▶ 仕様はちゃんと把握しよう ▶ 最後はやり切るぞという気合いが重要 ▶ OpenSearchの⾼速ドキュメント検索は多くの企業で需要ありそう

Slide 27

Slide 27 text

©2024 Metaps Holdings, Inc. 初LT登壇でした ありがとうございました