흩어진 데이터를 어떻게 모을 것인가

https://www.pinterest.com/pin/4644405836298143/

회사를 몇십 년씩 운영하다보면 데이터가 여기저기 흩어진다. 어떤 건 회사 내부 시스템에 있고, 어떤 건 AWS에 있고, 어떤건 GCP, Azure에 있을 수 있다. 처음부터 잘 모았으면 좋았겠지만, 이미 쪼개졌다면 쪼개진 채로 써야 한다. 합치는 건 오래 걸리니까 나중 문제다. 오히려 AWS가 다운될 수 있으니 어느 정도는 분산해놓는 게 좋긴 하다.

그래도 경영진은 전체 데이터를 한 눈에 보고 싶다. 일목요연하게 잘 정리된 걸 보고 싶다. 그러면 데이터를 다 가져와서 합쳐야 한다. 어떻게 합칠 것인가?

일단 각 유니버스 간 전송할 데이터를 최소화해야 한다. AWS에서 전체 데이터를 가져오지 말고, 잘 정리해서 가져와야 한다. 예를 들어 S3에 csv파일이 있다면, 그걸 Redshift를 통해 group by해서 가져올 수 있다.

문제는 join을 해야 할 경우다. AWS 데이터와 GCP 데이터를 어떻게 합칠 것인가? 그것과 회사 내부 시스템 데이터를 어떻게 합쳐서 요약할 것인가? 각각의 요약 데이터를 가져와서, 어플리케이션에서 join해야 한다. Hash join이나 Nested loop merge join 같은 걸 하면 된다.

근데 그러면 느려진다. AWS에서 1초, GCP에서 1초, 내부 DB에서 1초, 합치는데 1초… 이렇게 점점 쌓이면 쌓이면 느려진다. 더 빠르게 할 수 없을까? 캐쉬를 쓰면 된다. 잘 생각해보면, 필요한 데이터가 그렇게 다양하지 않다. 굳이 매번 가져올 필요가 없다.

이런 서비스는 AWS, GCP 같은데서는 제공하지 않는다. 물어보면 그런걸 대신해주는 업체를 연결해준다. AWS Marketplace에서 검색할 수도 있다. 아니면 직접 개발하면 된다.

이번에 이직한 회사에서 맡은 일이 이런 거다. 원래는 우리 회사 제품을 회사 내부에 on-premise로 깔아주거나 cloud service로 쓰게 했다. 그런데 크고 오래된 회사들은 다른 회사 제품이나 cloud service도 같이 쓰니까, 데이터를 합치는 서비스를 우리가 대신 만들어준다. 경영진이 보고 싶은 데이터는 업종별로 비슷하기 때문에 기존 제품을 활용할 수 있다. 회사 내부적으로 직접 개발하는 것보다 빠르고 저렴하고 훌륭하게 만들어준다.

Published
Categorized as xacdo

By xacdo

Kyungwoo Hyun

Leave a comment

Your email address will not be published.