본문으로 건너뛰기

주요 개념

카카오클라우드의 Pub/Sub은 대용량 이벤트와 데이터 분석을 위한 비설치형 메시지 큐(Message Queue) 서비스입니다. 토픽과 서브스크립션을 이용해 메시지 데이터를 분류하고 관리할 수 있습니다.

아키텍처

이미지 Pub/Sub 아키텍처

메시지

메시지는 서브스크립션에 전달되는 데이터와 속성입니다.

  • 기본적으로 메시지는 순서에 관계없이 최소 1회 전달됩니다.
  • 메시지 확인 요청 이후에도 드물게 메시지가 중복으로 전송될 수 있습니다.
    (중복으로 전송된 메시지는 기존 메시지와 메시지 고유 아이디 값이 동일합니다.)

토픽

토픽은 특정 메시지나 이벤트 유형을 구분하는 요소로, 하나의 토픽에 여러 서브스크립션을 추가할 수 있습니다.

Default-Topic

Default-Topic은 Pub/Sub에서 기본적으로 제공하는 토픽으로, Cloud Trail 등 카카오클라우드에서 발생하는 이벤트 데이터를 제공합니다.

서브스크립션

토픽에 게시된 메시지는 서브스크립션을 통해 수신할 수 있습니다. 서브스크립션은 아래 세 가지 타입이 제공됩니다.

유형설명확인 처리
Pull사용자가 메시지 전송을 요청하는 방식
- 메시지 전송 요청과 확인 응답
- 메시지 전송 요청 이후 확인 처리(ack) 필요
- 메시지 재전송
  ㄴ 응답 대기 시간 안에 메시지 확인 처리를 하지 않는 경우
  ㄴ 메시지 확인 기한 수정 요청을 한 경우 (action : skip)
PushPub/Sub에서 메시지를 전송하는 방식
- 메시지를 수신할 엔드포인트(HTTP/HTTPS) 서버 필요
- Push 허용을 위해 엔드포인트와 연결된 자원의 시큐리티 그룹 인바운드 규칙 설정 필요
- 카카오클라우드 Public IP를 사용한 각 리전의 엔드포인트 URL로만 Message Push 가능
- HTTP Response Status Code(102, 200, 201, 202, 204)를 응답할 경우 자동으로 확인 처리
- 메시지 재전송
  ㄴ 응답 대기 시간 안에 사용자가 등록한 Endpoint에서 HTTP Response가 없는 경우, 메시지 재전송
  ㄴ HTTP Response Status Code(102, 200, 201, 202, 204) 이외의 코드를 응답받을 경우, 즉시 메시지 재전송
Object StoragePub/Sub에서 버킷으로 메시지를 내보내는 방식
- 메시지 업로드를 위해 Object Storage 버킷 생성 필요
확인 처리가 필요하지 않음

서브스크립션 상태


서브스크립션 상태에 대한 상세 정보입니다.

[사용자 토픽]
상태설명
Active활성 상태
Creating작업 중(서브스크립션 생성)
Deleting작업 중(서브스크립션 삭제)
Updating작업 중(서브스크립션 업데이트)
Seeking작업 중(서브스크립션 시점 되돌리기)
Expired생성된 서브스크립션의 작업이 없으며 Expiration Policy에 의해 사용 불가인 상태
- 내부 리소스가 삭제되며, 이후 서브스크립션 삭제만 가능
* Expiration Policy :
- Pull, Push 유형 : 서브스크립션의 미처리 개수가 10,000개 이상인 상태로 1시간 유지
- Object Storage 유형 : Expired 상태로 전환되지 않음
InvalidBucketObject Storage Subscription에 연결된 버킷이 삭제된 경우
- 내보내기 중지 상태로 변경되며, 버킷 정보를 수정하여 재 사용 가능
UnauthorizedObject Storage Subscription에 연결된 버킷의 권한이 변경된 경우
- 내보내기 중지 상태로 변경되며, 버킷 권한을 변경하여 재 사용 가능
[Default-Topic]
항목설명
Active활성 상태
In Progress작업 중
Error서브스크립션에 이상이 발생해 정상적으로 동작이 불가한 상태
- 서브스크립션 삭제만 가능

Subscriber

특정 주제(Topic)에 대한 메시지를 수신하고 처리하는 주체(구독자)입니다. Subscriber는 특정 주제를 구독(Subscribe)하여 해당 주제에 새로운 메시지가 발행될 때마다 알림을 받고, 메시지를 처리합니다.

Publisher

데이터나 이벤트를 생성하고, 이를 Pub/Sub 시스템에 발행(Publish)하는 주체(게시자)입니다. Publisher는 특정 주제(Topic)에 대한 메시지를 생성하거나 수집하고, 해당 주제를 구독하는 모든 구독자에게 메시지를 전송합니다.