2023年1月ふりかえり
2023年1月のふりかえりです。 引き続き B 社(週4日)にて Rails 製の EC サイトの開発業務と Engineering Manager / Scrum Master 業務に携わっています。
B 社
1 月はマネジメント 1 割、プレイヤー 9 割といった割合で対応していました。 1 月は COVID-19 でお休みになるメンバーが多く、開発チーム全体としては進捗が低め推移だったかと思います。
マネジメント系
- エンジニア育成
- 先月から引き続きでデータベース関連で、 理論から学ぶデータベース実践入門 を読了しました。
- 後半から マイクロサービスアーキテクチャ第2版 を読み進めています。
- TechLead 業務
- ひきつづき各エンジニアの成果物のレビューや、設計方針の相談・レビューなどに時間を使っています。
プレイヤー系
- 春のモノ日向けパフォーマンス改善関連
- 既存 UI を storybook ベースのフロントエンドへ移植しはじめています。
- 1つ目の UI パーツを移植し終えて、ビジネスサイドのメンバー、デザイナー交えてデザイン面の調整を行っているところです。
- 検索 UI を通じてデザインシステムを構築しているので既存のレガシーなデザインとどこまで整合させるか、なにを捨てるかなどの議論もできており、技術負債返却観点でも望ましい状況が作れているかなと感じています。
- 検索 UI を通じて開発したコンポーネント群を使いつつ、一部は拡張しつつ開発しているため、従来比で非常に高速に UI パーツを作れている印象です。
- 1つ目の UI パーツを移植し終えて、ビジネスサイドのメンバー、デザイナー交えてデザイン面の調整を行っているところです。
- 上記フロントエンドから叩く API を APIGW に追加しました。こちらも既存実装の移植になりますが、コードと SQL は完全に書き換えて大幅に高速化できています。
- 高速化対応のひとつとして、EC サイトのカテゴリを木構造で表現する既存データがあり、実装として nested set で実装されている関係で1回の木走査が 1SQL になることからまとめて引くことができない問題がありました。これの対策としてテーブルの全レコードを Lambda のメモリ上に展開してアプリケーション側で木走査のアルゴリズムを実装して高速化に成功しました。
- APIGW でサーブしている API 群に APIGW Cache を導入することで大幅に高速化しました。
- キャッシュは APIGW Cache、Redis Cache の構成になっており、Aurora へのクエリができる限り発生しないように調整しています。
- 上記の対応を通して、これまで APIGW に接続する Lambda を Ruby + ActiveRecord で実装していましたが、ActiveRecord が結構遅い上に SQL そのものを記述するために Model に設定を入れたりするのが面倒だなと感じ始めており、Sequel 等のもうすこし薄い gem を使うことを検討し始めたほうがよいだろうかなど思ったりしました。
- さらにいうと Ruby で実装すると本当に遅いため、これまでは既存メンバーのスキルセットを重視して Ruby を使っていましたが、Golang に切り替えてしまおうかというところを考え始めたりしていました。
- 既存 UI を storybook ベースのフロントエンドへ移植しはじめています。
- 検索関連
- 人気キーワードという機能およびUI要素があり、こちらの掲載期間を設定できるように機能拡張しました。
- 掲載開始前・後に自動的に非表示にする仕組みです。
- 人気キーワードという機能およびUI要素があり、こちらの掲載期間を設定できるように機能拡張しました。
- CRM 関連
- 新規の施策として、当日分の EC の注文データを元にした業務改善を入れました。注文内容によってお客様へ自動的にご連絡をいれる仕組みになります。
- バッチ基盤関連
- 他メンバーの対応ですが、いくつかの既存システムのバッチが新しいバッチ基盤ベースの仕組みに移行完了しています。
- Developer Productivity Engineering 関連
- 他メンバーの対応ですが、先月より対応していた AWS Aurora MySQL1 の EOL 対応が完了しました。
- 無事 Aurora MySQL2 になりました。
- Ruby/Rails CVE 対応で調査修正を行いました。
- すでに使用していなかった invoker という gem を外してすこし Gemfile.lock の依存関係がスリムになりました。
- 他メンバーの対応ですが、先月より対応していた AWS Aurora MySQL1 の EOL 対応が完了しました。
おわり