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

노정호님의 프로필 이미지

작성한 질문수

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

Kafka를 활용한 데이터 동기화 테스트 ②

kafka 데이터 동기화시 멀티db는 어떻게 처리하는지 궁금합니다.

24.06.17 16:22 작성

·

230

0

kafka가 뭔지 잘 몰랐는데 덕분에 잘 수강하고 있습니다.

order-service로 하나의 db에 데이터동기화는 이해했습니다.

제목의 질문인 멀티db의 경우는 어떻게 처리하는지 궁금해서 질문드립니다.

 

order-service1 --- order-db1

order-service2 --- order-db2

 

이렇게 연결된 서비스의 경우

kafka로 db1에 입력된 정보가 db2로

db2는 db1으로 서로 동기화도 가능한가요?

 

서비스가 더 증가할 경우도 가능한가요? (db1 -> db2,3,4...)

 

db를 master/slave 구성은 해봤는데 msa로 동일db 여러개가 동기화 설정 가능한지 궁금해서 문의드립니다.

 

답변 1

0

Dowon Lee님의 프로필 이미지
Dowon Lee
지식공유자

2024. 06. 19. 07:02

안녕하세요, 이도원입니다.

말씀하신 내용청럼 하나의 서비스가 여러 인스턴스로 구성되어 있고 (order-service1, order-service2 ...) 각각 고유의 DB를 사용하는 경우라면, 강의에서도 소개해 드렸던 것처럼, DB 동기화 기능을 사용하는 것도 방법이 될 수 있습니다. DB1에 저장 된 변경을 감지하여 어떠한 처리를 하는 것은 CDC(Change Data Capture)기능을 통해 변경 사항을 DB2에 전달하는 방법이나, DB1에 변경 된 데이터를 Kafka와 같은 MQ에 전달하여 다른 DB2에 동기화 시켜주는 방법 그리고, 데이터의 변경 이력을 관리하고 변경 이력을 토대로 DB의 기록이나 롤백 시 보상 트랜잭션등을 처리하는 방법들이 있습니다. 물론, 데이터베이스 자체의 기능으로 여러 데이터베이스 간의 동기화를 시켜주는 Replication이나 Shadding(테이블 스키마를 가진 데이터를 다수의 데이터베이스)를 이용하여 DB단에서 처리하는 것도 가능할 것 같습니다. MSA에서처럼 분산 트랜잭션이 필요한 경우는 Application단에의 트랜잭션 관리가 더 중요하기 때문에, 다양한 데이터 관리 패턴을 통해 서비스에 적합한 데이터 처리를 해야 할 것 같습니다.

감사합니다.