[인턴] 같은 자물쇠를 두 트리거가 공유할 때 — 비대칭 flock으로 푼 동시성
30분마다 오는 sync webhook과 하루 한 번 도는 systemd timer가 같은 run-dbt.sh를 공유한다. 둘이 겹칠 때 누가 양보하느냐를 비대칭으로 둔 이야기. flock 한 줄을 조건부로 바꾸고, 그 조건을 한쪽에만 흘리지 않으려 며칠을 신경 쓴 기록.
30분마다 오는 sync webhook과 하루 한 번 도는 systemd timer가 같은 run-dbt.sh를 공유한다. 둘이 겹칠 때 누가 양보하느냐를 비대칭으로 둔 이야기. flock 한 줄을 조건부로 바꾸고, 그 조건을 한쪽에만 흘리지 않으려 며칠을 신경 쓴 기록.
Dagster나 Airflow 같은 오케스트레이터 없이, Go 단일 바이너리 하나로 Airbyte sync 성공과 dbt 실행을 이어 붙인 이야기. POST 한 방이 dbt까지 가닿는 경로를 따라가며, 그 과정에서 며칠씩 헤맸던 지점들을 정리했다.
abctl로 띄운 진짜 Airbyte 클러스터의 kubectl 출력을 한 줄씩 뜯어보며, Pod·Deployment·Job·Service·ReplicaSet·StatefulSet이 서로 어떻게 연결되는지, 그리고 ‘Deployment와 Job은 같은 층인가’라는 질문의 답을 Rep...
EL을 Airbyte로 옮기고 나니 dbt 모델이 읽던 raw 스키마가 달라져 있었다. Fivetran(소문자)과 Airbyte(camelCase 인용)의 컬럼 규칙, _fivetran_deleted와 _ab_cdc_deleted_at의 차이를 staging 한 겹에서 흡수하며 r...
공인망에 포트를 열지 않고 SSH 터널로만 접근하는 원칙, 짧은 수명의 API 토큰을 자동 재발급하는 함수, Merge refresh로 미달 스트림만 소탕하기, count 게이트로 진짜 적재를 판정하기까지 — 파일럿에서 실측 검증한 운영 절차를 런북으로 묶었다