안녕하세요 가야태자 @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/Sub 및 Point-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 복제 구성)
- Extract 프로세스 설정 (데이터 추출)
- Data Pump 프로세스 설정 (데이터 전송)
- 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 Kafka | Apache ActiveMQ | Oracle 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도 저렴하기는 한데 ^^
SSD Nodes: Affordable VPS Hosting | VPS for Linux
3년을 결재 해야 하긴 하지만, 저회사 제품이 더 마음에 드는데 안정성이 있을지가 T.T
3년 약정하고 저 가격으로 월 결제로 해주면 안되 겠니 ^^
아니면 년단위 결제라도 ^^
일단 클라우드 서비스를 알아보고 Kafka를 설치 해보아야겠습니다.
감사합니다.
Posted through the ECblog app (https://blog.etain.club)
[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit