2026年8月27日 Go Connect #16 での発表資料です。
Go Connect #16
https://gotalk.connpass.com/event/398015/
並列度を上げれば429、下げれば終わらない。
外部APIのレート制限との調整に、何日も溶かしたことがあります。
原因は「並列数とレートを混同していたこと」でした。
golang.org/x/time/rate と errgroup で、この2つを
別々の部品として書けるようになった話をします。
・同時実行数を絞っても1秒間に40件到達してしまう理由
・rate.Limiter と errgroup.SetLimit で関心を分ける
・errgroup から素直にエラーを返すと全体が止まる
・複数プロセスで動かすときは、設定値を並列数で割る
コード: https://github.com/shinchit/go-lambda-ratelimit
元記事: https://zenn.dev/calmpm_takahiro/articles/go-lambda-ratelimit