Spring Modulith / SNS / SQS

이벤트를 보내고, 처리 경계를 지킵니다.

버전이 있는 이벤트가 논리 대상에서 출발해 입력 검증, fencing claim, 로컬 dispatch, SQS acknowledgement에 도달하는 과정을 살펴봅니다.

발행 성공 ≠ 수신 처리 완료

전달 경계를 직접 살펴보세요

SQS와 SNS는 발행 서비스를 선택합니다. DIRECT는 수신 SQS body를 읽는 방식을 뜻합니다.

전달 경로
SQS 발행 → DIRECT 입력

Publisher는 설정된 queue로 envelope와 String attribute를 보냅니다. Consumer는 DIRECT 모드로 body를 읽습니다.

    현재 처리 경계 ·

    단계를 선택하거나 다음 버튼을 누르세요. 재생은 설명만 진행하며 AWS에 접속하지 않습니다.

    하나의 envelope, 명시적인 식별자

    동일한 이벤트 식별자가 발행과 수신 경계를 통과합니다. Transport attribute는 envelope와 일치해야 합니다.

    specVersionWire 형식 = 1
    id안정적인 이벤트 식별자
    type + version명시적인 registry 항목
    payload직렬화 문자열, byte 상한
    headers허용된 업무 header
    bt4k-event-*ID/type/version attribute 일치

    세 가지 관점, 두 개의 publisher

    Publication 성공은 원격 consumer의 처리를 확인하지 않습니다.

    SQS

    Publisher는 설정된 queue로 envelope와 String attribute를 보냅니다. Consumer는 DIRECT 모드로 body를 읽습니다.

    SNS

    설정된 subscription이 Notification으로 감싼 메시지를 SQS에 전달합니다. 허용 topic과 서명을 확인한 뒤 Message를 decode합니다.

    DIRECT

    DIRECT는 수신 body 모드입니다. 세 번째 publisher나 로컬 우회 경로가 아닙니다. SNS 형태의 body는 거부하며 queue 접근 정책은 운영자가 관리합니다.

    운영 책임을 명확히 나눕니다

    Adapter가 처리 순서를 관리하고, 애플리케이션과 운영 정책이 재시도·재시작 이후의 동작을 결정합니다.

    Adapter

    동시 발행 제한, envelope 검사, 입력 검증, fencing claim 조정, 동기 dispatch와 manual acknowledgement 순서를 관리합니다.

    애플리케이션과 운영

    AWS client와 자격 증명, IAM, topic, queue, subscription, 재시도/DLQ 정책, 영속 idempotency 저장소와 업무 결과의 안전성을 관리합니다.

    이 탐색기는 실행 중인 broker가 아니라 제어 흐름의 경계를 설명합니다. 메모리 idempotency는 프로세스 간 공유나 재시작 후 영속성을 제공하지 않습니다. 비동기 handler와 부분 업무 결과에는 애플리케이션 수준의 안전장치가 필요합니다.