인프런 커뮤니티 질문&답변

CARL님의 프로필 이미지
CARL

작성한 질문수

카프카 완벽 가이드 - 커넥트(Connect) 편

Connector 생성 시 커넥트(Connect)의 내부 프로세스 수행 이해

일반적인 예시들이 궁금해서 질문 남깁니다.

작성

·

40

·

수정됨

1

안녕하세요, 카프카 코어편 보고 커넥트편까지 재밌게? 강의 시청 중입니다. 먼저 좋은 강의 감사합니다.

커넥트를 배우면서 궁금한 점이 생겼는데요, 예를 들어 msa, 카프카로 구성된 환경에서 회원가입이라는 로직을 구현한다고 하면,
http 요청을 받은 서버가 직접 RDB에 접근해서 데이터를 저장을 하는 것과,
요청을 받은 서버가 카프카 브로커로 데이터를 메세지로 보내고, 브로커에서 sink 커넥터가 RDB에 데이터를 저장하는 방식,
위 두 방식 중에 어떤 것이 일반적일까요? 회원가입처럼 단순히 저장하는 정도의 로직에서도 이벤트 기반의 아키텍처에서는 카프카를 활용하는 것이 장점이 클까요?

답변 2

1

권 철민님의 프로필 이미지
권 철민
지식공유자

안녕하십니까,

웹 요청으로 DB에 데이터를 직접 입력하는 것이 당연히 일반적입니다.

근데 Kafka와 일반 DB입력과의 비교는 비교 자체가 결이 다른것 같습니다.

Kafka와 같은 메시징 시스템을 사용하겠다는 의미는 여러 업무 시스템간의 데이터 전달을 메시징 시스템을 기반으로 한다는 것입니다. 이러한 메시징 시스템을 사용하지 않는다면 주문 DB(예를 들어 MySQL)에 들어간 데이터를 재고 DB(예를 들어 PostgreSQL)나 분석 DB(DW성 DB)에 연동해서 입력하기 위해서는 개별 DB에 별도로 접속하고, 해당 테이블에 입력하는 로직을 개별 코드로 작성해 줘야 합니다. 특히나 트랙잭션 단위의 데이터 처리등의(그러니까, 재고 DB에는 성공적으로 데이터가 들어갔는데, 분석 DB에는 데이터가 오류 발생 할 경우에 어떻게 보정할 것인지등) 복잡한 상황도 고려해서 개발이 이뤄져야 합니다.

Kafka를 사용한다는 것은 개별 시스템들을 Loosely Coupled하게 연동하면서, 시스템의 확장성, 유연성, 연동 편의성, 효율적인 데이터 처리, 대용량 데이터 성능 분산등의 효과 등을 얻고자 함입니다.

특정 업무 시스템의 개발자는 Kafka에 요청되는 데이터를 입력하기만 하면 이 데이터가 필요한 여러 시스템들은 Kafka에서 데이터를 가져가기만 하므로 굉장히 유연한 시스템 구성이 가능하게 됩니다.

결론적으로 단일 DB에 데이터만 입력하는 경우라면 Kafka를 사용할 필요가 없습니다. 하지만 여러개의 복잡한 DB, 업무시스템, 트랜젝션 등이 상호간에 다양하게 연동되어서 업무 처리가 되어야 한다면 Kafka는 좋은 솔루션이 될 수 있습니다.

감사합니다.

 

0

안녕하세요, 인프런 AI 인턴입니다. CARL님.

회원가입과 같은 단순 저장 로직에서 Kafka를 사용하는 방법에 대해 궁금해 하신 것 같습니다. Kafka를 사용하는 방식과 직접 RDB에 접근하는 방식 중 어떤 것이 더 일반적인지에 대한 질문이네요.

Kafka를 사용하면 다음과 같은 장점이 있습니다:
1. 확장성: 대량의 트래픽을 처리할 수 있으며, 수평적으로 확장이 용이합니다.
2. 내구성: 메시지를 안전하게 저장해주고, 소비자에게 전달할 내용을 보장합니다.
3. 비동기 처리: 애플리케이션 간의 결합도를 낮추어 시스템의 유연성을 높입니다.
4. 이벤트 소싱: 모든 이벤트를 저장함으로써 시스템 상태의 재현이 가능합니다.

그러나, 일반적으로 회원가입과 같은 단순한 저장 로직에서는 카프카를 사용하지 않는 경우가 많습니다. 단순히 데이터를 바로 저장하는 로직은 오버엔지니어링일 수 있습니다. 이 경우 HTTP 요청을 받은 서버가 직접 RDB에 접근하여 데이터를 저장하면 충분합니다.

하지만 다음 상황에서는 Kafka를 통한 이벤트 기반 아키텍처가 유리할 수 있습니다:
- 회원가입 후 다양한 비즈니스 로직 처리가 필요한 경우 (예: 이메일 알림, 포인트 지급 등 여러 서비스와의 연계 작업)
- 시스템의 확장성과 유연성을 위해 데이터의 흐름을 이벤트로 관리하고자 할 때

추가로 카프카 커넥트를 사용해야 할지 고민되는 상황에서 다른 의견을 참고해 볼 수 있는 유사한 질문들이 있어서 링크를 함께 드립니다.
- “커넥트를 이용한 데이터 마이그레이션 질문드립니다”
- “응용프로그램에서 kafka 에 Producer로 직접 넣은 데이터를 sink connector를 이용해 DB로 받는 방법”
- “안녕하세요 질문이 있어 문의드립니다.”
- “안녕 하세요~~”
- “질문있어요!”

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

CARL님의 프로필 이미지
CARL

작성한 질문수

질문하기