본문 바로가기

전체 글168

dbt-core 시멘틱 레이어 설계기 — 지표 사전(metric_store)에서 MCP까지 TL;DR지표 정의를 YAML이 아니라 지표 사전 테이블(metric_store) 에 먼저 등록하고, 시멘틱 레이어는 그 사전에서 자동 생성했다.dbt Cloud 없이 dbt-core + 오픈소스 MetricFlow만으로 지표 233개를 mf query 한 줄로 조회할 수 있게 됐다."얼마나?"는 사전집계 mart 기반 지표층이, "어떤 단지가?"는 원자 fact 기반 드릴다운층이 답하는 2층 구조로 나눴다.골든셋 11케이스로 시멘틱 경로와 독립 SQL의 값을 상시 대조하고, 그 위에 사내 MCP 서버(AX팀 제작)가 얹혔다.같은 MAU인데 왜 팀마다 숫자가 다를까"6월 MAU가 얼마야?"라는 같은 질문에 사업팀 대시보드와 개발팀 쿼리가 다른 숫자를 내놓는 일, 데이터 일 하는 분이라면 한 번쯤 겪어봤을.. 2026. 8. 2.
Airflow 레포에 Claude 하네스 엔지니어링 적용하기 TL;DR범용 코딩 에이전트에게 매번 팀 컨벤션을 설명하는 대신, Airflow 레포 자체에 규칙·도구·워크플로를 심어서 에이전트가 알아서 따르게 만들었다.컨텍스트 2계층 분리, 도메인별 규칙 모듈화, 책임을 나눈 서브에이전트, 훅/MCP 자동화, 벤더링+자체 스킬. 이렇게 다섯 레이어로 짠다.사람이 리뷰에서 매번 잡던 retry·실패 콜백·동시 실행 제한 같은 운영 안정성 장치가, 코드를 짜는 단계에서 자동으로 박힌다.다만 레이어가 늘면 규칙 중복과 유지보수 비용도 같이 는다. 그래서 단일 진실의 출처를 정해두는 게 중요하다.들어가며Claude Code 같은 범용 코딩 에이전트는 똑똑하다. 그런데 우리 팀이 DAG을 어떻게 짜는지는 모른다. 그래서 처음엔 프롬프트마다 "타임존은 KST로", "실패 콜백.. 2026. 6. 9.
GCP Cloud Functions로 MySQL(AWS RDS) → BigQuery 동기화 파이프라인 구축하기 멀티 호스트 MySQL 데이터를 BigQuery로 동기화하는 파이프라인을 Cloud Functions(2세대)로 구축한 과정을 정리한다. Airflow 같은 오케스트레이터 없이 가볍게 운영할 수 있는 구성이며, DB가 GCP가 아닌 AWS RDS에 있는 경우의 네트워크 구성(고정 송신 IP)까지 다룬다. 이 글의 명령어와 코드만 따라 하면 동일한 파이프라인을 띄울 수 있다.환경: GCP 프로젝트 my-project, 리전 asia-northeast3(서울), MySQL은 AWS RDS(ap-northeast-2). 실제 값은 각자 환경에 맞게 치환하면 된다.1. 아키텍처와 선택 이유MySQL (AWS RDS, 호스트 여러 대) │ ▼Cloud Function (Python, gen2) ←─ Cl.. 2026. 6. 7.
[DW 구축] dbt + Airflow로 Gold(=mart) Layer 설계하기 TL;DRBronze는 원본을 적재만, Silver는 표준화만, Gold는 의미를 담는다 — 레이어를 끊는 것만으로도 분석가가 매번 같은 JOIN을 다시 짜는 통증이 사라진다.Gold 레이어는 스타 스키마(d_*/f_*/m_*)로 구성한다.dbt docs 하나의 문서에서 스키마, 리니지, ERD, 서빙 중인 마트 정보를 모두 파악할 수 있도록 한다. 마트 레이어 설계는 분석가만을 위한 작업이 아니라 대시보드·자동 분석 리포트·LLM 분석 챗봇 등의 기반층이 된다. 들어가며분석가 입장에서 가장 어려운 부분은 사실 서비스 테이블에 대한 파악이다. 수백개의 테이블이 어떤 기능과 연결되어있고, 각 컬럼들의 용도와 로직이 무엇인지 등등 이 모든 것을 파악하기 위해서는 백엔드 개발자의 도움도 필요하고, 이에 더해서.. 2026. 4. 28.
Claude Code 슬래시 커맨드로 티스토리 글쓰기 자동화 — 5분 개요 TL;DR/write-post "" --source 한 줄로 목차 → 본문 → 이미지 → 티스토리 임시저장까지 끝낸다단계마다 별도 에이전트가 돌고, 산출물은 posts// 폴더 하나에 모인다--refs로 구글 시트·Jira·URL을 함께 끌어와 코드 외부 자료까지 인용 가능다이어그램은 기본 16:9 가로형으로 자동 패딩되어 본문에 자연스럽게 박힌다무슨 문제를 풀고 싶었나기술 글을 한 편 올리려면 보통 네 단계를 거친다. 어떤 구조로 풀지 정하고, 코드를 다시 들여다보면서 본문을 채우고, 동작을 설명할 그림을 따로 만들고, 마지막으로 티스토리 에디터에 옮겨 임시저장을 누른다. 각 단계가 짧지 않다. 더 큰 문제는 단계가 끊기면 컨텍스트가 사라져서 다음 날 다시 흐름을 잡는 데만 30분이 깨진다는 점이다... 2026. 4. 25.
[DW 구축] dbt로 Staging Layer 설계 자동화하기(with. BigQuery) 목차핵심 메시지: 왜 Staging Layer가 데이터 웨어하우스의 근간인가1. 전체 아키텍처: 3-Layer 메달리온 구조 이해하기 1.1. Bronze → Silver → Gold, 왜 이렇게 나누는가 1.2. BigQuery Project 구조: dev/prod 분리 1.3. BigQuery Project 전체 구조 및 IAM 권한 설정2. 폴더 구조 설계: 소스 시스템 기반 디렉터리 2.1. 왜 소스 시스템별로 나누는가 2.2. 실전 폴더 구조 2.3. base 레이어: 조인이 불가피할 때3. 네이밍 규칙: 일관성이 생산성이다 3.1. 파일 네이밍: 접두사 + 소스 + 엔터티 3.2. 컬럼 네이밍: 데이터 타입별 접두사/접미사 체계4. 표준 Staging.. 2026. 3. 29.
[2026년 1분기 회고] 측정하지 않으면 관리할 수 없다. 측정하지 않으면 관리할 수 없다. 기록한 것만 돌아볼 수 있다. 1분기 한눈에 영역결과저축률1월 미달 / 2월 목표 근접투자 수익률1·2월 연속 목표 초과누적 자산목표의 99.6%업무 세부계획 완료율21/45 (47%)자기개발 달성 시간100.2/208시간 (48%)이사 완료율핵심 단계 전부 완료 ✅ 1. 재정✅ Keep투자 수익이 두 달 연속 목표를 초과했다. 작년 하반기에 마이너스를 반복했던 것과 비교하면 확실히 달라진 흐름이다. 시장 환경 도움도 있었지만, 흔들리지 않고 포지션을 유지한 결과이기도 하다.전세 포함 누적 자산이 목표의 99.6%에 달했다. 분기 시작점 대비 의미 있는 성장이 있었고, 방향은 계획대로 가고 있다.2월 소비 구조가 증명됐다. 불필요한 지출을 줄이면서, 목표 저축률 달성이 .. 2026. 3. 28.
Airflow 입문자용 실무 상세 가이드 목차1. 스케줄러, 웹서버, 익스큐터, 메타데이터베이스, 워커2. DAG (Directed Acyclic Graph) 2.1. Airflow UI 상의 DAG 2.2. 운영 안정성을 위한 DAG 옵션들3. Task 3.1. Airflow UI 상의 Task4. XCom (Cross-Communication) 4.1. XCom 사용 시 주의사항 4.2. XCom 데이터가 저장되는 곳5. Context 5.1. ds, execution_date 사용 시 주의사항 5.2. ti의 역할 및 사용법6. Operator7. TaskFlow API8. Catchup 8.1. Catchup + execution_date 조합 활용9. Backfill10. Variable11. Connection12. 강.. 2026. 2. 1.
[DW 구축] Airflow로 MySQL→BigQuery 마이그레이션 하기 들어가며1. 마이그레이션 전략 수립 1.1 마이그레이션 대상 테이블 선정 1.2 YAML 기반 테이블 설정 관리 및 3가지 마이그레이션 모드 설계2. Airflow DAG 구현 2.1 동적 DAG 생성 패턴 2.2 full_refresh 모드 상세 구현 2.3 incremental 모드 구현 2.4 init 모드 구현3. PythonOperator 함수 설계 3.1 Task1: MySQL 스키마 동기화 함수(sync_schema_from_mysql) 3.2 Task2: 동적 쿼리 생성 함수(build_mysql_query) 3.3 Task4: 데이터 로드 함수(load_to_bigquery)4. 기술적 고려사항 구현 4.1 파티션 및 클러스터링 설정 .. 2026. 1. 17.