2024 年振り返り

あけましておめでとうございます。2024 年もお世話になりました。

2025 年もよろしくお願いします。

私生活

  • 第二子
    • 5/27(月曜日)に無事男の子が生まれました。Gen Alpha の最後の年です(あと一年遅ければ AI 時代の Gen Beta でした 🤖)。
    • 前回同様、1ヶ月の育児休暇を取得しました。その間に各種手続きを済ませたり、お世話のやり方を思い出したりできました。ありがとうございました。
    • 「第二子は身体が強い」という話を聞いたことがありますが、その通りで第一子に比べて半年くらいまで病気にならず助かりました。その後は一度だけ当日朝に熱が出たことがありましたが、あとはフローレンスさんで乗り切れてます。

和泉公園で寝転がる

  • 体調管理
    • 健康です。風邪や熱で会社を休むことはありませんでした。
    • よく歩くようになりました。片道40分くらいなら徒歩移動を選ぶことも増えてきました。
  • æ—…è¡Œ
    • 2月に北海道トマムへ二泊三日で旅行しました。羽田空港から新千歳空港まで約1時間35分、新千歳空港駅からトマム駅まで特急おおぞらで約1時間20分とアクセスが良かったです。
    • 第二子誕生後はしばらく遠出が難しいので、このタイミングで飛行機に乗っていく旅行をしました。一面雪に覆われていて、非日常の体験を満喫できました。

トマム山は寒かった

  • 子育て
    • 第一子は5歳になりました。小学校訪問、ランドセル購入も済み、次の4月は小学校入学です。それに合わせて9月から水泳教室に通いはじめました。親は隣で泳いで待っていてもいいということだったので、自分も毎週1時間泳いでます 🉐
    • 休日は家にいても大変なので、公園やピクニックに出かけてます。5月に訪れた舎人公園は日暮里・舎人ライナーに乗ることが主目的でしたが、広い池と緑豊かな環境で楽しめました。

飛鳥山公園の象と遊ぶ

  • 洋書
    • 小説を中心に26冊くらい読んでました。今年は細切れの時間が多くなると分かっていたので、そういうときは本を読むと決めてました。
    • ノンフィクションだと少し古いですが Chip War がタイミング的に一番ためになりました。半導体産業の歴史、主要プレイヤー、産業構造、重要さがわかりやすく書かれているので AI 時代のニュースを理解するときに役立ちます。
    • フィクションだと年の前半は Michael Connelly の The Lincoln Lawyer シリーズ(1~7) ã‚„Renée Ballard シリーズ、The Jack McEvoy シリーズなどにハマってました。弁護士物だったり FBI や刑事物なのでそりゃ面白いですね。心に残ってるのは Kristin Hannah の The Women です。Historical Fiction というジャンルでベトナム戦争を舞台に女性ナースの従軍と帰国後が描かれてます。ベトナム戦争が当時のアメリカ世論にどう受け止められたのか様々な立場からその変遷が理解できます。常に死と隣り合わせの中、凄惨な現場で働くナースを一人称視点で描く前半部分は特にリアルでした。その辺りはこの小説でしか味わえない雰囲気があります。

仕事

  • 入社から四年半経ちました
  • 開発チーム全体では、運用が長くなるにつれてソースコードも仕様も複雑化してる中でスピード感を維持できてると思います。また、androidのクラッシュフリーレート改善、ゲームの安定化と効率化、広告システムの開発あたりは特に目を見張る改善や新システムでした 👍
  • 個人的に大きな issue としては、前半に Flink の本番導入が、後半に Vitess migration 導入ができました。Flink は複雑な JOIN クエリのマテリアライズテーブルをリアルタイムに作成するために使ってます。通常必要になる Debezium ã‚„ Kafka の構築なく、Flink CDC Connector を使うことで Flink と Flink Kubernetes Operator だけを運用すれば済みます。
  • Vitess migration は gh-ost ã‚„ pt-online-schema-change の代わりに使ってます。こういうツールは大きいテーブルのときだけ使う運用をすることも多いと思いますが、パラレルでは metadata lock によるサービス影響を避けるためにすべてのマイグレーションに一律で適用してます。年末に大きいテーブルでのスロークエリ改善をしたときに、インデックスを以前よりも早く気軽に追加・削除できて良い変化を実感しました。
  • CEE 2024 Singapore (Agora x Oracle 主催)で登壇するため、11月にシンガポール出張がありました 🇸🇬。Agora チームが毎晩夕食に招待してくれたおかげで三泊四日もあっという間に過ぎました。英語の技術プレゼンははじめてだったのでかなり練習しました。ただ定期的にカンファレンスで発表していたおかげで、どれくらい準備するとどのくらいの完成度になるかのイメージは持てていました。たまに外で話す機会を持っておくと、こういうとき役に立ちますね。全く観光できなかったのと今回は一人だったので、近い将来家族で再訪したいです。

ソフトウェアエンジニアリング

  • SRE NEXT 2024 に「500万人が利用する「友達と遊べるたまり場アプリ パラレル」におけるデータベース基盤の継続的改善」というタイトルで登壇しました。タイムアウト・サーキットブレーカー・コネクションプーリングプロキシについて、MySQL、Semian、Vitessを例に挙げてパラレルでの導入背景と実装を解説しました。
  • Vitess migration ã‚’ ActiveRecord で透過的に使うために vitess-activerecord-migration を書きました。テストは Ruby、Rails、Vitess の各バージョンの組み合わせ(バージョンマトリクス)で 24 ジョブが並行して実行されます。OSS プロジェクトのため、GitHub Actions の 4 vCPU を無料で利用できる点が非常に助かっています。開発体験の工夫としては、docker compose ã‚’ CI でも使い回すようにしたり、docker の中で kind (k8s) を動かしてます。
  • 2024 å¹´ã‚‚ Vitess など会社で使用している OSS に bug fix ã‚„ feature request の PR を送りました。細かい Bug Report を除くと今年はそこまで大きなものはないですが、挙げると以下。
      • unmanaged MySQL 構成(Aurora ã‚„ Cloud SQL などを使う場合)の e2e テストを追加しました。この構成で Vitess の最新バージョンが動作しないバグを修正した際、e2e テストが存在しないことに気づき、再発防止策として対応しました。ここで kind を使った k8s での e2e テストの実装方法を学びました。また、この取り組みを通じて初めて Buildkite を利用しました。
      • vttestserver(テスト用の Vitess)内部で動作する MySQL に直接 TCP/IP 接続できる機能を追加しました。パラレルで Flink を活用する機能の e2e テストを用意する際に、Debezium が vttestserver 内で動いている MySQL のバイナリログを読み込む必要があり、それを実現するために実装しました。Vitess v20 から使えます。
      • paranoia gem に after_restore_commit オプションを追加しました。このオプションを true に設定すると、restore 処理の commit 後にコールバックがトリガーされるようになります。以前はこの機能がなく、after_restore にコールバックを登録する形で対応していました。しかし、after_restore のコールバック内で DB 以外への I/O 処理が発生するケースもあり、commit 後にトリガーされる方が適切な場合もあります。この変更は現在 core ブランチにマージ済みですが、まだリリースはされていません。