Files
clean-architecture-backend-…/docs/superpowers/packages/messaging/README.md
T

61 lines
2.9 KiB
Markdown

> **보존 안내** — 이 파일은 저장소 루트 `messaging-superpowers-package/` 에 있던 납품 패키지의 README다.
> 2026-08-15 문서 정리에서 설계서·계획서는 `docs/superpowers/specs/` 와 `docs/superpowers/plans/` 로 통합했고,
> `validate_messaging_docs.py` 와 `MANIFEST.sha256` 은 제거했다.
> 아래 본문은 납품 시점의 기록이므로 제거된 파일을 가리키는 문장은 더 이상 유효하지 않다.
# Messaging Platform Superpowers Package
이 패키지는 `Java/Spring Messaging 플랫폼 심층 리서치`를 구현 기준으로 변환한 설계서와 구현 계획서다.
## 포함 파일
```text
docs/superpowers/specs/2026-08-10-messaging-platform-design.md
docs/superpowers/plans/2026-08-10-messaging-platform-implementation-plan.md
VALIDATION.md
validate_messaging_docs.py
MANIFEST.sha256
```
## 설계 경계
- 자체 `messaging-core`가 공개 계약을 소유한다.
- Kafka 4.2+/4.3.x와 RabbitMQ 4.3.x는 Stable Adapter다.
- Kafka Share Group, Pulsar 4.0 LTS·4.2, NATS JetStream 2.14.x는 Experimental Adapter다.
- 공통 `EXACTLY_ONCE` 또는 전역 순서 옵션을 제공하지 않는다.
- publish 결과는 `CONFIRMED`, `REJECTED`, `AMBIGUOUS`와 broker evidence로 표현한다.
- M1 Typed, M2 Advanced, M3 Native Capability, M4 Admin Plane을 분리한다.
- retry·DLQ·redrive에서 logical `messageId`를 유지한다.
- DLQ publish 확인 전에 source message를 settlement하지 않는다.
- Transactional Outbox, Inbox, Idempotent Consumer, Claim Check를 Reliability 모듈로 분리한다.
## 구현 가정
실제 Backend Skeleton 저장소가 입력에 포함되지 않았기 때문에 계획은 다음 기준을 사용한다.
- Java 21
- Gradle Kotlin DSL
- root package: `io.backend.skeleton.messaging`
- module root: `modules/messaging`
- PostgreSQL 16, Flyway, Spring JDBC/JPA
- JUnit 5, AssertJ, ArchUnit, Testcontainers, Toxiproxy
- Spring Framework 6.2 공통 호환선과 Spring 7.0 호환성 job
실제 저장소 구조가 다르면 파일 경로와 dependency catalog만 매핑한다. 공개 계약, 모듈 의존 방향, 신뢰성 상태 모델과 검증 기준은 그대로 유지한다.
## 문서 검증
패키지 루트에서 다음 명령을 실행한다.
```bash
./validate_messaging_docs.py \
docs/superpowers/specs/2026-08-10-messaging-platform-design.md \
docs/superpowers/plans/2026-08-10-messaging-platform-implementation-plan.md
```
`VALIDATION.md`는 문서 구조, Task 1~44 연속성, TDD 단계, 필수 설계 계약, placeholder, 중복 파일 경로를 확인한 정적 검증 결과다.
## 검증 한계
현재 검증은 설계·계획 문서에 대한 정적 검증이다. 실제 저장소가 제공되지 않아 Gradle compile, broker 통합 테스트, chaos test, 성능 인증은 실행하지 않았다. 구현 계획의 각 Task가 해당 실행 검증을 추가하도록 구성되어 있다.