技術的問題へのアプローチを考える

これは Kyash Advent Calendar 2023 の16日目の記事です。

Kyashでバックエンドエンジニアをしている @a1yama です。

Kyashに入社して本日で9ヶ月が経ちました。

思っていたよりも時間が経つのが早く、充実しているのだと実感している次第です。

また、技術的問題へのアプローチを考えるというタイトルですが、入社9ヶ月で感じたことを綴ったものです。

はじめに

Kyashに入社してから様々なプロジェクトに携わってきました。

Kyashで働いているメンバーは個々人の問題解決能力も高く、提案もたくさん出してくれます。

こういうときどうしたら良いだろう、どうしたら良かったのだろうという悩みは話し合いで比較的早く解決できるように思っています。

その中で技術的な問題やリリース時の問題をどのように解決してきたかを簡単に紹介できればと思います。

パフォーマンスに対するアプローチ

Kyashではサービス開始時からのトランザクションデータを大量に保持しています。

そのため機能追加や改修の際にパフォーマンスや負荷問題について気にしないといけない場面があります。

期間も短い中でどこまでパフォーマンスを考えながら開発ができるか話し合い、パフォーマンス計測を行いその結果から何かできないか話し合うことになりました。

パフォーマンス計測を担当したメンバーが事細かにドキュメントにまとめてくれて、ボトルネック部分をシーケンス図に書いたり、テーブルのレコード数を算出してくれたりとかなり分かりやすいドキュメントになっていました(見せれないのが悔しいくらい)

その中からパフォーマンス改善案をチーム内で話し合って、総意を得た後にマネージャーやその処理に詳しいメンバーに展開していきました。

結果的にそのプロジェクトでは今のままでも耐えうるという判断となりましたが、今までボトルネックになっていた部分ではあるから改善案の中から一つの対応を行う運びになりました。

まだパフォーマンス改善の対応は完全には出来ていないですが、対応する際には有益なドキュメントがあるのでやることは明確になっています。

また、他のチームからの意見としてもパフォーマンス、負荷問題についての話はたまに出てくるので、その際にも説明として使える資料になっているので大変助かっています。

プロジェクトの開発が始まる前にパフォーマンスの問題に着目して計測をして改善案を提示できる良いチームだなと感じた瞬間でした。

Cacheに対するアプローチ

KyashのCache問題についてもエンジニアメンバーから度々話が出てくることがあります。

大量のデータを捌くためにCacheを使っているので、Cacheを保持するタイミング、消すタイミングを気にする場面がいくつかあります。

入出金、決済、送金などトランザクションデータが多い中で集計をしないといけないのですが、その中で更に家計簿機能が追加になり、集計期間がユーザごとに変わるようになりました。

その機能を加えていざリリースを行ったのですが、正しく集計ができておらず間違った表示になっていました。

リリースは取り下げて原因を調査した結果、Cacheが原因ということが判明しました。リリース後にCacheを削除しようという判断になり、手動でCacheを削除することで想定通りの表示となり無事にリリースを行うことができました。

リリース後の振り返りの際にCacheの話になり、チーム内でどうしたらよかったのか話し合った結果、CacheのKeyをちゃんとバージョン管理して異なるリリースのデータが混ざらないようにしていればよかったという結論に至りました。

もちろんCacheを削除するという対応も間違いではないと思いますが、Cacheのバージョン管理をしていたらそもそもリリース時の問題も起こらなかったと思います。

もしくは先に表示がおかしくなるので、Cacheを消す手順をリリーススケジュールに加えておくべきだったかと思います。

何か問題が起こった際にすぐに原因を調査して、振り返りができているのでチームとしての成熟度は上がってきているなと実感しています。

 

最後に

Kyashに入社して9ヶ月が経ちましたが、チームメンバー、エンジニアメンバーが素敵な方ばかりだなぁと感じています。

Kyash自体の文化もそうですが、エンジニアだけではなく他の部署の方々も素敵な方が多く楽しく過ごしています。

今まで好きだったサービスに関われていることも嬉しいですが、それ以上に素敵なメンバーに出会えたことを嬉しく思っています。

もし興味がありましたらKyashの求人から応募してください。