23卒の新卒入社したSREが広大な検索の世界に飛び込んだ話

この記事は[ZOZO Advent Calendar](https://qiita.com/advent-calendar/2023/zozo) 2023 #1 20日目の記事になります。


# はじめに
自分はZOZOの23卒の新卒SREとして入社して半年以上が経過し、今年も後わずかになりました。本記事では自分がZOZOTOWNの検索基盤のSREとして広大な検索の世界に飛び込んで気づいたことをまとめてみました。

# 検索に関わる前
## 最初に配属されたチーム
研修が終わった5月に自分は「プラットフォーム基盤SRE」というチームに配属されました。そのチームではKubernetesやIstioといったZOZOTOWNのマイクロサービスの基盤となる技術を運用しています。自分は元々大学の研究でKubernetesを主に使った研究をしていたり、ZOZOTOWNで使用しているKubernetesのエコシステムに興味があったのでそのチームに希望しました。

## 検索の世界に関わる第1歩
最初の2ヶ月はZOZOTOWNのプラットフォーム基盤のタスクをこなしながら使用しているエコシステムの理解を深めていました。ある日、7月からプラットフォーム基盤SREチームから一部メンバーが独立して、検索のマイクロサービスを管理するSREチームが誕生するので自分も参加しないかと当時の上長に言われました。
  
当時自分が持っていた検索に関する知識は殆どありませんでした。唯一あるとすれば大学の研究室の先輩がElasticsearchを使ったログ検索の研究をしていた際に、自分もちょっとだけ関わったため少しだけElasticsearchの知識があるだけでした。

## 面白そうだから入ってみよう
検索に関する知識がなくて不安は少しだけありました。ただ自分が知らない世界に飛び込んでみる感覚も重要だし、「検索ってなんか面白そう！」という安直な考えで当時の上長に「ぜひお願いします」と伝えました。
その時は検索に関する知識もキャッチアップすればなんとかなるだろうと思っていたため、「検索という分野の広大さ」を全く理解していませんでした。

# 検索の世界に入った
7月にZOZOTOWNの検索のインフラを管理する「検索基盤SRE」が誕生し、自分もそのチームに配属されました。
そこで検索のマイクロサービスに関する案件をこなしながら、検索についてキャッチアップをしていきました。
そこで以下のような事に気づきました

- 検索分野の広さと難しさ
    - Elasticsearchを全然理解していなかった
- Kubernetesや周りのエコシステムも全然理解していなかった

## 検索分野の広さと難しさ
検索のインフラを管理するようになり、検索の開発チームの方々とコミュニケーションを取っていく中で「え、これどういう仕組？ぜんぜんわからん...」となりました。ZOZOTOWNの検索はもちろんのこと、以下の弊社のテックブログのように機械学習モデルやそのパイプライン、Query Understandingといった分野があることを知りました。

https://techblog.zozo.com/entry/search-relevance-improvement

https://techblog.zozo.com/entry/zozotown-search-personalize

またZOZOTOWN以外の検索技術についても、最近ではLLMを用いた検索やベクトル検索といったものまであり、検索と言っても色々な技術があることに気付かされました。機械学習モデルやLLMを用いた検索技術に関連するブログを読んでもほとんど理解できませんでした。。。
またElasticsearchにもベクトル検索や機械学習モデルのための機能が多くあります。そういった機能を試したこともなかったので当たり前ですが、自分はElasticsearchの持つ機能を理解していなかったことに改めてですが気付かされました。

## Kubernetesや周りのエコシステムも全然理解していなかった
検索のインフラを管理するチームに異動して、周辺のマイクロサービスを運用している中で自分はKubernetesやそのエコシステムについて全然理解していなかったことにも気づきました。
### エコシステムについて
自分たちのチームのマイクロサービスでは以下のFlaggerというIstioの加重変更を自動で行っている技術を用いていますが、こんなものがあるのも知りませんでした。

https://techblog.zozo.com/entry/progressive-delivery-by-flagger

またIstioのRetryやCircuit breakerといった機能を導入する中で、自分は全然エコシステムについて理解していなかったと感じました。

### Kubernetesについて
それだけでなくKubernetesの機能についても全然知らないものばかりでした。
例えば以下のInitialDelaysecondsやPodのAZ分散を行う Pod Topology Spread Constraintsに触れる際もそんな機能あったんだと初めて知りました。

https://kubernetes.io/ja/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/

https://zenn.dev/tmrekk/articles/07f30b09c26b50

Kubernetesは多くの機能を有しているのは知っていましたが、自分が持っているKubernetesの知識は基礎でしかなかったということも痛感しました。

# 来年に向けて
上記では自分が知らなかったことを羅列してしまいましたが、来年度からもっと検索やCloud Native技術について理解して行きたいと思っています。そのために以下のような取り組みを行っていきたいと思っています。

## 検索をもっと理解する
まだまだ自分は検索の理解が甘いです。特に基礎についてもしっかりと土台を固めるために以下のような著書を読んで理解してアウトプットを行っていきたいです。最近積読してしまっているので、自戒も込めて本記事で宣言しておきます。

https://www.lambdanote.com/collections/ir-system

また弊社の検索技術についても自分はまだまだ多くを理解できていません。検索を管理するインフラチームなのでより一層理解を深めていきたいと思っています。

## 検索に関する勉強会に行ってみる
最近オフラインの勉強会が増えてきているので、自分はSREやCloud Nativeに関する勉強会やカンファレンスにしか行ったことがないです。なので検索について理解を深めていくためにも、検索に関連する勉強会にも足を運んでみたいなとも思っています。

## Cloud Native技術をもっと理解して実践する
SREとして入社してから自分が興味を持っていたCloud Native技術についても知らないことが多いなと改めて感じた年でした。なのでKubernetesだけでなく周りのエコシステム技術を理解していくためにも自分で実践して理解する必要があるとも思っています。
最近自分は自宅のネットワークを改善したことで自宅ラボを小規模ですが作ることができました。自宅ラボを用いてKubernetesの理解はもちろん新しいエコシステムについて実験していければなと思っています。また何かしらのCloud NativeのOSSのContributerにもなっていきたいなと思っています。
この自宅ラボ環境を用いて検索技術の実験もしていければとも考えています。

https://www.slideshare.net/ssusere2c8e0/12lanpptx

# 終わりに
今回は23卒として新卒入社したSREが検索に飛び込んで色々気付かされた話を書きました。こうやって書き出してみると本当に知らないことばかりだなと実感していますが、それはむしろ伸びしろであるとも思っています。また検索の分野は広いからこそ面白いなとも感じています。ただ来年に向けてやることが多すぎないか？？とも感じていますが、まぁだめだったらそのときにまた考えればよいかとも思っています。
来年はもっと検索について理解し、ZOZOTOWNの検索とインフラを改善していければと思います。