[개발이야기#075] 메시지 기반 처리 서비스 apache kafka vs apache activemq vs oracle connect hub

in #kr2 days ago


안녕하세요 가야태자 @talkit 입니다.

@talkit.bank 서비스와 talkitsteem 프로젝트를 진행하고 있는데 이 프로그램들의 제어를 위해서 메시지 기반 처리 서비스를 생각하고 있습니다.

이때 필요한 엔진들에 대한 고민을 좀 해보고 있습니다.

제가 알고 있는 것들은 물론 다른 서비스들도 많습니다.

Apache Kafka

Apache ActiveMQ

Oracle ConnectHub

위 세가지 시스템 있는데

일단 Apache 시리즈 두개는 무료 입니다. 개발자가 설치하고 바로 설치 할 수 있습니다.

Oracle connectHub는 저는 클라우드에서 ConnectHub라고 봤는데 일부 무료로 사용가능하지만, Oracle 클라드에서 많은 메시지를 처리하려면 아무래도 비용을 내야 하네요 ^^

그래서 ChatGPT에 물어 봤습니다. ^^

아래는 Apache Kafka, Apache ActiveMQ, Oracle GoldenGate (Oracle Connect Hub)의 개념, 장단점, 그리고 간단한 예제 및 비교입니다.


1. Apache Kafka

개념

  • 분산 메시징 시스템으로 대규모 실시간 데이터 스트리밍이벤트 처리에 특화된 플랫폼입니다.
  • Pub/Sub 모델 기반으로 대량의 데이터를 처리하며, 분산 로그 저장 시스템으로도 사용됩니다.

특징

  • 고가용성: 데이터 복제 및 내결함성 제공.
  • 확장성: 대규모 시스템에서도 안정적 동작.
  • 실시간 처리: 빠른 데이터 스트리밍 및 분석.
  • 데이터 저장: 메시지 데이터를 일정 기간 저장할 수 있어 재처리가 가능.

장점

  • 대규모 실시간 처리에 적합
  • 분산 처리로 확장성이 뛰어남
  • 다양한 커넥터와 API 지원 (Kafka Connect)

단점

  • 설정 및 운영 복잡도가 높음
  • 데이터 순서 보장이 복잡할 수 있음
  • 메시지 브로커라기보다는 데이터 스트리밍 플랫폼에 더 적합

간단한 예제 (Python Kafka Producer)

from kafka import KafkaProducer
producer = KafkaProducer(bootstrap_servers='localhost:9092')
producer.send('my_topic', b'Hello, Kafka!')
producer.flush()

2. Apache ActiveMQ

개념

  • 전통적인 메시지 브로커JMS(Java Message Service) 프로토콜을 지원하며, Pub/SubPoint-to-Point 통신을 제공합니다.
  • 주로 엔터프라이즈 애플리케이션 통합(EAI)에 사용됩니다.

특징

  • 다양한 프로토콜 지원 (AMQP, MQTT, STOMP, OpenWire 등)
  • JMS 2.0 표준 준수
  • 내장 Queue 및 Topic 지원

장점

  • 다양한 메시징 프로토콜 지원
  • 엔터프라이즈 환경에 적합
  • 관리 UI 제공

단점

  • 고부하 상황에서 성능이 저하될 수 있음
  • 확장성이 Kafka보다 낮음
  • 메시지 영속화 시 성능 저하 가능

간단한 예제 (Java ActiveMQ Producer)

import javax.jms.*;

public class ActiveMQExample {
    public static void main(String[] args) throws Exception {
        ConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616");
        Connection connection = factory.createConnection();
        connection.start();

        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
        Destination destination = session.createQueue("test-queue");

        MessageProducer producer = session.createProducer(destination);
        TextMessage message = session.createTextMessage("Hello, ActiveMQ!");
        producer.send(message);

        connection.close();
    }
}

3. Oracle GoldenGate (Oracle Connect Hub)

개념

  • Oracle GoldenGate데이터 통합 및 복제 플랫폼으로, Oracle Connect Hub이기종 시스템 간 데이터 복제실시간 데이터 통합을 지원합니다.
  • CDC (Change Data Capture) 기술을 사용해 실시간으로 데이터 변경 사항을 동기화합니다.

특징

  • 이기종 데이터베이스 복제 지원 (Oracle, MySQL, PostgreSQL, SQL Server 등)
  • 고성능 실시간 데이터 복제
  • 데이터 필터링 및 변환 기능 제공

장점

  • 데이터 정확성 및 신뢰성 보장
  • 이기종 시스템과의 호환성 뛰어남
  • 고성능 실시간 데이터 복제

단점

  • 비용이 높음 (상용 솔루션)
  • 설정 및 관리 복잡
  • 메시징 시스템으로 사용하기 부적합

간단한 예제 (GoldenGate 복제 구성)

  1. Extract 프로세스 설정 (데이터 추출)
  2. Data Pump 프로세스 설정 (데이터 전송)
  3. Replicat 프로세스 설정 (데이터 적용)

Oracle GoldenGate 명령어 예시

GGSCI> ADD EXTRACT ext1, TRANLOG, BEGIN NOW
GGSCI> ADD EXTTRAIL ./dirdat/lt, EXTRACT ext1
GGSCI> ADD REPLICAT rep1, EXTTRAIL ./dirdat/lt

비교표

특징Apache KafkaApache ActiveMQOracle Connect Hub
용도실시간 데이터 스트리밍엔터프라이즈 메시징데이터 복제 및 통합
확장성매우 뛰어남중간 수준제한적 (고가용성 가능)
프로토콜 지원Kafka 자체 프로토콜AMQP, MQTT, STOMP 등데이터베이스 프로토콜
데이터 영속성강력한 지원제한적 지원CDC 기반 영속성
실시간 데이터 처리매우 적합적합고성능 데이터 복제 (CDC)
운영 복잡성높음낮음높음 (복잡한 설정)
비용오픈소스 (무료)오픈소스 (무료)상용 (비싸다)

정리

  • Apache Kafka: 대규모 실시간 데이터 스트리밍과 이벤트 처리에 적합. 고성능, 고확장성이 필요할 때 사용.
  • Apache ActiveMQ: 엔터프라이즈 애플리케이션 통합메시징에 적합. 다양한 프로토콜 지원.
  • Oracle GoldenGate: 이기종 데이터베이스 간 실시간 데이터 복제데이터 통합에 적합. 상용 솔루션으로 데이터의 정확성과 신뢰성이 중요할 때 사용.

개인 의견

딱 내가 원하는 정도의 내용을 줬구요.

ActiveMQ도 생각했었는데 Kafka를 사용하는 것으로 결론을 내었습니다.

그래서, 클라우드에 Apache Kafka를 설치해야하는데 서버 새대가 필요한데 ^^

A Few Recent VPS Deals from CloudCone — Steemit

딱 어제 @justyy 가 Steemit에 올려놓은 클라우드 비교 서비스가 생각났습니다.

CloudCone도 저렴하기는 한데 ^^

image.png

SSD Nodes: Affordable VPS Hosting | VPS for Linux

3년을 결재 해야 하긴 하지만, 저회사 제품이 더 마음에 드는데 안정성이 있을지가 T.T

3년 약정하고 저 가격으로 월 결제로 해주면 안되 겠니 ^^

아니면 년단위 결제라도 ^^

일단 클라우드 서비스를 알아보고 Kafka를 설치 해보아야겠습니다.

감사합니다.

Posted through the ECblog app (https://blog.etain.club)

Sort:  

[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.

Coin Marketplace

STEEM 0.18
TRX 0.25
JST 0.035
BTC 97614.84
ETH 2679.02
USDT 1.00
SBD 3.82