ブログ
技術ノート
バックエンド設計・本番運用・応用AIについての記事 13 本
2つのOutbox、1つのパターン
コマンドにはCloud Tasks、イベントにはPub/Sub——同じTransactional Outbox、同じリレー、同じHTTP配送。本当の分岐点は中間層と、ルーティングを誰が所有するか。
読む実行計画には現れないロック競合
最大1000並列のGoワーカーが、それぞれ自分のユーザーの行だけをMySQLにupsertしているのに、InnoDBはデッドロックを検出し続けた。ギャップロックの仕組み、修正案の比較、そしてあえて選んだ地味な解決策。
読むブロックされなかったプッシュパイプライン
スケジュールバッチジョブとしての通知キャンペーン:対象クエリに押し込まれた資格判定と重複排除、再開チェックポイントを兼ねる送信ログ、プラットフォームクォータへのスロットリング——そして今なら追加する2つのゲート。
読むログをAPIのように設計する
CloudWatch Logs Insightsでビジネスの問いに答える:ログ行の契約、新しい行を足すより既存の行を広げるべき理由、JSONエスケープの罠、そしてリテンションという一方通行のドア。
読むUIがチャットスレッドであるプロダクトを作る
LIFFトークン検証、Flex Messageカルーセル、リッチメニュー、ルーティングとしてのチャットボットフロー——バックエンドの規律としてのチャットプラットフォームエンジニアリング。
読むLINEミニアプリの中でMLレコメンドを届ける
LINEだけで完結する物件探しプラットフォームの裏側——Goバックエンド、LIFFミニアプリ、XGBoost推論サービス、そしてレコメンドを新鮮に保つバッチパイプライン。
読む実際にリハーサルするマルチリージョンDR
東京プライマリ、大阪スタンバイ、Terraformモジュールは1セット:何をレプリケーションし、何をリハーサルするか。テストされていないフェイルオーバー計画が能力ではなく図である理由。
読むLambdaの中のヘキサゴナルアーキテクチャ(コード付き)
50個超のTypeScript Lambda関数がテスト可能で一貫性を保てた理由:10行のハンドラー、ポートとアダプター、そしてAPI・キュー・バッチの3つの入口に仕える1つのユースケース。
読む本番のサーバーレス:エンタープライズAWSプラットフォームからの教訓
50個超のLambda関数、ヘキサゴナルアーキテクチャ、SQS駆動のバッチパイプライン、マルチリージョンDR——エンタープライズ級サーバーレスを支える構造・キュー設計・運用判断。
読むgoroutineが間違った道具になるとき
Goのコンテキストキャンセルに関する本番ポストモーテム:fire-and-forgetのキャッシュ書き込みがリクエストのcontextを継承し、リクエストと一緒に死んだ——診断、差し戻された最初の修正、そして退屈な最終修正。
読むサービスメッシュなしのサービス間認証
Cloud Run上のサイドカープロキシパターン:イングレス認証、中央の内部APIハブ経由のエグレス、パスベースルーティングの内部ロードバランサー——メッシュの重さなしにメッシュの利益を。
読む1つのインターフェース、4つの支払い方法
3DS付きカード、ウォレット、コンビニ払い、口座振替を単一の内部サービスの背後に——決済ゲートウェイの抽象化が、プロバイダーの癖を注文フローから締め出す方法。
読むイベントを失わないイベント駆動マイクロサービス:Transactional Outbox の実践
Cloud Run と Spanner の上で、注文・決済・下流サービスの整合性をどう守ったか——Transactional Outbox パターンとタスクキューのリレーワーカー、そして今ならこう作るという反省。
読む