목록개인 프로젝트/Data Pipeline 프로젝트 (5)
엔지니어 블로그

이전에 생성해둔 api 서버를 호출해서 데이터를 PubSub에 Publish 하는 작업을 할 차례다. 필요 작업은 다음과 같다.1.Airflow Connection 등록-> Airflwo가 PubSub에 접근할 수 있도록 Connection을 등록2.Publish Task 작성-> DAG에 데이터를 Publish 할 수 있도록 task 작성 1.Airflow Connection 등록먼저 connection 등록이다. Airflow 상단 메뉴에 Admin-Connection을 클릭하면 Connection 등록이 가능하다. + 버튼을 눌러 등록해보자 + 버튼을 눌러보면 다음과 같은 화면이 나온다. 여기서 필수로 작성해야 하는 것은 * 처리 되어있다. 추가로 Keyfile 내용을 작성하면 된다. Keyfile..

프로젝트를 하던 중 지금 토이 프로젝트를 하고있지만, 현업에서 진행하는 프로젝트라면 지속적으로 쌓이는 데이터의 양이 엄청날 것 같았다. 그래서 현재 Spark에서 Bigquery로 데이터를 전송하는 부분을 손보게 되었다. 이전 아키텍처와 거의 동일하고, 중간에 Cloud Storage가 들어갔다. 하단의 Base Data Load 부분은 정적 데이터의 적재를 뜻한다. 실시간으로 생성되는 데이터가 아닌, 현업이라면 DB에 이미 존재했어야 할 유저 정보, 지리정보 등의 데이터가 포함된다. 이 데이터를 업로드 하는 부분에서 고민이 생겼다. 현업에서 처리한다면 어떻게 했어야할까??Static한 데이터기 때문에 변화가 자주 없는 탓에 GCP 콘솔에서 직접 업로드 할까 생각했지만, 현업이라는 상황을 가정해봤을 때..

인프라 구성을 마친 후 데이터 Source가 되는 API 서버를 구축하기로 했다. 원래 DB에 저장 후 가져오는 방법을 사용하려고 했으나 그 방법은 자주 접해본 방법이기 때문에 API 서버를 직접 구축하고 데이터를 수집하는 방식으로 결정했다. FastAPI를 사용하고 Postgresql과 연동하여 API를 구축했다. GET 메서드만 사용하는 간단한 서버이기 때문에 크게 어려움은 없었다. 고민한 지점은 한가지가 있었다.준비 된 데이터를 수집하는 주기는 어느정도로 잡아야 하는가?주기를 잡은 후에 어떤 기준으로 데이터를 가져 올 것인가?기존에 구상했던 것은 실제 웹 서버가 있고 사용자 행동 로그가 발생하는 것과 같은 방식이었다. 하지만 기준으로 발생 기준으로 잡을 컬럼이 애매했다. 그래서 ID 값을 따로 만..

아키텍처가 나온 후 인프라 구성에 들어갔다. 이전 글에 적어 둔 것처럼 k3s위에 airflow를 올려서 사용 할 예정이다.k3s의 설치는 아주 간단하다. 내부적으로 설정을 잡아 줄 일이 있다면 복잡해지지만, 단순히 설치만 하고 사용 할 것이라면 설치 스크립트 하나로 설치가 가능하다. Executor vs PodOperatorkubernetes에 airflow를 구성할 때 2가지 방식을 고려해 볼 수 있다. 제목에 있는 것 처럼 KubernetesExecutor와 KubernetesPodOperator를 사용하는 것이다. 두 방식의 차이는 결국 executor와 operator의 차이다. Executor는 task의 실행 방법을 결정한다. 대표적인 설정은 Celery,Local,Kubernetes등이 있..

최근 데이터 엔지니어링에 대해 다시 공부하고있다. 지금까지 공부한 내용들을 바탕으로 하나의 작은 프로젝트를 해보려고 한다. 그리고 프로젝트가 아닌, 프로젝트 진행 과정에서 나의 작업과 활동을 중심으로 글을 써 내려갈 생각이다. 진행기간2025년 2월 10일 ~ 2025년 2월 17일(예상) 프로젝트 목표Data Pipeline 구축본 프로젝트를 진행하는 목표는 지금까지 공부한 데이터 엔지니어링 생애 주기를 구현해보면서 실제 기술들이 어떤 상황에서 왜 사용되는지 직접 확인해보는 것이다. Infra 구축데이터 파이프라인이 구성 될 인프라 부터 구축 하는 것이 목표다. 프로젝트를 진행하며 파이프라인/인프라 구축 목표를 잡았다. 구축을 통해 나의 기술적인 지식들을 향상시키고 점검 할 수 있을 것이며 장애 대응 ..