IDC 간 데이터 동기화 및 데이터 조작 기능 구현
- 데이터를 여러 IDC(데이터 센터)에서 보관/사용/삭제 등의 관리가 가능해야 함.
- 단, IDC는 한국뿐 아니라 일본 등 글로벌하게 퍼져있음.
- IDC 추가/폐쇄 기능.
- 거의 동시에 동기화해야 함.
시간 관계상 ID 관리 부분만 설명
여러 IDC에서 동시에 아이디를 만들 시 충돌 가능성 있음 -> 기존 auto increment id는 사용 불가.
Global Unique를 만들기 위해 IDC 번호+ sequence table based id를 통해 생성.
- ID 발급 시 기존에 발급 요청마다 1개 발급하는 게 성능에 악영향을 미치는 걸로 생각
- 미리 한번에 많은 ID를 발급해놓고 하나씩 준다면?
- DB와의 통신이 줄어 성능 개선이 기대됨
ID 발급 성능 테스트 결과: batch 발급 50개가 최적이라고 결정함.
-> 이 과정에서 팀원들을 설득하는 것에서 많은 걸 배웠고, 멘토님에게 조언도 많이 받았음.
멀티 IDC와의 동기화
- 데이터 삭제, 복제 등에 공통적으로 필요한 "전파", 어떤 정보를 어떻게 전파할 것인가?
- query 전파 / request 전파 / tamestamp 기반 스케쥴링 -> 전부 Reject
- query 전파: SQL Injection 나면????
- request 전파 : 똑같은 프로세스가 모든 IDC에서 진행되어 성능이 너무 나쁨
- timestamp 기반 스케쥴링 : 주기마다 처리 개수가 제한됨
- DB Record 전파 : 정확성 보장 가능, 받는 입장에서 책임이 가장 적음. -> 최종 채택!