광고 데이터 수집을 위한 인프라 구축

광고 데이터 수집을 위한 인프라 구축

https://jybaek.tistory.com/

Agenda #


광고 도메인 설명 #

굉장히 많은 (수십 개의) 매체에서 데이터를 수집하고 있다.

  • 광고주마다 성과측정의 기준이 되는 기여기간이 다르다.
  • 각 매체가 관리하는 광고 지면들로부터 뒤늦게 데이터가 집계되는 경우도 있다. (예를 들어, 시간이 지나면서 클릭수가 막 변경된다.)


수집 : (다양한 매체의) 대용량 광고 데이터 수집 #

ECS 서비스를 사용하고 있다.

왼쪽부터 1번 순서로 진행된다. RDS 에서 스케줄러가 데이터 읽고, 키 정보? 조회 하여 Cache에 보낸다. Cache 에 보내지면 Collector 가 일겅와? 수집을 시갖한다.

다만, 대량의 요청을 할 때 429 에러(및 차단)가 발생할 수 있다.

따라서 쓰로틀링을 조절하여 수집할 수 있도록 변경했다.


수집 : ElastiCache for Redis(stream)으로 stateless 수집 #

아래와 같은 상황(=컬렉팅 하는 과정에서 deploy 를 하면)에서 어떤 일이 발생할까?

서비스가 내려간다. 수집되던것은 중단된다. (물론, gracefully shutdown 을 설정할 수도 있다.)

배포는 아무때나 할 수 있어야 한다. 어떻게 할 수 있을까?

// 다시


데이터 적재 & Redshift 튜닝 #

아까 말한 것 처럼 시간이 지남에 따라 지표 값이 변경되기도 했다. 일반적인 DB를 사용하기는 어려웠고 Redshift 를 사용했다.

delete & copy

(redshift 와 사용할 때, 같은 컬럼 기반이라)parquet 가 보통 성능이 좋다. json 을 선택했다. (수집 시 키 컬럼이 변경되는 경우가 허다하기에 컬럼이 계속해서 변해서)

튜닝 : 분산 키 설정 #

분산 키 설정은 필수다. 꼭 설정해야한다.

  • superuser 큐 1개
    • 보통 이건 포함안시켜서 말한다.
  • default 큐 1개
  • 커스텀 큐 n개

// 다시

Airflow 환경 선택 #

  • EKS 운영한다.
    • pod를 죽였다 살렸다 해야해서 꽤나 부담스러울 수 있다.
  • EC2 운영한다.
    • 성능은 좋지만, 가용성은 역시 떨어진다.
  • CloudWatch 를 사용한다.

Terraform 으로 ECS 인프라 구축 #

모듈 구조를 어떻게 잡을 지가 결정해야하는 요소이다.

인스턴스 t 타입의 버스트 기능은 유용할 수 있다.


다시 볼 것