엔지니어 블로그

데이터 파이프라인 프로젝트 #4 아키텍처 변경 본문

개인 프로젝트/Data Pipeline 프로젝트

데이터 파이프라인 프로젝트 #4 아키텍처 변경

안기용 2025. 3. 6. 18:39

프로젝트를 하던 중 

지금 토이 프로젝트를 하고있지만, 현업에서 진행하는 프로젝트라면 지속적으로 쌓이는 데이터의 양이 엄청날 것 같았다. 그래서 현재 Spark에서 Bigquery로 데이터를 전송하는 부분을 손보게 되었다. 

 

이전 아키텍처와 거의 동일하고, 중간에 Cloud Storage가 들어갔다. 하단의 Base Data Load 부분은 정적 데이터의 적재를 뜻한다. 실시간으로 생성되는 데이터가 아닌, 현업이라면 DB에 이미 존재했어야 할 유저 정보, 지리정보 등의 데이터가 포함된다. 이 데이터를 업로드 하는 부분에서 고민이 생겼다.

 

현업에서 처리한다면 어떻게 했어야할까??

Static한 데이터기 때문에 변화가 자주 없는 탓에 GCP 콘솔에서 직접 업로드 할까 생각했지만, 현업이라는 상황을 가정해봤을 때 적절하지 못한 선택으로 보였다. 모든 작업은 코드 내지는 스크립트로 남겨둬야 작업이 필요하지만 작업자가 부재 상태일 때 누구라도 처리하도록 만들어 둬야 한다고 생각한다. 따라서 다양한 방법을 생각하던 중 Github의 action을 활용하는 쪽으로 가닥을 잡았다. csv에 변화가 생기면 push했을 때 action이 작동해서 csv를 업로드하게 된다.

name: git to gcs
on:
  push:
    branches:
    - main
jobs:
  deploy-to-cloud-storage:
    runs-on: ubuntu-latest
    permissions:
      contents: 'read'
      id-token: 'write'
    steps:
    - name: Checkout
      uses: actions/checkout@v2
    - id: 'auth'
      uses: 'google-github-actions/auth@v2'
      with:
        workload_identity_provider: '${{ secrets.WORKLOAD_IDENTITY_PROVIDER }}'
        service_account: '${{ secrets.SERVICE_ACCOUNT }}'
        project_id: '${{ secrets.PROJECT_ID }}'
    - id: 'upload-file'
      uses: 'google-github-actions/upload-cloud-storage@v2'
      with:
        path: '${{ secrets.CSV_PATH }}'
        destination: '${{ secrets.BUCKET_NAME }}'

action은 위와같이 구성했고 구성 과정은 따로 포스팅 할 계획이다.

 


2025.02.12 - [개인 프로젝트/Data Pipeline 프로젝트] - 데이터 파이프라인 프로젝트 #1 아키텍처 구성

 

데이터 파이프라인 프로젝트 #1 아키텍처 구성

최근 데이터 엔지니어링에 대해 다시 공부하고있다. 지금까지 공부한 내용들을 바탕으로 하나의 작은 프로젝트를 해보려고 한다. 그리고 프로젝트가 아닌, 프로젝트 진행 과정에서 나의 작업과

aky123.tistory.com

2025.02.17 - [개인 프로젝트/Data Pipeline 프로젝트] - 데이터 파이프라인 프로젝트 #2 인프라 구성

 

데이터 파이프라인 프로젝트 #2 인프라 구성

아키텍처가 나온 후 인프라 구성에 들어갔다. 이전 글에 적어 둔 것처럼 k3s위에 airflow를 올려서 사용 할 예정이다.k3s의 설치는 아주 간단하다. 내부적으로 설정을 잡아 줄 일이 있다면 복잡해지

aky123.tistory.com

2025.02.28 - [개인 프로젝트/Data Pipeline 프로젝트] - 데이터 파이프라인 프로젝트 #3 API 서버 구축

 

데이터 파이프라인 프로젝트 #3 API 서버 구축

인프라 구성을 마친 후 데이터 Source가 되는 API 서버를 구축하기로 했다. 원래 DB에 저장 후 가져오는 방법을 사용하려고 했으나 그 방법은 자주 접해본 방법이기 때문에 API 서버를 직접 구축하고

aky123.tistory.com