데보션앱 소개페이지 바로가기
로그인 선택

신고하기

CLOSE
신고사유 (대표 사유 1개)
상세내용 (선택)
0/200
  • 신고한 게시글은 더 이상 보이지 않습니다.
  • 이용약관과 운영정책에 따라 신고사유에 해당하는지 검토 후 조치됩니다.
  • 허위 신고인 경우, 신고자의 서비스 이용이 제한될 수 있으니 유의하시어 신중하게 신고해 주세요.
(이 회원이 작성한 모든 댓글과 커뮤니티 게시물이 보이지 않고, 알림도 오지 않습니다.)

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

      카테고리를 선택해주세요.

      DEVOTEE를 활성화 시키면
      지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.

      버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.

      임시저장함에 저장되었습니다. 저장일시 : 2022.5.17 14:29:08

      임시저장함

      제목을 선택하시면 이어서 작성이 가능하며,
      최대 20건까지 저장합니다.
      컨텐츠 유형, 제목, 저장일시, 삭제로 이뤄진 임시저장 목록
      컨텐츠 유형 제목 저장일 삭제

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

      효율적인 데보션 서비스 이용 및
      고객님의 소중한 개인정보보호를 위해
      본인인증을 진행해주세요. 본인인증 미 진행 시 로그인이 제한됩니다.
      본인인증 실패

      본인인증 로그인에 실패하였습니다.
      회원이 아니시거나 본인인증 등록이
      완료되지 않은 사용자입니다.

      회원정보 연결

      Open Source 기반 Messaging Platform - Apache Pulsar 소개

      나무 23.03.06
      7,669 22 5

      안녕하세요.

      제가 소개해 드리고자 하는 Tech는 Apache Pulsar라는 Open Source 기반의 Messaging and Streaming platform입니다. 


      서두에 미리 말씀을 드리고 싶은 부분은, 저는 Apache Kafka를 사용해 보지 않았으며 Messaging platform에 대해서도 작년 프로젝트에 Apache Pulsar 도입을 하면서 처음으로 접해봤습니다.

      Apache Pulsar를 알아가다 보면 Apache Kafka와 비교하는 자료들이 많이 보이는 것 같아서, 자칫 제가 편향적인 시각으로 소개를 하는 건 아닌지 오해가 있을지 몰라서 말씀을 드려봤습니다.

      Kafka는 그동안 많은 커뮤니티와 사용자들로 관련 프로젝트들이 성숙하고, 도입 시 장점이 많은 것으로 검증된 Solution이라고 생각합니다.

      이미 제 주변에도 Kafka를 활용하는 많은 대규모 프로젝트가 있음이, 그것을 증명하는 것 같습니다.

      이번 소개는 다양성 측면에서 Apache Pulsar라는 Messaging and Streaming platform도 있으며, 프로젝트 환경의 필요에 따라서 검토해 볼 만한 Solution으로 봐주시면 좋을 것 같습니다.



      Apache Pulsar

      스크린샷 2023-03-05 오후 3.23.21.png

      https://pulsar.apache.org

      • Pulsar는 Server 간의 Messaging을 위한, Multi Tenant 고성능 솔루션입니다.

      • Pulsar는 Yahoo!에서 개발 되었으며, 현재 ASF(Apache Software Foundation)에서 관리하고 있습니다.


      Apache Pulsar Release Notes

      • 2023-01-11, Now Apache Pulsar 2.11.0 released.

      • 2018-10-24, This is the first release of Pulsar as an Apache Top Level Project.

      • 2016-08-31. First public release of Pulsar as an Apache incubator.


      Pulsar History

      2015년 Yahoo! 엔지니어들이 일관된 Low latency를 제공하고, 강력한 내구성을 보장할 수 있는 Pub-Sub Messaging System의 필요성을 가지고 Global Applications을 지원할 수 있는 새로운 Pub-Sub Messaging System을 구축하기 시작하여 2016년부터 Yahoo!의 Productions 환경에서 Pulsar라는 이름으로 사용 되고 있습니다.



      Pulsar의 주요 기능

      • Cluster간의 geo-replication 지원으로, 동일 Topic에 대해 여러 Cluster에서 Pub/Sub 가능

      • Publish와 Subscribe 시의 Low latency

      • 백만개 이상의 Topic으로 원활하게 확장 가능

      • Java, Go, Python, C++에 대한 심플한 Client API 제공

      • Topic에 대한 Multiple Subscription 모드 제공(Exclusive, Shared, Failover 등)

      • Apache BookKeeper를 통한 안정된 메시지 전달을 보장

      • Pulsar IO Connector를 이용하여, Pulsar 안팎으로 Data를 쉽게 이동

      • Tiered Storage 구조로, Data를 Hot/Warm Storage에서 Cold/Longterm Storage로 이동 가능

      • Pulsar Manager를 이용하여 웹 UI 기반으로 각 구성요소들을 관리 및 모니터링 가능


      Pulsar Major Components

      • ZooKeeper

      • Pulsar Broker

      • BookKeeper as Bookie

      Pulsar는 Pulsar Borker와 BookKeeper 구성 요소를 사용하여 메시지 제공 및 메시지 저장 기능을 분리합니다.

      Pulsar Broker는 Producer와 Consumer 간의 메시지 제공을 처리하고, 메시지를 저장하는 역할은 BookKeeper에 책임을 넘겨주는 계층화된 Architecure입니다.

      이러한 계층 구조로 인해 Pulsar Broker의 상태는 stateless로, 모든 Broker가 실패한 다른 Broker를 대신 할 수 있음을 의미하며, 이는 새로운 Broker가 Producers와 Consumers 간의 메시지 서비스를 즉시 실행할 수 있습니다.

      또 Brokers 간의 load 균형을 유지하기 위해, Pulsar Broker에는 각각 Load Balancer가 내장 되어 있습니다.

      image.png



      Pulsar Subscription Mode

      Exclusive Mode

      • 단일 Consumer에게만 Subscription이 가능함

        image.png


      Failover Mode

      • 여러 Consumer가 동일한 Subscription에 연결할 수 있지만, 첫번째 연결된 Consumer가 Failure 되었을 때만 다음 연결된 Consumer에게 메시지가 전달됨.

        image.png


      Shared Mode

      • 여러 Consumer가 동일한 Subscription에 연결 가능

      • 메시지 전달은 RR(Round Robin) Mode 순서로 각 메시지는 하나의 Consumer에게만 전달 됨

        image.png


      Pulsar Subscription Mode example

      Pulsar에서 하나의 Topic을 여러 Consumer가 사용하고자 한다면, Subscription을 추가하면 됩니다.

      Pulsar는 Consumer간의 메시지 전달이 Subscription에 의해서 제어됨으로 Partition 재조정으로 인해 메시지 전달에 영향이 발생하지 않습니다.

      ▽ 아래 이미지는 Debezium CDC Source Connector중에 MySQL의 Capture Messages를 가져오는 예제입니다.

      image.png


      ▽ 하나의 Consumer가 Subscribe를 하고, 여러 Producer가 Message를 보내는 경우

      image.png



      Pulsar IO Connectors

      Pulsar IO Connectors를 사용하여, 외부 시스템과 상호작용하는 Connector를 쉽게 생성, 배포 및 관리 할 수 있습니다.

      Pulsar IO Connector Type

      • Source : 외부 시스템의 Data를 Pulsar에 공급

      • Sink : Pulsar에서 외부 시스템에 Data를 공급

        image.png

        예)

        MySQL/Oracle등의 CDC Source Connector를 이용하여, Pulsar Topic에 streaming Data를 공급합니다.

        Sink Connector를 이용하여, Pulsar 내의 Topic Data를 ElasticSearch등의 외부 시스템에 공급합니다.

        image.png


      Apache BookKeeper

      image.png

      https://bookkeeper.apache.org

      • BookKeeper는 여러 서버에 걸쳐 분산 로그를 구축할 수 있도록 설계 되었습니다.

      • 독립적인 Apache 프로젝트로 Pulsar 뿐만 아니라 다양한 Application에서 사용되고 있습니다.

      • BookKeeper는 로그를 Segments 단위로 나눔으로써, BookKeeper 노드간에 균등하게 Segments가 유지됩니다.

      • Bookie(BookKeeper) 노드가 실패하면, Segments 복제 본이 다른 Bookies로 복제 됩니다.


      Debezium

      image.png

      https://debezium.io

      • Debezium은 CDC(Change Data Chapture)를 위한 Open Source 분산 플랫폼입니다.

      • Source DataBase의 Insert/Update/Delete 등의 변경 사항을 Streaming 합니다.

      • Apache Pulsar에서 MySQL, PostgreSQL, Oracle 등 다양한 Debezium CDC Source Connector를 제공합니다.


      맺음 글

      Apache Pulsar는 2016년 Apache incubator에서 시작해 최근 6년여 동안 많은 Contributor들이 참여하며 활발하게 성장을 해가고 있습니다.

      그에 맞게 이미 수많은 회사의 production 환경에서 실시간 Data Streaming에 사용 되고 있습니다.

      제가 Pulsar를 도입하여 사용중인 프로젝트의 규모는 작아서 아직 많은 기능과 이슈 사항들에 대해 경험을 해보지는 못했습니다만, Messaging 시스템 구축이 쉽게 가능하고 안정적인 운영 환경이 장점으로 생각됩니다.

      댓글 0

      DEVOTEE를 활성화 시키면
      지금 작성한 댓글에 AI가 댓글을 달아줍니다.

      나무 님의 최신 블로그

      더보기
      동영상 기고하기