본문 바로가기

Data Engineering/Youtube Comment Analysis

[데이터 시스템 구축기] 2. Data Warehouse 구축

Data Warehouse 구축 시 고려 사항

  • 고성능
    • 데이터 쓰기와 읽기가 빠르면 좋겠다.
      • 데이터 분석에는 특정 기간에 수집된 데이터를 읽어서 사용하고
      • 서빙에는 사용자가 입력한 날짜의 데이터를 읽어서 사용한다.
  •  신뢰성
    • 데이터 유실이 없으면 좋겠다.
  • 유지보수성
    • 발전성
      • 데이터 용량 추가가 쉬웠으면 좋겠다.
  • 기술스택 비교
    • 사실 influxDB, Spanner 뿐만아니라 수백개의 DB가 있다. (DB순위) (DB종류) 
    • 어떤 DB를 쓸 것인지 판단하는 방법 
      • 내가 저장하고자 하는 데이터의 특징은 ~ 하고,
      • ~한 특징을 가진 데이터를 효율적으로 처리할 수 있는  데이터 모델은 ...이 있으며
      • ...을 데이터 모델로 가지는 DB에는 @@@들이 있고
      • @@@들의 장단점을 모두 비교해 보았을 때
      • XXX가 가장 적합하여 XXX를 선택하였다.
    • 어떤 DB를 쓸 것인가?
      • 이 질문에 대답하기 위해서는 아직 공부가 부족하다.
      • 어떤 데이터 모델이 있고 각각 어떤 특징을 가진 데이터에 적합한지 판단할 수 있어야 하고
      • DB간 장단점을 비교하기 위해 각 DB들이 어떤 기능을 제공하는지 어떤 데이터 모델과 어떤 원리들로 구현되었는지 알아야 한다.
      • 그럼에도 influxDB를 선택한 근거는 간단하다.
        • 데이터의 스키마가 정해져있고, 한 번 입력된 데이터에 수정은 없고, 데이터간 복잡한 관계가 없으며, 잘 변하지 않을 것이다. -> sql이든 nosql이든 상관없다.
        • 시간별로 데이터를 수집,분석,서빙한다. -> 시계열 데이터베이스가 적합할 것이다.
        • 시계열 데이터베이스 중에서 influxDB를 가장 많이 사용한다. (다른 시계열 DB와 장단점비교 스킵)

Data Warehouse 구축 방법

1. influxDB 직접 설치: GCP vm instance를 여러 개 생성하고 그 위에 influxDB를 직접 설치하여 Data Warehouse로 사용한다.

 

[그림 1] influxDB 직접 설치

 

2. Google Cloud Spanner 사용 : Google Cloud Spanner(혹은 다른 제품)를 Data Warehouse로 사용한다.

 

[그림 2] GoogleCloudSpanner 사용

 

3. influxDB on k8s : k8s cluster에 influxDB을 띄워서 Data Warehouse로 사용한다.

 

[그림 3] influxDB on k8s

 

구축 방법 별 장단점 비교

1. influxDB 직접 설치

  • 장점
    • 온프레미스 환경과 설치 과정이 유사하다.
  • 단점
    • 유지보수가 어렵다.
    • GCP vm Instance 사용에 대한 고정 비용이 발생한다.

2. Google Cloud Spanner 사용

  • 장점
    • 설치/유지보수할 필요가 없다.
  • 단점
    • 사용량에 따라 비용이 증가한다.

3. influxDB on k8s

  • 장점
    • 온프레미스 환경과 설치 과정이 유사하다.
    • 유지보수의 일부를 k8s가 도와준다.
    • k8s 내부에 있는 다른 Pod간 데이터를 주고 받는 경우 필요한 네트워크 비용이 적다.
    • 다른 Pod들과 함께 모니터링 할 수 있다.
  • 단점
    • k8s 상에 항상 influxDB가 띄워져 있기 때문에 고정 비용이 발생한다.

 

Data Warehouse 구축

최종적으로 influxDB on k8s를 통해 Data Warehouse를 구축하기로 결정하였다.

  • 구축 순서
    1. GKE 클러스터를 생성한다.
    2. artifact hub에 있는 influxDB helm chart를 사용하여 GKE 클러스터에 influxDB를 띄운다.