pile·
DB / 데이터·여기어때 (GC컴퍼니)여기어때 (GC컴퍼니)·

분석가가 직접 만든 마케팅 자동화 시스템 — 오디언스 빌더 제작기

여기어때 데이터 분석팀(UB팀)이 개발 경험 없이 AI 에이전트 바이브 코딩으로 마케팅 자동화 시스템 '오디언스 빌더'를 구축한 과정이다. SQL 없이 UI에서 타겟 조건을 설정하면 BigQuery에서 수천만 행 대상자를 추출해 Kafka·S3를 통해 마케팅 도구로 전달하는 파이프라인을 직접 만들어, 캠페인 준비 시간을 2~3일에서 10분으로 단축했다.

핵심 포인트
  • 기존 병목: 마케터→분석가→개발팀 3단계 순차 요청에 캠페인 하나당 2~3일 소요, 타겟 명단이 금방 낡음.
  • PostgreSQL(메타데이터)과 BigQuery(수천만 행 대상자 명단)로 저장소를 분리해 규모와 성능을 동시에 달성했다.
  • 유저 피처 스토어 카탈로그를 참조해 런타임에 BigQuery SQL을 동적 빌드, 코드 수정 없이 새 피처를 즉시 마케팅 조건으로 활용 가능.
  • 수천만 행 추출은 비동기로 처리하고 2초 주기 폴링으로 완료를 감지해 수동 실행과 스케줄러가 동일한 워크플로우 코드를 재사용한다.
  • Logistic Regression + LightGBM 두 모델로 200개 후보 지표 중 40개 핵심 지표를 선정해 유저 프로파일 화면을 제공한다.
상세 정리
  • 기존 프로세스 문제: 마케터가 조건 정리 → 분석가가 SQL 작성 → CSV 추출 → 개발팀이 DB 적재의 4단계를 매 캠페인마다 반복, 타겟 명단이 추출 시점에 고정돼 금방 낡았다.
  • 아키텍처 결정: 오디언스 메타데이터(이름·필터·갱신 주기)는 PostgreSQL, 실제 대상자 명단(수천만 행)은 BigQuery에 분리해 집합 연산과 대량 적재를 맡겼다.
  • 카탈로그 기반 필터 시스템: 각 필터(회원 등급·최근 90일 구매 빈도 등)가 BigQuery 테이블 컬럼 또는 계산식과 일대일 매핑된다. 카탈로그에 속성만 등록하면 새 피처를 즉시 마케팅 조건으로 활용 가능하다.
  • 동적 SQL 빌드: 추출 실행 직전에 카탈로그 메타데이터를 참조해 런타임에 BigQuery 쿼리를 생성하고, 코드 수정 없이 필터를 확장한다.
  • 비동기 추출: 요청 즉시 작업 번호만 반환하고 백그라운드 워커가 2초 주기로 완료 여부를 체크한다. 라이브 테이블과 버전별 이력 테이블에 동시 반영한다.
  • 스케줄러 통합: 갱신 대상만 백엔드에 전달하고 실제 워크플로우는 수동 실행과 동일한 비동기 로직을 재사용해 단일 코드 베이스를 유지했다.
  • 마케팅 도구별 전송: 전체 교체 방식(A)은 full CSV만, 증분 반영 방식(B)은 full·added·removed 3개 파일을 S3 + Kafka로 전달하고, C는 REST API 직접 호출. 모든 도구 전송 성공 후에만 베이스라인을 갱신해 누락을 방지했다.
  • 유저 프로파일 기능: 전환율 예측 모델로 중요 피처를 선정하기 위해 Logistic Regression(공선성 제거)과 LightGBM(원본 피처)을 함께 학습했다. 두 모델 공통으로 중요도 높은 40개 지표를 선정하고 방문·탐색·의도·구매 단계별로 그룹화해 UI로 제공했다.
  • 전체 유저 대비 지수(100 기준) 보기를 제공하고, 편차가 큰 지표를 상단 카드로 요약해 스크롤 없이 세그먼트 특징을 파악할 수 있게 했다.
  • 성과: 캠페인 준비 2~3일 → 10분, 마케터 1인이 조건 설정부터 캠페인 운영까지 완결 가능.
왜 읽나비개발자 분석가가 AI 에이전트로 데이터 파이프라인과 마케팅 자동화 시스템을 직접 구축한 경험과, PostgreSQL-BigQuery 이중 저장소·동적 SQL 빌드·비동기 추출 설계를 실무 맥락에서 살펴볼 수 있다.
여기어때 (GC컴퍼니)
여기어때 (GC컴퍼니) 블로그
원문은 여기서 이어서 읽을 수 있어요
원문 읽기
읽음 (0)

이 글과 비슷한

  1. DB / 데이터·vercel-blogVercel Blog·

    모든 Vercel 빌드를 지탱하는 데이터베이스 마이그레이션 이야기

    Vercel이 빌드 웜 풀(warm pool) 상태 데이터를 Redis에서 DynamoDB로 마이그레이션한 과정을 다룬다. 빌드 풀의 청구 매핑 데이터가 Redis 장애 시 복구 불가능하다는 구조적 위험이 이주를 결정한 핵심 이유였고, 24/7 프로덕션 트래픽 속에서 다운타임 없이 5단계 점진적 전환을 완료했다.

    요약 이어보기
    #database-migration#zero-downtime#redis+2
  2. DB / 데이터·channel-talk채널톡·

    DynamoDB 핫 파티션을 해결하는 3가지 방법 (3): 조회를 인덱스 테이블로 옮기기

    채널톡이 DynamoDB 핫 파티션을 해결하려 GSI를 별도 인덱스 테이블로 떼어낸 연재의 마지막 편으로, 조회 경로를 GSI에서 인덱스 테이블로 옮긴 과정을 다룬다. 2편에서 쓰기 파이프라인이 완성돼 WriteThrottleEvents가 월 110만 회에서 0회가 됐지만, 조회 코드가 여전히 GSI를 읽고 있어 GSI를 지울 수 없었다. GSI가 읽기에서 대신해주던 키 해석·정확 일치·삭제 필터·페이지 채우기를 사내 공통 라이브러리의 조회 규칙으로 흡수해, 호출부는 GSI든 인덱스 테이블이든 같은 코드를 쓰게 만들었다.

    요약 이어보기
    #migration#dynamodb#hot-partition+5
  3. DB / 데이터·AWS KoreaAWS Korea Tech·

    Amazon Aurora 및 Amazon RDS의 PostgreSQL 18: 보안, 모니터링 및 개발자 기능 향상

    Amazon Aurora 및 Amazon RDS에서 지원하는 PostgreSQL 18의 주요 개선 사항을 보안·모니터링·논리적 복제·개발자 기능 네 가지 영역으로 정리한다. MD5 패스워드 인증 폐기 예고부터 `uuidv7()` 네이티브 함수 지원까지, DBA와 개발자 모두에게 실질적 영향을 주는 변경점을 AWS Aurora/RDS 컨텍스트에서 설명한다.

    요약 이어보기
    #postgres#aurora#aws-rds+2