Kafka와 PubNub 연결
Published: 2024-03-05 16:32:18

Kafka는 이벤트 기반 아키텍처(EDA) 개발을 위한 사실상의 이벤트 브로커로 빠르게 자리 잡고 있습니다. EDA는 소프트웨어 개발을 가속화하고, 실시간 기능과 인사이트를 생성하며, 모놀리식 시스템을 분리하는 데 도움이 됩니다.

하지만 Kakfa는 스마트폰, 브라우저, IoT 기기, 노트북과 같은 [엣지 디바이스와](https://www.pubnub.com/solutions/edge-messaging/) 직접 연결하도록 설계되지 않았습니다. 그래서 PubNub이 등장했습니다. PubNub은 카프카가 도달할 수 없는 엣지 디바이스에서 실행되는 실시간 앱을 구축하고 관리할 수 있는 완벽한 플랫폼입니다. 다행히도 고객들은 시스템에서 직접 가져온 데이터(이벤트가 이미 Kafka를 통해 스트리밍되고 있는 경우)로 실시간 앱을 구동하고 PubNub을 사용하여 엣지 디바이스에 연결함으로써 두 가지 장점을 모두 누릴 수 있습니다.

또한, 많은 고객들이 엣지 디바이스에서 Kafka로 이벤트를 다시 스트리밍하며, 이러한 이벤트가 Kafka로 전송되기 전에 "엣지"(즉, PubNub 네트워크 내에서)에서 필터링, 집계 및 기타 사전 처리가 필요합니다.

펍넙 카프카 브리지란 무엇인가요?
------------------

[PubNub 카](https://www.pubnub.com/developers/kafka/) 프카 브리지를 사용하면 새로운 [싱크 커넥터와](https://www.pubnub.com/docs/general/integrations/kafka/pubnub-kafka-sink-connector) 카프카 [액션을](https://www.pubnub.com/docs/serverless/events-and-actions/actions/create-kafka-action) 각각 사용하여 카프카 배포와 이벤트를 PubNub 안팎으로 원활하게 연결할 수 있습니다. 카프카 브리지는 온프레미스, Amazon의 관리형 카프카 서비스(MSK)를 통한 배포, 또는 Confluent 클라우드 배포를 지원합니다.

기성품인 Kafka 싱크 커넥터는 Kafka 배포와 직접 통합되어 웹 브라우저, 모바일 앱, IoT 센서를 비롯한 엣지 **디바이스로** 실시간 이벤트를 배포할 수 있도록 지원합니다.

이벤트 및 작업 서비스 내에서 액세스할 수 있는 완전 관리형 Kafka Action은 "엣지"에서 필요한 필터링, 집계 및 기타 사전 처리 기능을 옵션으로 제공하여 엣지 **장치에서** **Kafka로** 다시 이벤트를 스트리밍하는 것을 용이하게 합니다.

![](https://www.pubnub.com/cdn/3prze68gbwl1/2NylVGyDwejUVytkpbDjve/5b4e989f27a501a2c2063c54850d73eb/Kafka_Bridge.svg?w=700&h=550)

PubNub Kafka Bridge를 구성하는 방법만 알고 싶으시면 이 글의 끝으로 바로 건너뛰거나 전용 [카프카 문서](https://www.pubnub.com/docs/general/integrations/kafka/basics).

이벤트 기반 아키텍처(EDA)에 PubNub + Kafka를 사용하는 이유는 무엇인가요?
-------------------------------------------------

간단히 말해서, Kafka는 데이터 센터 내부의 이벤트 기반 아키텍처를 지원하는 가장 인기 있는 솔루션입니다. PubNub는 Kafka를 대체하는 것이 아니라 데이터센터 외부의 최종 사용자 디바이스 및 기타 데이터센터로 확장합니다.

**하지만 이는 실제로 무엇을 의미할까요?**

모든 성공적인 대기업들은 시스템의 관리와 확장성을 개선하고 고객에게 보다 신속한 경험을 제공하기 위해 이벤트 중심 아키텍처로 전환했습니다. EDA는 이벤트를 사용하여 백엔드 서비스 및/또는 최종 사용자 디바이스 간의 통신을 수행합니다.이벤트는 이커머스 웹사이트를 통한 신규 주문이나 현장 작업자가 받은 상태 업데이트와 같은 시스템 상태의 변화라고 생각하면 됩니다. 이러한 이벤트는 이벤트 버스에 게시된 다음 해당 이벤트를 수신하도록 구독한 모든 사람에게 전달됩니다.

이벤트, 이벤트 버스, 구독자는 일반적인 용어이며, 기능적으로 유사한 개념을 설명하기 위해 다른 용어를 사용할 수 있습니다. 예를 들어 '이벤트 버스'는 소스나 업종에 따라 '메시지 버스', '이벤트 브로커', '퍼브/서브 시스템'으로 다양하게 알려져 있습니다.

**왜 카프카인가?**

[Kafka는](https://kafka.apache.org) 포춘 100대 기업 중 80%가 사용하는 신뢰할 수 있는 오픈 소스 EDA 솔루션입니다.

**그렇다면 왜 PubNub을 Kafka와 함께 사용해야 할까요?**

Kafka는 고객의 데이터센터 내에서 사용 및 배포되는 반면, PubNub는 데이터센터 외부의 웹 브라우저, 모바일 앱, IoT 디바이스 등 [네트워크 엣지까지](https://www.pubnub.com/solutions/edge-messaging/) 이벤트 중심 EDA 개념을 확장합니다. Kafka와 PubNub 모두 확장성을 염두에 두고 설계되었기 때문에 함께 사용할 경우 방화벽 외부의 수백만 개의 최종 사용자 디바이스와 보안 네트워크 내의 백엔드 서버를 연결할 수 있습니다.

또한 PubNub과 같은 단일 서비스를 사용하여 엣지 디바이스와 통신하면 이벤트를 주고받아야 하는 모든 서비스/기기에 대해 공급업체를 확인할 필요 없이 PubNub을 통해 단 한 번의 공급업체 확인만 수행하면 되므로 인증 프로세스를 간소화할 수 있습니다.

PubNub를 "글로벌 이벤트 버스" 또는 메시지 버스라고 생각하면 중앙 집중식 데이터 센터에서 광범위한 엣지 디바이스로 Kafka EDA 배포를 확장할 수 있습니다. PubNub는 실시간 이벤트 스트리밍을 위한 [Pub/Sub 메시징](https://www.pubnub.com/docs/general/messages/publish), [향상된 보안](https://www.pubnub.com/docs/general/security/access-control), 과거 메시지를 검색하는 [지속성](https://www.pubnub.com/docs/general/storage), [즉각적인 이벤트 처리](https://www.pubnub.com/docs/serverless/functions/overview) 등 모든 이벤트 버스 기능을 이미 지원하고 있습니다.

-   **네트워크 엣지에서 보고 싶은 Kafka 이벤트를 생성하고** 계신가요? PubNub로 이를 달성할 수 있습니다.
    
-   **네트워크 엣지에서 데이터를 수집하고** 있나요? 예를 들어 모바일 또는 웹 애플리케이션과 상호 작용하는 사용자? PubNub를 사용하여 이러한 이벤트를 Kafka 인스턴스로 전송할 수 있습니다.
    

PubNub + Kafka: EDA 사용 사례:
--------------------------

PubNub와 Kafka를 조합하여 달성할 수 있는 몇 가지 사용 사례를 살펴봅시다:

-   시스템 내에서 이미 생성 중인 모든 Kafka 이벤트를 브라우저에서 실행 중인 JavaScript 앱을 포함한 애플리케이션으로 직접 **실시간으로 스트리밍할** 수 있습니다. Kafka 이벤트가 게시되기 전에 필터링 및 처리하여 중요하고 관련성이 높은 이벤트만 전송되도록 할 수 있습니다.
    
-   사용자 환경 내에서 특수한 사용자 정의 게이트웨이를 실행할 필요 없이 안전한 방식으로**네트워크 엣지까지 Kafka 이벤트를 확장할** 수 있습니다.
    
-   **이기종 시스템을 손쉽게 연결하세요:** PubNub는 50개 이상의 SDK를 보유하고 있으며, 기본부터 [보안](https://www.pubnub.com/docs/general/setup/data-security) 을 염두에 두고 구축되었기 때문에 상호 운용성은 걱정할 필요가 없습니다.
    
-   대규모 채팅방, 디바이스 위치, 센서 판독값 등**실시간 이벤트를** 서로 직접**스트리밍하는 앱을 구축하는** 동시에 모든 이벤트가 분석, 보관 등을 위해 Kafka 브로커로 동시에 스트리밍되도록 보장합니다.
    
-   복잡한 VPC 환경을 설정하지 않고도**여러 데이터 센터** 또는 하이브리드 데이터 센터 배포를 연결할 수 있습니다.
    
-   이벤트 스트림을 손쉽게 필터링, 구성, 비활성화할 수 있는 제로 트러스트 보안 모델을 통해 PubNub 기반의 안전한 스트리밍 API를 노출하여**비즈니스 파트너에게 데이터 스트림을 신디케이트하세요**.
    

PubNub 카프카 브리지 구성하기
-------------------

[카프카 브리지는](https://www.pubnub.com/docs/general/integrations/kafka/basics) 모든 카프카/펍넙 통합을 위한 PubNub의 포괄적인 용어이며 두 개의 개별 솔루션으로 구성됩니다.

1.  "PubNub 카프카 싱크 커넥터"는 **카프카 이벤트를** **PubNub로** **전송하는** 데 사용됩니다. 저희는 사용자 정의 카프카 [싱크 커넥터를](https://kafka.apache.org/documentation/#sinkconnectconfigs) 제공하여 PubNub가 카프카 이벤트를 수신할 수 있도록 합니다.
    
2.  [이벤트 및 액션](https://www.pubnub.com/docs/serverless/events-and-actions/overview) 제품의 일부인 "PubNub Kafka 액션"을 사용하면 **PubNub 이벤트를** **Kafka로** **전송할** 수 있습니다.
    

여기에 설명된 모든 구성 단계의 전제 조건으로, [PubNub에 가입](http://admin.pubnub.com) 하고 API 키(publish\_key 및 subscribe\_key)를 얻어야 합니다.

### PubNub Kafka 싱크 커넥터 구성하기

PubNub 카프카 싱크 커넥터를 설치, 구성 및 테스트하는 방법을 더 잘 이해하려면 커넥터 개발자가 작성한 **이전 블로그 게시물인 '**[**PubNub 카프카 싱크 커넥터 설치하기**](https://www.pubnub.com/blog/installing-pubnub-kafka-sink-connector/)**'** 를 **적극 권장합니다**.

[PubNub Kafka 싱크 커넥터 문서 페이지에서도](https://www.pubnub.com/docs/general/integrations/kafka/pubnub-kafka-sink-connector) 추가 설명서를 찾을 수 있습니다.

요약: PubNub Kafka 싱크 커넥터는 Github( [https://github.com/pubnub/pubnub-kafka-sink-connector](https://github.com/pubnub/pubnub-kafka-sink-connector))에서 사용할 수 있습니다.

커넥터가 어떻게 작동하는지 확인하기 위해 테스트만 하려는 경우, 리포지토리 내에 Docker 이미지가 제공되며, 이 이미지는 Kafka 인스턴스를 스핀업하고 종속 요소를 설치하며 타임스탬프 매개변수로 구성된 테스트 이벤트를 방출합니다. POST 호출을 사용하여 커넥터를 활성화하면 Kafka 테스트 이벤트와 일치하는 짧은 지연 시간으로 수신되는 PubNub 이벤트를 볼 수 있습니다.

프로덕션 환경에서 싱크 커넥터를 사용하려면 Maven 명령을 사용하여 소스에서 .jar 파일을 빌드한 다음 적절한 디렉터리로 복사하고( [Kafka Connect 설정에](https://docs.confluent.io/platform/current/connect/userguide.html#installing-kconnect-plugins) 따라 다름) 그에 따라 커넥터를 구성할 수 있습니다.

[전체 커넥터 구성은](https://www.pubnub.com/docs/general/integrations/kafka/pubnub-kafka-sink-connector#configuration-options) 문서 페이지를 참조하세요. 하지만 모든 배포에는 최소한 이 구성이 필요합니다:

-   PubNub로 전송하려는 Kafka 토픽 하나 이상
    
-   PubNub에 게시할 때 Kafka가 사용해야 하는 PubNub 키와 ID
    
-   직렬화 및 오류 처리를 위한 추가 옵션.
    

### PubNub Kafka Action 구성하기

[이벤트 및 작업](https://www.pubnub.com/docs/serverless/events-and-actions/overview) 은 저장, 처리 또는 분석을 위해 타사 시스템으로 실시간 데이터를 전송할 수 있는 PubNub 서비스입니다. 이벤트 및 작업은 특정 PubNub 채널에 메시지가 게시되었거나 특정 ID를 가진 사용자가 메시지를 게시하는 등의 PubNub [이벤트를](https://www.pubnub.com/docs/serverless/events-and-actions/events) 지정할 수 있도록 하는 방식으로 작동합니다.각 이벤트에 대해 이벤트가 트리거될 때마다 어떤 [작업이](https://www.pubnub.com/docs/serverless/events-and-actions/overview#actions) 수행될지 지정할 수 있습니다(예: 웹훅을 트리거하거나, Amazon Kinesis로 데이터를 보내거나, 이 문서의 주제에서 짐작할 수 있듯이 데이터를 Apache Kafka로 보내려는 경우).

설명서를 간단히 참조하면 단계는 다음과 같습니다:

1.  Kafka로 보내려는 데이터를 나타내는[PubNub 이벤트를 정의합니다](https://www.pubnub.com/docs/serverless/events-and-actions/events). 이 단계를 통해 특정 패턴과 일치하는 이벤트를 필터링할 수 있습니다.
    
2.  Kafka 엔드포인트에 대한 세부 정보로 Kafka[작업을 구성합니다](https://www.pubnub.com/docs/serverless/events-and-actions/actions/create-kafka-action). 자체 호스팅, Amazon MSK 클러스터 또는 Confluent Cloud가 될 수 있습니다.
    

### PubNub Kafka Action 구성 예시

[PubNub 관리자 포털에서](https://admin.pubnub.com)'이벤트 및 액션'을 선택하면 이벤트 리스너와 액션을 모두 지정할 수 있습니다.

![Creating a Kafka Action ](https://www.pubnub.com/cdn/3prze68gbwl1/6OVcygGditdFc2EGSVIy1j/9f1f2cd9030f27e9efba8cc5a39705c5/1.png)

'+ 이벤트 리스너 추가'를 선택하고 이벤트 소스를 선택합니다.

![Creating a Kafka Action ](https://www.pubnub.com/cdn/3prze68gbwl1/52VGEHf6TQFvPE3I41pb6g/b533f7787d2688c741cd694cece10cbe/2.png)

채널 이름이 "send-to-kafka"인 채널에서 수신된 모든 메시지를 내보내고 싶다고 가정하면 이벤트 구성은 다음과 같이 됩니다:

![Creating a Kafka Action ](https://www.pubnub.com/cdn/3prze68gbwl1/5Oh144gN0jimJfKaYxLgbB/39e902cc2bfe0e9db80f2d1fa7960bd5/3.png)

다음으로 Apache Kafka 액션을 만듭니다.

![Creating a Kafka Action ](https://www.pubnub.com/cdn/3prze68gbwl1/1IDJ8MfST0SAAcRtUpxXRC/ee64a3d56d4e4b6ff47711f8dde3ec13/4.png)

액션 구성의 각 필드가 의미하는 바는 [Kafka 액션 설명서에](https://www.pubnub.com/docs/serverless/events-and-actions/actions/create-kafka-action) 자세히 나와 있지만, 다음 스크린샷은 구성과 일치합니다:

-   Kafka 주제: topic\_0
    
-   Kafka 주제 키: stamford
    
-   인증: SCRAM-SHA-256
    
-   이벤트를 수신할 Kafka 클러스터의 URL: 574mf0rd-bridge.ldn-west:1905
    
-   실패한 시도는 약 450초를 기준으로 [공식을](https://www.pubnub.com/docs/serverless/events-and-actions/events#retries) 사용하여 계산된 간격으로 두 번 재시도합니다.
    

![Creating a Kafka Action ](https://www.pubnub.com/cdn/3prze68gbwl1/5htBDRFrFIPAIrJmADnK73/fad12a93dca4f892d4dd166a656f9722/5.png)

요약
--

조직에서 이미 Kafka를 사용하고 있는 경우, [PubNub를 사용하여 네트워크 에지에](https://www.pubnub.com/solutions/edge-messaging/) 있는 디바이스의 실시간 기능을 향상시킬 수 있습니다. 즉, Kafka 이벤트 버스에서 발생하는 이벤트를 플랫폼(예: JavaScript를 사용하는 웹 브라우저 또는 iOS 또는 Android를 실행하는 모바일 장치)에 관계없이 클라이언트에 배포할 수 있습니다. 또한 복잡한 설정, 확장성 또는 데이터 보안 문제 없이 PubNub 네트워크를 통해 클라이언트 장치에서 Kafka로 실시간으로 데이터를 수집할 수 있습니다.

자세한 내용은 [Kafka Bridge 개발자](https://www.pubnub.com/developers/kafka/) 전용 [페이지](https://www.pubnub.com/developers/kafka/) 또는 [Kafka 통합 설명서를](https://www.pubnub.com/docs/general/integrations/kafka/basics) 참조하세요. 설정에 대해 궁금한 점이 있으면 [지원팀](https://support.pubnub.com/hc/en-us) 또는 개발자 관계 팀에 이메일( [devrel@pubnub.com](mailto:devrel@pubnub.com))로 문의하세요.

#### 내용

[PubNub 카프카 브리지란 무엇인가요](#h-0)?[이벤트 기반 아키텍처(EDA)에 PubNub + 카프카를 사용해야 하는 이유?](#h-1)[PubNub + 카프카: EDA 사용 사례:](#h-2)[PubNub Kafka Bridge](#h-3)[구성하기PubNub K](#h-4)afka[싱크 커넥터](#h-4) 구성하기PubNub Kafka[액션](#h-5)[구성하기PubNub Kafka 액션 구성](#h-6)[예제](#h-5)[요약](#h-7)

펍넙이 어떤 도움을 줄 수 있을까요?
====================

이 문서는 원래 [PubNub.com에](https://www.pubnub.com/blog/connecting-kafka-and-pubnub/) 게시되었습니다.

저희 플랫폼은 개발자가 웹 앱, 모바일 앱, IoT 디바이스를 위한 실시간 상호작용을 구축, 제공, 관리할 수 있도록 지원합니다.

저희 플랫폼의 기반은 업계에서 가장 크고 확장성이 뛰어난 실시간 에지 메시징 네트워크입니다. 전 세계 15개 이상의 PoP가 월간 8억 명의 활성 사용자를 지원하고 99.999%의 안정성을 제공하므로 중단, 동시 접속자 수 제한 또는 트래픽 폭증으로 인한 지연 문제를 걱정할 필요가 없습니다.

PubNub 체험하기
-----------

[라이브 투어를](https://www.pubnub.com/tour/introduction/) 통해 5분 이내에 모든 PubNub 기반 앱의 필수 개념을 이해하세요.

설정하기
----

PubNub [계정에](https://admin.pubnub.com/signup/) 가입하여 PubNub 키에 무료로 즉시 액세스하세요.

시작하기
----

사용 사례나 [SDK에](https://www.pubnub.com/docs) 관계없이 [PubNub 문서를](https://www.pubnub.com/docs) 통해 바로 시작하고 실행할 수 있습니다.