レイヤードアーキテクチャのルールを守りつつ、RDBのトランザクションを管理する方法は悩みの種になるポイントだと思います。 本記事では「 口座の送金処理 *」を題材に、 Golang + GORM を使った4つのトランザクション管理パターンをまとめてみます *送金元口座から残高を引き出し、送金先口座に入金する処理の一貫性を保証する話です。失敗が発生した場合は操作をロールバックする必要があります 前提 本記事では、レイヤードアーキテクチャの構成を以下のように定義します。特に、Application, Domain, Infrastructure層についての実装を紹介していきます Presentation層 : UIやAPIレイヤー、ユーザー入力や出力を扱う層 Application層 : アプリケーション全体のビジネスロジックを統括する層 Domain層 : エンティティや集約、ドメインサービ

