작성
·
454
4
안녕하세요.
Kafka Connect 를 활용한 단일 데이터베이스를 사용 파트를 듣고 있는데요.
Multiple Order Service가 같은 DB URL을 가지고, JPA를 통해서 데이터 저장을 하면 될 것 같은데, 굳이 Kafka Sink Connector를 통해서 데이터 저장을 하는 이유가 따로 있을까요?
JPA를 쓰면 Persistence Manager가 제공하는 여러 장점을 이용할 수 있을 것 같은데, Kafka sink connector는 그런 장점을 이용할 수 없을 것 같아서요..
실제 현업에서 많이 사용되는 테크닉인지 궁금하고, 만약 사용한다면 장점은 무엇인지 궁금합니다!
답변 3
4
안녕하세요, 이도원입니다.
강의에서 Kafka Sink Connect를 사용한 이유는, 분산 된 서비스에서 데이터 동기화를 위한 방법 중 하나로 MQ를 소개하는 부분과 어떻게 사용하면 되는지에 대한 설명이었습니다. 말씀하신 것처럼 단일 DB에 여러 서비스가 데이터를 저장할 수도 있고, JPA를 활용할수도 있습니다. 어떤 로직으로 처리할 지는 애플리케이션이나 서비스의 성격에 따라 결정될 수 있는 부분이라고 생각됩니다. 다만, JDBC 또는 JPA를 이용하여 DB에 직접 접속하여 데이터를 처리하게 되면, DB와 애플리케이션과 동기 상태로 서비스가 진행되어야 하기 때문에, 트래픽이 심할 경우 또는 DB를 Locking하고 있기 때문에 다른 서비스가 데이터를 사용부분에서도 Delay가 걸리게 될 수 있습니다. 이 부분은 Kafka Sink Connect를 사용해도 Kafka에서 DB를 사용하기 때문에, 비슷한 문제가 생길 수 있다고 생각할수도 있지만, 최소한 애플리케이션단에서는 데이터의 처리를 Kafka로 전달하였기 때문에, 비동기 방식으로 다른 처리를 진행할 수 있게 됩니다. 또한 Kafka 자체는 싱글브로커로 사용하는 경우보다는 클러스터를 구성하여 사용하기 때문에, 데이터 전달에 대한 보증할 수 있게 됩니다.
요약하면, Kafka Sink Connect를 위와 같은 서비스처럼 단순한 경우에는 굳이 사용할 필요가 없지만, 대용량 DB 처리나 여러 서비스로부터의 동기화가 필요할 경우에는 MQ와 같은 서비스가 도입되는것이 좋다고 생각됩니다.
감사합니다.
0
0