현재 차세대에서 사용 중인 솔루션 중에서 처음 접하는 솔루션을 간단하게 알아보고자 한다.
CDC (change data capture) 란 데이터베이스 내 데이터에 대한 변경을 식별해 변경된 데이터만 타킷DB에 데이터 전송 및 공유하는 기술을 말한다. 즉, 변경된 데이터만 골라내는 기술을 말한다. 해당 기술을 사용하게 되면 데이터 추출, 전송 시간을 단축할 수 있는 장점이 있다.
전통적인 데이터 마이그레이션 방법
CDC를 사용하게 된 이유를 언급하기 전, 과거에는 어떻게 데이터 마이그레이션을 진행하였는지 알아볼 필요가 있다.
데이터 마이그레이션을 위해 가장 많이 사용하는 방법은 Import(가져오기)·Export(내보내기)이다.
각 DBMS제품이 자체적으로 지원하는 유틸리티를 활용하여 Export를 수행하는 시점을 기준으로 데이터를 추출해 디스크에 파일로 생성하고 해당 파일을 이용하여 타깃 DB에 Import를 수행한다. 기존 DB에서 Export를 수행한 후 생성된 파일을 신규 DB 서버로 수행하는 방식으로 데이터 마이그레이션이 이루어진다.
Import·Export 방식은 DB/스키마/테이블 단위 등 수행 범위를 다양하게 지정할 수 있다. 데이터뿐만 아니라 테이블, 인덱스, 제약사항, 함수, 프로시저 등 DB 오브젝트에 대한 마이그레이션도 가능해 관리자가 별도로 오브젝트 생성문을 추출·수행할 필요가 없다는 장점이 있다.
Import·Export 방식 마이그레이션의 문제점
1. 길어지는 다운타임
Export를 수행한 시점 이후에 기존 DB에서 발생하는 데이터 변동 건은 내보낸 파일에 포함되지 않으므로 신규 DB에 Import가 완료되는 순간까지 기존 DB와 연결된 서비스는 모두 중단해야 한다. 대용량 DB에서는 서비스 다운타임이 길어질 수밖에 없다. 다운타임을 무한정 확보할 수 없기에 대용량 DB에서는 사용이 불가능한 방법이다.
2. 롤백시 역방향 마이그레이션으로 인한 서비스 지연
만약 어쩔 수 없는 상황에 롤백을 해야하는 시점이 온다면, Import·Export 방식으로는 최초 마이그레이션 이후에 반영된 데이터만을 선별해 역방향 마이그레이션을 수행할 수 없다. 그러므로 또 다시 신규 DB에서 기존 DB로 전체 Import·Export 마이그레이션을 수행해야 하며 그만큼 서비스가 지연된다.
CDC를 사용하는 이유
1. 데이터 웨어하우스 필요성의 증가
치열한 경쟁 속 한가운데 있는 오늘날의 비즈니스 환경에서는 다양한 데이터 소스를 활용하여 신속한 데이터 분석 및 인사이트를 도출하는 것이 중요한 문제로 인식되면서 데이터를 정리하고 정제하여 품질을 개선하고 비즈니스 주제에 맞게 신속하게 변환하고 구성하기 위한 데이터 웨어 하우스의 필요성이 증가하게 되었다.
따라서 CDC를 사용하게 되면 실시간 또는 근접 실시간 데이터 통합을 기반으로 하는 데이터 웨어하우스 및 기타 데이터 저장소 구축에 넓게 활용된다.
2. 수동 마이그레이션의 한계
수동으로 데이터 통합을 진행할 때에는 운영DB의 변경이 발생하면 안되기 때문에 데이터 마이그레이션 전 과정이 종료될 때까지 다운타임이 발생하며, 수작업으로 인한 휴먼 에러가 발생할 수 있다. 때문에 CDC를 활용하여 운영 서버의 다운타임 없이 변경된 데이터를 타켓 DB로 복제하여 무중단 데이터 마이그레이션을 할 수 있다.
PS. 뇌피셜
차세대 역시, 클라우드로 변경되는 만큼 클라우드로 마이그레이션하는 단계에서 비즈니스 다운타임의 최소화가 중요하기 때문에 CDC를 도입한 것으로 보인다. CDC 기술을 사용하여 데이터 원본울 최초로 클라우드로 전송하고, 그동안 실시간으로 발생하고 있는 변경 내역을 수초 혹은 수분 안에 반영할 수 있어 무중단 마이그레이션 가능하다.
3. 원천시스템 부하 낮추기
분석을 위한 정보계 시스템은 운영 중인 원천 시스템의 데이터를 동기화 해야한다.
데이터 동기화 방식에서는 특정 시점의 전체 데이터를 동기화 하는 방법( 예. ETL기술) , 변경된 데이터만 동기화시키는 방식이 있다.
특정시점의 경우, 동기화 초기에 초기 적재라는 명칭으로 전체 데이터를 읽고 쓰기 때문에 원천시스템에 가해지는 부하가 크며 작업량이 많고 시간이 오래걸린다.
따라서 부하기를 적게 줄 수 있는 변경된 데이터만 동기화 시키는 방식 즉, CDC 기술을 사용하는 것이 좋다.
한 개의 트랜잭션만으로 전체 테이블의 데이터를 추출하며, 원본 테이블에 직접 접근하지 않기에 시스템 자원 사용률이 적음으로 원천시스템의 부하를 적제 발생시키기 때문이다.
4. 데이터 누락/유실 위험성 막기
일부 시스템들은 삭제 데이터를 위한 칼럼을 별도로 관리하기도 하지만 어떠한 이휴에서든 삭제는 발생한다. 이에 CDC솔루션은 삭제된 데이터는 테이블에 존재하지 않으므로 추출하지 않는다.
또한 운영상의 이유로 어쩔 수 없이 키값을 변경해야하는 경우가 간혹 발생한다. 키값이 변경된 경우 기존 키가 없어진 것을 인식하지 못하고 신규 데이터가 입력된 것으로 인식하게 되는데, CDC 솔루션은 변경전후의 데이터를 모두 가지고 있기 때문에 키값의 변경을 인식하고 이전 데이터를 신규 키값으로 대처한다.
참고
https://www.datanet.co.kr/news/articleView.html?idxno=155922
4차 산업 시대 중요성 커진 ‘실시간 데이터 동기화’ - 데이터넷
[데이터넷] 인공지능(AI), 빅데이터, 클라우드를 이용하기 위해 원천 시스템에서 데이터를 가공·정제할 수 없으며, 운영계에서 사용된 데이터베이스(DB)를 목표 시스템인 정보계(DW 또는 빅데이터
www.datanet.co.kr
'[개발] 프로그래밍 > etc.' 카테고리의 다른 글
EAI (Enterprise Application Integration) (0) | 2023.08.28 |
---|---|
네이비즘 티켓팅 실패이유? (0) | 2023.06.25 |
Kafka (0) | 2023.03.20 |
헥사고날 아키텍처 (Hexagonal Architecture) (0) | 2023.03.05 |
APIM 이란 (0) | 2023.01.29 |
댓글