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