タイムアウトの設計
内側のレイヤーの方がタイムアウトまでの時間を短くする
→仮に内側が何かエラーだとしても外側はそのtp機開いている保証があるので、そこでどこが原因だったかを明確に知ることができる
グレースフルシャットダウン(graceful shutdown)
デプロイ中にメールが正しく送信できたかどうかを確認できない場合があった?その際に正確にわかるようにGo自体に処理が正常に進んでいるかを確認できるような仕掛けを作った。今まではメールなどに送信結果とか処理の結果を見て、それが正常に動いているかどうかを確認する仕組みだったが。もし処理中に再デプロイが起こると、処理自体がなかったことになってしまうので、正常におわったかどうではないかを判断するためのコードさえもうまく動作しなくなる。なので、処理自体にやってる処理が0になったら進めるコードwg.Wait()を非同期処理の中に入れて、処理が全部終わってから出ないと、処理自体を次に進めないようにした
ジョブキュー
outbox
今の問題点はメール送信の仕組みがメモリ内でのみ行われていて、止まった時にどんなことがあるのかをわかる方法がない。なので、そこら辺の情報をoutboxとして、DBに保存しておく