주요 개념
카카오클라우드의 Pub/Sub은 대용량 이벤트와 데이터 분석을 위한 비설치형 메시지 큐(Message Queue) 서비스입니다. 토픽과 서브스크립션을 이용해 메시지 데이터를 분류하고 관리할 수 있습니다.
아키텍처
Pub/Sub 아키텍처
메시지
메시지는 서브스크립션에 전달되는 데이터와 속성입니다.
- 기본적으로 메시지는 순서에 관계없이 최소 1회 전달됩니다.
- 메시지 확인 요청 이후에도 드물게 메시지가 중복으로 전송될 수 있습니다.
(중복으로 전송된 메시지는 기존 메시지와 메시지 고유 아이디 값이 동일합니다.)
토픽
토픽은 특정 메시지나 이벤트 유형을 구분하는 요소로, 하나의 토픽에 여러 서브스크립션을 추가할 수 있습니다.
Default-Topic
Default-Topic은 Pub/Sub에서 기본적으로 제공하는 토픽으로, Cloud Trail 등 카카오클라우드에서 발생하는 이벤트 데이터를 제공합니다.
서브스크립션
- kr-central-1
- kr-central-2
kr-central-1 리전은 Object Storage 유형을 지원하지 않습니다.
유형 | 설명 | 확인 처리 |
---|---|---|
Pull | 사용자가 메시지 전송을 요청하는 방식 - 메시지 전송 요청과 확인 응답 | - 메시지 전송 요청 이후 확인 처리(ack) 필요 - 메시지 재전송 ㄴ 응답 대기 시간 안에 메시지 확인 처리를 하지 않는 경우 ㄴ 메시지 확인 기한 수정 요청을 한 경우 (action : skip) |
Push | Pub/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) 이외의 코드를 응답받을 경우, 즉시 메시지 재전송 |
서브스크립션 상태
서브스크립션 상태에 대한 상세 정보입니다.
상태 | 설명 |
---|---|
Active | 활성 상태 |
In Progress | 작업 중 |
Error | 서브스크립션에 이상이 발생해 정상적으로 동작이 불가한 상태 |
Expired | 생성된 서브스크립션의 작업이 없으며 Expiration Policy에 의해 사용 불가인 상태 - 내부 리소스가 삭제되며, 이후 서브스크립션 삭제만 가능 *Expiration Policy: 서브스크립션의 미처리 개수가 10,000개 이상인 상태로 1시간 유지 |
토픽에 게시된 메시지는 서브스크립션을 통해 수신할 수 있습니다. 서브스크립션은 아래 세 가지 타입이 제공됩니다.
유형 | 설명 | 확인 처리 |
---|---|---|
Pull | 사용자가 메시지 전송을 요청하는 방식 - 메시지 전송 요청과 확인 응답 | - 메시지 전송 요청 이후 확인 처리(ack) 필요 - 메시지 재전송 ㄴ 응답 대기 시간 안에 메시지 확인 처리를 하지 않는 경우 ㄴ 메시지 확인 기한 수정 요청을 한 경우 (action : skip) |
Push | Pub/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 Storage | Pub/Sub에서 버킷으로 메시지를 내보내는 방식 - 메시지 업로드를 위해 Object Storage 버킷 생성 필요 | 확인 처리가 필요하지 않음 |
서브스크립션 상태
서브스크립션 상태에 대한 상세 정보입니다.
[사용자 토픽]
상태 | 설명 |
---|---|
Active | 활성 상태 |
Creating | 작업 중(서브스크립션 생성) |
Deleting | 작업 중(서브스크립션 삭제) |
Updating | 작업 중(서브스크립션 업데이트) |
Seeking | 작업 중(서브스크립션 시점 되돌리기) |
Expired | 생성된 서브스크립션의 작업이 없으며 Expiration Policy에 의해 사용 불가인 상태 - 내부 리소스가 삭제되며, 이후 서브스크립션 삭제만 가능 * Expiration Policy : - Pull , Push 유형 : 서브스크립션의 미처리 개수가 10,000개 이상인 상태로 1시간 유지- Object Storage 유형 : Expired 상태로 전환되지 않음 |
InvalidBucket | Object Storage Subscription에 연결된 버킷이 삭제된 경우 - 내보내기 중지 상태로 변경되며, 버킷 정보를 수정하여 재 사용 가능 |
Unauthorized | Object Storage Subscription에 연결된 버킷의 권한이 변경된 경우 - 내보내기 중지 상태로 변경되며, 버킷 권한을 변경하여 재 사용 가능 |
[Default-Topic]
항목 | 설명 |
---|---|
Active | 활성 상태 |
In Progress | 작업 중 |
Error | 서브스크립션에 이상이 발생해 정상적으로 동작이 불가한 상태 - 서브스크립션 삭제만 가능 |
Subscriber
특정 주제(Topic)에 대한 메시지를 수신하고 처리하는 주체(구독자)입니다. Subscriber는 특정 주제를 구독(Subscribe)하여 해당 주제에 새로운 메시지가 발행될 때마다 알림을 받고, 메시지를 처리합니다.
Publisher
데이터나 이벤트를 생성하고, 이를 Pub/Sub 시스템에 발행(Publish)하는 주체(게시자)입니다. Publisher는 특정 주제(Topic)에 대한 메시지를 생성하거나 수집하고, 해당 주제를 구독하는 모든 구독자에게 메시지를 전송합니다.