티스토리 뷰
요약
CDC = Change Data Capture
CQRS 를 구현하기 위한 방법 중 하나로 접근하면 됨
배경)
각자 DB를 가지고 있는 서비스들이 존재하는 MSA의 서비스를 생각해보자
만약 이들로부터 통합된 어떤 View 를 제공해야 한다면 어떻게 해야할까?
목표)
서비스 개발자들은 통합된 View 를 위해서 각 서비스의 코드에 어떤 변화도 할 필요가 없어야 한다.
DB의 변화(테이블 변경이든 레코드 변경이든)를 최대한 자동으로 감지, 전달해야 한다.
방법1)
어떤 BFF 를 두고 그 쪽에서 모든 서비스들로부터 물어와 주거나 Caching 을 극도로 활용하는 방법을 생각해볼 수 있다.
근데 이건 한계가 명확하다.
1. 누군가 이 BFF와 Caching 을 맡아서 처리해야하고,
-> 각 서비스에서 아무리 이벤트를 발생시켜도 이 쪽에서 코드 변경이 없으면 View에는 반영될 수 없다.
2. 모든 서비스에서는 DB의 변화(구조 변경이든 레코드 변경이든)를 BFF 혹은 캐싱 쪽으로 전달해야 한다.
-> ORM 의 윗단에 event 를 전달하는 코드를 만들던가, DB에 Event 처리를 해주던가 해야함
당연히 추가로 노가다가 필요하고 운영하는 과정에서 에러가 터질 것임을 예측할 수 있다.
앞서 제시한 목표를 달성하는 아름다운 방법이 없을까? 다행히도 있다. 그건 바로 CDC다.
이에 대한 보충 설명 및 자세한 설명은 주말에 작성하도록 하겠다.
'연습' 카테고리의 다른 글
어떤 배열을 양쪽으로 확인해 나가기 (1) | 2024.08.29 |
---|---|
N 개에서 M개를 선택하기(N>=M) (0) | 2024.08.27 |
두 개의 우선순위 큐를 써서 중앙값 찾기 (0) | 2024.08.23 |
어떤 시뮬레이터로서의 우선순위 큐 (0) | 2024.08.22 |
파라메트릭 서치 (3) | 2024.08.20 |
- Total
- Today
- Yesterday
- 최대한 간략화하기
- 우선순위큐
- jwt
- Python
- BOJ
- docker-compose update
- 스택
- endl을절대쓰지마
- Javascript
- factory_pattern
- django test
- 그리디
- 이것도모르면바보
- 코딩테스트
- Remote
- cipher suite
- 위상정렬
- 삽질
- requests
- 불필요한 값 무시하기
- SSL
- SQL
- 파이썬
- Event Sourcing
- 힙
- Til
- vscode
- 프로그래머스
- 백준
- django testcase
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |