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 타입의 버스트 기능은 유용할 수 있다.
다시 볼 것