트랜잭션 2

트랜잭셔널 아웃박스 패턴에 대해서 설명해주세요.

트랜잭셔널 아웃박스 패턴 🎯왜 필요할까? 🤔온라인 쇼핑몰을 운영한다고 생각해보세요! 고객이 주문을 완료하면:주문 정보를 DB에 저장 💾결제 시스템에 알림 💳재고 시스템에 알림 📦이메일 발송 📧이 모든 작업이 동시에 성공해야 하는데, 만약 주문은 저장됐는데 결제 시스템 알림이 실패하면? 😱 고객은 돈만 빠져나가고 상품은 못 받는 상황이 발생할 수 있어요!기존 방식의 문제점 💥// 위험한 코드 예시async function processOrder(orderData) { await db.orders.create(orderData); // DB 저장 성공 await paymentService.notify(orderData); // 갑자기 네트워크 오류! 💀}이런 상황을 이중 쓰기 문..

데이터베이스 트랜잭션: 안전하고 일관된 데이터 처리

1. 트랜잭션의 개념트랜잭션(Transaction)은 데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 단위입니다. 이는 여러 개의 연산을 하나의 논리적 단위로 묶어 처리하는 것을 의미합니다. 트랜잭션의 주요 목적은 데이터의 일관성을 유지하고 안정적인 데이터베이스 상태를 보장하는 것입니다.1.1 트랜잭션의 특성 (ACID)트랜잭션은 다음 네 가지 특성을 가집니다:원자성(Atomicity): 트랜잭션의 모든 연산이 완전히 수행되거나 전혀 수행되지 않아야 합니다.일관성(Consistency): 트랜잭션 실행 전후의 데이터베이스 상태가 일관되어야 합니다.격리성(Isolation): 동시에 실행되는 트랜잭션들이 서로 영향을 미치지 않아야 합니다.지속성(Durability): 성공적으로 완료된 트랜잭션의 결과..