프로그래밍/데이터 엔지니어링

    PubSub 사용할 때 주의할 것

    이번에 차량 블랙박스의 화각이상을 탐지하는 프로젝트에 참여하게 됐다. 실시간은 아니고 배치로 돌아가게 하면 됐으며 자연스럽게 비동기 메시지 큐를 고민하게 됐다. 결국 메시징 큐를 처음 써보는 입장에서 갓구글이 매니징해주는 PubSub을 사용하게 됐다. 공식 문서나 사용 방법은 꽤 직관적이었지만, 처음 사용해본 나의 입장에서 실수를 했던 부분들이 있어 트러블슈팅기한 몇가지를 정리해봤다. 1. Ack Deadline 일반적으로 구독(Subscription)에서 메시지를 가져오는 방식은 비동기 방식과 동기 방식이 있다. 나는 동기 방식으로 메시지를 배치로 가져왔고 이후 인퍼런스 모델이 인퍼런스를 끝낸 후, 빅쿼리 적재 + 모니터링 서버에 요청까지 마친 후 acknowledge(ack라고 줄여 이야기하겠습니다)..

    도커 컨테이너에서 멀티 프로세싱을 하면?

    데이터 엔지니어링을 하다 보면 실제로 컴퓨팅 리소스를 최대한으로 사용할 수 있도록 멀티스레딩 혹은 멀티프로세싱을 사용한다. 더불어 요새는 국 룰이 돼버린 컨테이너를 활용해서 프로세스를 격리하고 배포, 테스팅을 훨씬 쉽게 진행할 수 있게 되었다. 그러다 문득 궁금한 점이 하나 생겼다. 만약 멀티 프로세싱을 구현했을 때 컨테이너에서는 어떻게 동작할까. 사실 도커를 사용한 지는 오래 됐지만, 그냥 단순하게 하나의 격리된 프로세스라고만 생각했었다. 그래서 본 질문에 대해 대답이 제대로 떠오르지 않았다. 결과부터 이야기하면 컨테이너 내에서 Multi Process 동작은 한 컨테이너에서 호스트 머신의 CPU 자원을 최대한 활용하여 동작한다. 컨테이너의 네임스페이스 내부에서 멀티 프로세스들이 동작하며, 주어진 리소..

    Airflow 2 버전으로 Migration 한 후기

    데이터 엔지니어 포지션으로 회사에 들어간 지 3개월이 되었습니다. 취준을 하면서 데이터 파이프라인에 중요한 역할을 하는 Airflow를 처음 알게 되었고, execution_date와 start_date가 계속 헷갈렸었는데... 어느덧 회사에서 성공적으로 Airflow 1.10.14 버전에서 2.1.0 버전으로 migration을 완료하였습니다. 본 글에서는 Airflow 2로 migration의 레슨 런을 정리해봤습니다. 잘 정제된 글은 아닙니다만, 해당 주제로 조만간 회사 기술 블로그에서 더 상세하게 다루도록 하겠습니다. Airflow v2 Airflow란? Airflow는 Python으로 개발된 워크플로우 작성 + 스케줄링 관리 플랫폼입니다. 간단한 스케줄링 툴은 많지만, airflow의 매력은 태..