일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- javascript
- esbuild
- redirect-gateway
- Intellij
- Kubernetes
- replication lag
- 2024 톨스토이문학상 수상
- model context protocol
- Infra
- golang
- 티스토리챌린지
- sqs fifo queue
- 구조체
- 캡슐화
- goland
- elasticsearch
- context7
- AWS
- authorizationpolicy
- AI
- 서비스메쉬
- typescript
- RDS
- 디자인패턴
- 오블완
- GIT
- go
- GoF
- ssh 에이전트
- cosine similarity metric
Archives
- Today
- Total
목록Transaction (1)
Fall in IT.

DB 업데이트와 SQS 메시지 발송을 하나의 트랜잭션 즉, 원자적 단위로 묶을 수 없다.그 이유는관계형 데이터베이스 트랜잭션은 DB 내부에서만 원자성이 보장되고SQS(혹은 대부분의 메시지 큐)는 데이터베이스와의 2PC(분산 트랜잭션, XA 트랜잭션)을 지원하지 않기 때문이다.즉, 둘은 완전히 별도의 시스템이기 때문에 원자적 보장이 없으므로, 하나만 성공하거나 실패할 수 있는 상황이 생길 수 있다.나는 주로 어떤 방식으로 구현했는가? (어떤 선택을 했었더라..?)DB 업데이트 트랜잭션을 실행한다.트랜잭션 커밋에 성공하면 SQS 메시지를 전송한다.트랜잭션 커밋에 실패하면 SQS 메시지를 전송하지 않는다.SQS 메시지를 전송에 실패할 경우 DB에 기록하고 후처리가 가능하도록 한다.내가 선택한 방식에 대한 이유..
프로그래밍언어/Golang
2025. 7. 18. 09:53