Motivation
昨今のMicroserviceブームの文脈で、例えばユーザ情報の更新だけを行うMicroseviceを作ったとする。
そのような場合に無限に処理を受け付けてしまうとネットワークはもちろん、バックエンドのDBも死んでしまう可能性がある。
ネットワーク周りはService meshなどの手法が良さそうなのでそちらに任せるとして、ここではコードレベルで工夫出来る点について書いてみる。
いきなり結論
Goではこのようなケースで使えるものがある。そうgoroutineである。
goroutineは使い方次第で面倒なものが簡単に書ける。今回であれば有名なWorkerパターンを適用するのが良いと思う。
ということでMattnさんのこの記事を読めば万事解決である: