エンジニア5年目を終えました。年末恒例、2024年のエンジニアとしての振り返り記事を書きます。
過去の振り返り記事
- エンジニア1年目 2020年総括 - Yuki Watanabe's Blog
- エンジニア2年目 2021年上期総括 - Yuki Watanabe's Blog
- エンジニア2年目 2021年下期総括 技術編 - Yuki Watanabe's Blog
- エンジニア3年目 2022年振り返り - Yuki Watanabe's Blog
- エンジニア4年目 2023年振り返り - Yuki Watanabe's Blog
本業
サマリ
- Materialized Viewを利用したバッチのパフォーマンス改善
- Spanner Data Boostを活用したバッチの不具合の解消
- 新規機能の設計
- 新規メンバーのオンボーディング、メンター
- 担当プロダクトのドキュメントの整理
- LLMを活用したハッカソンへの参加(優勝!)
振り返り
本業の開発案件としては、バッチの改善に多くの時間を割きました。BigQueryを参照するバッチが様々な問題によりパフォーマンス問題や誤検知問題を抱えており、Materialized ViewやSpanner Data Boostの導入により、これらの問題を解決しました。行ったことの一部を切り出して、人生初のAdvent Calendarの記事を書いたのでよろしければ見てみてください。
他にも、チームのために必要なことは何でもやるというスタンスで、組織運営に関することにも積極的に取り組みました。9~10月ごろに業務委託を含む3名の新メンバーがジョインしたのですが、メンターやオンボーディング用資料作成、ナレッジ共有会の開催などを行い、早期に業務にキャッチアップできるようサポートしました。
新メンバー向けの取り組みとして意外と効果を感じたのは、「自チーム用のオンボーディング用Slack Channelの開設」です。元々自チーム用のSlack Channelはチーム外の人も参加し、数百人が参加していたのですが、新メンバーの視点に立ってみると「初歩的な質問を数百人の前でするのは気が引けて」質問できないケースがあるようだったので、新規Channelの開設に至りました。結果としては開設後4ヶ月たった現在もほぼ毎日投稿がなされるほど活況のChannelとなっており、オンボーディングへの効果を感じています。
これまでのエンジニア経験では個人としての成果を最大化することに全力を尽くしてきましたが、今年は個人としての成果を出しつつも、少し目線を上げて組織としての成果を最大化できるような取り組みも行えたことが良かったかなと思っています。
副業
サマリ
振り返り
昨年から業務委託として携わっている会計SaaSを提供する会社様にて、今年も1年間お世話になりました。主にSRE・バックエンドエンジニア的な関わりをしているのですが、「業務委託にここまで任せてくれるのか」というくらい大胆なアサインをしてくださり、難易度が高いタスクをいくつも担当しました。
年始早々から既存のGoogle CloudのインフラのTerraform化を担当し、既存のリソースをimportしてコード化し、合わせてGitHub ActionsによるCI/CDを整備しました。記事を書いたのでよかったらご確認ください。1つ補足をすると、Terraformのimport blockは超便利、です。 zenn.dev
他にも、Cloud SQLからAlloyDBへの移行や、Row Level Securityの導入など、DBに関する重めのタスクも完遂することが出来ました。業務委託の身ではありますが、会社のTech Blogにも記事を寄稿させてもらっています。
個人的に成長を感じたことは、クエリのパフォーマンス改善です。パフォーマンス改善は職人芸のように感じてしまい敷居の高さを感じていたのですが、いずれ挑戦したいと考えていました。そこで、業務時間外に勉強がてらAlloyDBのQuery Insight(クエリの実行時間や負荷がわかるやつ)を見ていたのですが、実行時間が5分ほどかかっているクエリを見つけ、なんとか改善できないかと考えました。EXPLAINによりクエリの実行計画を確認し、ボトルネックになっている点が確認できたため、現状の課題感とラフなソリューションをMTGで共有し、業務として任せていただくことになりました。結論としては、WHERE句に絞り込みを追加することで処理行数を大幅に削減し、実行時間は5分から30秒と1/10まで高速化することが出来ました。
こちらの副業先には、私の家庭の事情で12月末で稼働終了を申し入れたのですが、本当はまだまだやりたい気持ちもありました。非常にお世話になりました!
OSS Contribution
副業でTerraformやAlloyDBのドキュメントを読み漁っていたのですが、その過程で感じたドキュメントの改善点をPRにしました。2つ作成し、どちらもマージしてもらえて嬉しかったです。
個人サービス
サマリ
振り返り
個人で開発している上場企業比較サイトのインフラを刷新しました。これまでは、サーバーもDBもHerokuを利用し毎月$12を支払いしていたのですが、収益化していないサービスであるため、毎月そこそこの赤字の状態でした。もちろん勉強代として捉えれば、そこまで高い値段ではないですが、できれば削減したいと考えていました。このようなコスト最適化のための施策については、今までは自身のスキル不足により取り組めていなかったのですが、副業先でGoogle CloudやDBの知見をガッツリ得られたので、現実的な時間で対応できそうだと判断し、対応することに決めました。
Google Cloudでは主に、Cloud Run service, Cloud Run jobs, Cloud Workflow, Cloud Schedulerを利用しています。DBはSupabaseの無料プラン内で利用できています。Herokuからの移行はpg_dumpコマンドととpsqlコマンドを使い、30分程で完了しました。(もっとはやくやっておけばよかった!)
Google CloudとSupabaseへの移行への対応工数は5~10時間ほどでしたが、毎月のコストは$12から$1ほどへ削減でき非常に満足しています。
アーキテクチャ図はこちらです。
まとめ
今年も技術的にチャレンジングな取り組みをいくつもできました。本業と副業でほぼ同じ技術スタックを利用しているためシナジーが非常に大きく、本業と副業の両輪によって倍速で成長している実感があります。 インフラ領域の業務は非常に興味深く、引き続きこの業務領域の広さと深さを追求していきたいと思います。