cdc 프로젝트

프로젝트전공부·2024년 8월 9일

CDC

목록 보기
1/1

1) 개요


장고(관리자 페이지)에 있는것을 몽고디비에 cdc 로 이관을하여 부하를 분산 하고 싶습니다.

2) 이유

1) 몽고디비로 이관을 하는이유

포스트 그리스 또한 성능이 좋고 json 디비등이 있지만 몽고디비의 샤딩을 사용할수 있다는 장점 떄문에 해당 기술을 선택 하였습니다.

2) CDC 를 사용하여 자동화된 저장을 사용하고싶은 이유

어노테이션등 관심사를 분리하는것보다 CDC 서버가 따로있는게 코드가독성이 좋을것 같았습니다.

3) 공부내용 주제

개요

9개 프로젝트로 경험하는 대용량 트래픽 & 데이터 처리 초격차 패키지 Online.
의 프로젝트8을 정리합니다.
해당 프로젝트는
MySQL rebbit mq -> kafka postgres
로 마이그레이션 하는 방법을 설명중입니다.

위그림은 공부하면서 한번더 정리합니다.

다른점

1)레거시 프로젝트를 현재프로젝트로 바꾸는 과정이지만 저는 단순히 푸쉬를 원합니다.
2)실시간 변경을 하는 프로젝트 이지만 저는 변경이아닌 ETL의 실시간으로 가지며 KAFKA 보다 최신로직을 반영하고싶습니다.


4) 공부내용

시간이없으므로 머메이드로 빠르게 그렸습니다.

1) 분석

1)메인로직 마이그레이션 방법

해당 프로젝트는 구로직과 현재로직이 같이있으며,
구로직을 최신디비에 마이그레이션 하며,
동의한 사용자만이 최신프로그램을 사용 할 수 있는 서버입니다.
이때 "1)메인로직 마이그레이션 방법" 에서는 실시간으로 업데이트 하는 방법을 정의하는것이지, 과거 데이터를 끌고 오는것이 아닙니다.
현재 가입한 정보를 바탕으로 새로이 서버에 푸쉬합니다.

핵심적인 내용은 다음과 같습니다.

위처럼 MQ에서 들어온파일을 마이그레이션 서버를 사용하여 기존디비는 지우고 포스트 그리스에 푸쉬합니다.

레거시 마이그레이션 드라이브가 있고 이것은 위처럼
기존디비의 DELECTENTITY를 호출해서 지우고
MIGTATE ENTITY 로 업로드합니다.

또한 레기시 모델에서 동의한 사람만 신규 프로젝트로 넘어가듯이 만들어야합니다.

레거시 서버에서 호출을 보내고나서 동의한 사람이라면 새로운 서버로 호출을보내고
비동의한 사람이라면 레거시로직을 실행시킵니다.
이떄 마이그레이션 서버로 최종적이게 푸쉬합니다.
모든서버를 다음과 같이 나눈이유는 새로운서버와 레거시 서버의 부하가 다르기 떄문입니다.
마이그레이션 서버에서 최종적이게 관리하는점에서 제가원하는 CDC 와 비슷하다는 생각을 하였습니다.

2)트렌지션

추가적이게 해당 로직에서 새로운 로직으로 전환을 한다면 위처럼 실시간으로 마이그레이션 되는서버 뿐만 아니라 기존에 디비에서 배치시스템이 카프카를 통해서 들고오기시작합니다.

위의 동그라미 친부분에서 기존디비쌓여 있는것을 마이그레이션합니다. 트렌지션이 요구가됩니다.


해당 서비스는 MSA 처럼 보상트렌지션등등을 지원하지 않습니다.
처음부터 다시 인증을 하려고하면 많은트래픽양을 견디지 못하여 중간중간 진행상황을 세이브를 합니다.

위와 같은방법으로 어디서부터 재처리를해야하는지 요청을 보냅니다.

profile
프로젝트전에 해당 부분을 깊게 공부한것을 올려두는 벨로그

0개의 댓글