728x90
DB 동기화란
DB 동기화란 2개 이상의 DB간 Data를 동일하게 유지하는 것을 의미합니다.
모놀리식으로 개발을 해왔다면 DB를 1개만 사용해서 Data를 저장했을 것입니다.
MSA 구조의 어플리케이션을 개발한다면 DB per Service라는 말을 들어봤을 것입니다.
말 그대로 마이크로서비스 당 DB를 두는 것입니다. 해당 서비스마다 DB를 두는 것으로
다른 서비스와 독립적으로 서비스를 더 쉽게 수정, 확장 및 배포할 수 있기 때문입니다.
DB를 서비스마다 놓기 전에 고려해야할 사항들이 있습니다.
1. 성능,비용 - DB를 여러개 사용한다는 것은 비용이 많이 소모되기 때문에 DB의 분리가 꼭 필요한지 생각한 뒤 결 정해야합니다
2.Join 쿼리 - 분리된 DB에서 Data를 호출을 할 때에는 통합 DB에서 사용한 JOIN Query를 사용할 수 없기 때문에
JOIN 쿼리문을 변경해야 합니다
3. Transaction 관리 - DB에서 분산 트랜잭션을 관리를 위한 이벤트 처리를 설계해야합니다.
DB 동기화가 필요한 이유
DB 동기화가 필요한 이유는 Data의 일관성을 보장하기 위해서 입니다. Db가 여러개 있지만
만약 같은 속성을 공유하는 Table에서 Data의 수정이 일어난다면 다른 DB에서도 같은 수정이 일어나야 합니다.
이를 해결해주는 것이 DB 동기화입니다
MSA 구조에서의 DB
MSA 구조에서 DB는 Service마다 존재합니다.
그렇다면 다른 DB의 Table이 필요하다면 어떤 방식으로 Data를 가져와야 할까요
단일 DB를 사용한다면 JOIN 쿼리와 연관관계를 통해서 다른 Table의 Data를 조회할 수 있지만
다른 DB에서 Data를 가져와야 한다면 서비스간의 통신으로 가져와야 합니다.
필요한 Data가 있는 DB의 서비스에 요청을 보내 Data를 가져오기 위해 API 통신을 사용하는 것을 선호합니다.
이유는 MSA구조의 장점인 유지보수가 용이하다는 것을 살리기 위해서 입니다.
하나의 서비스가 중단되도 나머지 서비스가 정상적으로 동작해야 하므로 API 통신으로 Data를 가져오는 것으로
서비스간의 결합성을 낮춰서 유지보수를 용이하게 한것입니다.
'DataBase' 카테고리의 다른 글
SQL 서브 쿼리 (2) | 2025.03.02 |
---|---|
SQL 쿼리문 정리 - 기초 (1) | 2025.02.15 |
Order By, Group By,Aggregation Function이란 (1) | 2024.01.04 |
JOIN (1) | 2024.01.04 |
SubQuery (1) | 2024.01.03 |