Site icon 지락문화예술공작단

kakao의 오픈소스 Ep5 – Almighty Data Transmitter

kakao의 오픈소스 Ep5 – Almighty Data Transmitter

“카카오의 오픈소스를 소개합니다” 두번째는 gordon.hahn과 동료들이 개발한 ADT – Almighty Data Trasmitter입니다.

ADT는 샤드 구성이나 사딩 규칙이 바뀔 때 샤드를 재분배하는 용도로 만들기 시작했지만, MySQL에서 데이터를 수집하여 다른 MySQL로 데이터를 전송하는 – CDCETL이 결합된 – 만능 데이터 전송 도구로 변모하고 있습니다.

ADT는 그 자체로도 유용한 소프트웨어 도구지만, MySQL 기반의 CDC/ETL 시스템을 구축하기 위한 좋은 시작점이 될 것 입니다.

ADT는 무엇을 위한 툴인가요?


ADT는 MySQL의 데이터를 수집하여 사용자가 원하는 형태로 가공하거나 다른 DB에 적재할 수 있는 툴입니다. 크게 나누면 두 가지 용도가 있습니다.

각각에 대해 활용 예시는 다음과 같습니다.

이 외에도 여러 용도들이 있을 겁니다. 나머지는 여러분들의 상상력에 맡깁니다. 풀리퀘스트의 문은 활짝 열려있습니다 ^^;

ADT는 어떤 기능들이 있나요?

ADT 자체가 하는 일은 단순합니다.


용도에 따라 Custom Handler를 구현하는 게 허들이라면 허들일 수 있지만, 샤드 재분배용 커스텀 핸들러의 소스 코드를 참조하면 그렇게 어렵지 않….을 겁니다. 아마도…요.
(이 부분에 대해서는 다른 글을 통해서 더 자세히 알아보겠습니다)

현재는 MySQL에서만 데이터를 수집하지만, 인기가 많으면 더욱 다양한 DB가 추가될 수도 있습니다. 역시나! 풀리퀘스트의 문은 활짝 열려있습니다 ^^;

적용 사례


현재까지는 적용된 사례가 딱 하나 있습니다. 모 서비스의 테이블 스키마가 많이 변경되는 작업이었는데, 도저히 ALTER TABLE로 어떻게 할 수 있는 수준이 아니었다고 합니다. 테이블 스키마가 많이 바뀌어서 서비스 무정지 변경은 못했지만, ADT의 초기 버전을 이용해 무사히 마이그레이션 할 수 있었습니다.

ADT를 만들게 된 이유이자 핵심 목표인 샤드 재분배용 커스텀 핸들러는 현재 DB 엔지니어들과 안정성/정합성을 검증하는 단계입니다.

끝으로…

등등… 이 글에서 다루지 못한 많은 내용들이 README에 담겨있습니다. 현재까지 구현된 ADT 프레임웍 본체와 검증이 진행 중인 샤드 재분배용 커스텀 핸들러의 소스 코드는 아래 Github 사이트에서 확인할 수 있습니다:

kakao 기술 블로그위키을 통해서 ADT의 활용 사례를 소개할 예정입니다. ADT가 이름처럼 전지전능한 도구가 될 수 있도록 여러분들의 많은 관심과 참여를 기대합니다.

special thanks to 성동찬 (한국카카오 카카오뱅크)

Source: kakao의 오픈소스 Ep5 – Almighty Data Transmitter

Exit mobile version