プロフィールは こちら 。
このページではざっくりとしたお仕事での実績を掲載しています。随時更新します。
目次
システムのマイグレーション
WordpressなサイトをHugoへマイグレーション
- ここに書いたこととだいたい似たようなことをやった これまでのごみばこいんの思い出とシーズン3 | ごみばこいん
PHPとMySQLで構築されたシステムをGoとSpannerへマイグレーション
- Goで書いた後の総コード量は10万行超
- DBレコードは1億行超
- インフラはオンプレ→GKE
- あたらしいシステムの可視化・監視はDatadog
- デザインドックやADRを通した議論の推進
- スクラムの推進
- マイグレーション以外にもやってくる機能追加の要望も対応
EC2マニュアル運用からECSへマイグレーション
- terraformでリソースimport、追加設定
- Blue/Greenで安全にデプロイ、LambdaフックによるB/G切り替え管理
- ALBにヘッダー条件を設定して、EC2/Blue/Greenそれぞれの環境に振り分ける仕組みを設定
パフォーマンス改善
- Rails
- エンドポイント全体でのp95レイテンシで10~20%ほど改善
- 呼ばれる量は多くないけれど5s→10msのような極端なものもある
- 詳しくは: Rails小手先パフォーマンス改善テクニック | ごみばこいん
- CI(主にlintとtest、e2eもあり)にかかる時間を15分くらいかかっていたところ、調査から入りCIにかかる時間を10分前後まで改善
- エンドポイント全体でのp95レイテンシで10~20%ほど改善
- Go
- GOMAXPROCSやGOMEMLIMITの調整、automaxprocsの調査・導入
- errgroupなどを使ってgoroutine実行数の制御、OOM回避
- 巨大なファイルを全コピーで取り込んでいた箇所をストリームで処理するように改善
- MySQL
- カーディナリティを意識したインデックス見直し
- 正規化の見直し
- キャッシュ列、キャッシュテーブルの導入
- Spanner
- インデックス見直し、サブクエリのJOIN化、クエリの分割など
- クエリやmutationの実行時間を計測、遅い場合にログへ出力。実際に遅いクエリや処理を見直して改善
Observability改善
- 基盤はDatadog
- Go, Rails, PHP, Pythonなど
- 重要な箇所にSpanやタグの追加
- 外部サービスを呼ぶところのSpanを整理
- 失敗理由やエラーコードをログのフィールドに出す
- プラットフォーム(AWS/GCP)も交えたアプリケーションの状況がわかるダッシュボードの作成
- DBの状況がわかるダッシュボードの作成
- 開発チームへダッシュボードの見方、調べ方などを共有
- システムが異常となる基準を定めてアラートを送信する仕組みの構築
- 気にしたい失敗をカスタムメトリクスにしてアラートに繋げる
CI整備
- テストのなかったプロジェクトにテストを追加。GitHubActionsで実行する仕組みの整備
- カナリアリリースの導入
- GitHubActionsの共通ワークフローを整備して、他のサービスからも使える状態にした
- Dependabot導入、設定改善、セキュリティアラート消化
- リリースフローの自動化
クラウドコストの削減
- オートスケーラーのしきい値調整、負荷テストによる実績値ベースでの調整
- なるべく大きく少ないインスタンス数で処理できるように
- Spannerオートスケーラーの導入
- AWS EFSのプラン見直し、代替ソリューションの検討
Google CloudDLPを使った自動マスキング
- ユーザと管理者のやり取りが発生するシステム
- やり取りがクローズされたあと、参考にしたり振り返ったりするために管理者側が色々見たいが個人情報関連は隠したい
- Google CloudDLPで自動検出 + 正規表現や辞書を組み合わせてマスキングを行うようにした
- TerraformでCloudDLP関連のリソース定義
- システム→GCS←CloudDLP Job→GCS←システム のような形での非同期で繋がるマスキング処理
- テキストだけでなく画像も対象
- 検出ルールはInspectTemplate/DeidentifyTemplateとしてTerraform管理
- 住所や数値系の誤検出が多かったので、hotwordによる除外ルールを設定
Spannerの全文検索インデックスを使った検索機能
- フリーテキストでの検索要件のために生成カラムと全文検索インデックスを組み合わせた
- 各インデックス化の機能やパフォーマンスの違いを比べて最適なものを採用
AIエージェント前提の開発フローの整備
- Claude Code向けのskillやCLAUDE.md、開発手順のドキュメントを整備してチームで使える状態にした
- 障害調査の手順、監視基盤を叩いて調べる手順など、頻繁にやる調査をskillにする
- 変更したら何を確認すればよいのか、というドキュメントの整備
- AIによるPR自動レビューの整備
- このあたりかな
CloudflareスタックによるWebサイト制作
- Astro, Cloudflare
- 問い合わせフォームはCloudflare Email RoutingとWorkers(service binding)
- 画像はビルド時に最適化
- プレビュー環境向けにCloudflare AccessでOTPログイン設定
クローラとその管理画面の開発
- Webサイトを巡回して、リンク構造や孤立ページを見られるようにするツール
- TypeScript + Bun + SQLite、クロールはChromeヘッドレスブラウザ、画面はNext.js
- ひとまずローカル前提
- SQLでそのまま分析、CSV出力
- 1ファイルの実行ファイルとして配布できるよう、リリースフローの整備