2. Ad-Tech on AWSMe?
몇 년 전까지만 해도, 반도체하고 싶어한 학생
어쩌다가 창업을 하고,
지금은 레코벨에서 빅데이터를 경험중
AWS 는 사용 6년차
3. Ad-Tech on AWS
본 강연에서 다룰 내용
이번 강연에서는 빅데이터에 관심있으신 분들에게 도움이
될 내용들을 다룹니다. 레코벨의 추천서비스가 성장해온
과정을 통해서, 기존의 IDC 환경에서 Cloud환경으로
어떻게 옮겨왔는지, Cloud 환경에서의 구조는 어떤식으로
바뀌어왔는지, 그 과정에서 AWS 의 어떤 서비스들을
사용하였는지를 소개드립니다.
8. Ad-Tech on AWS추천서비스 사용 사이트 숫자
0
50
100
150
200
250
300
350
2014. 12 2015. 3 2015. 9 2016. 4 2016. 10 2017. 5
9. Ad-Tech on AWS
본 강연에서 다룰 내용
이번 강연에서는 빅데이터에 관심있으신 분들에게 도움이
될 내용들을 다룹니다.
레코벨의 추천서비스가 성장해온 과정을 통해서,
기존의 IDC 환경에서 Cloud환경으로 어떻게 옮겨왔는지,
Cloud Architecture는 어떤식으로 바뀌어왔는지,
AWS 의 어떤 서비스들을 사용하였는지를 소개드립니다.
11. Ad-Tech on AWS
레코벨은 대기업에 SI 형태로 추천서비스 제공
Engineer 보다는 Data Scientist 로 구성된 팀
추천서비스를 클라우드 위에 SaaS 형태로 파는 것이 목표
간간히 알바/외주를 써서 몇 개의 고객사에 대한 추천시스템을 IDC 에 구현
12. Ad-Tech on AWS
Server on IDC
Legacy on IDC
Logger
API
DB
(+Engine) Client Site
User Behavior
Result (HTML)
JS SDK
13. Ad-Tech on AWS
Server on IDC
Legacy on IDC
Logger
API
DB
Client Site
User Behavior
Result (HTML)
JS SDK
고객사 영업돼서 들어오면 세팅 한 세월
장애 대응 한 세월
테스트 한 세월
내가 SE 도 아니고
23. Ad-Tech on AWS
긴 RDS instance 생성시간
IOPS 문제
아.. 안정성이여
다행히 그 동안 하던 큰 프로젝트 하나가 마무리
24. Ad-Tech on AWS새로운 구조를 위한 숙제
Logger 는 한 번 잘 만들어 놓고 신경쓰고 싶지 않아
API 도 구조 잘 짜고 새로운 추천상품이 나오지 않으면 업데이트 안 할래
Engine 의 안정성에 신경쓰고 싶지 않아
추천서비스는 커머스 특성상 200ms 이하의 Latency 만 보장
25. Ad-Tech on AWSSimple Storage Service (S3)
• 간편성
• 내구성
• 확장가능
• 보안
• 가용성
• 저렴한비용
• 간편한 데이터 전송
• 통합
• 손쉬운관리
그래 데이터란 데이터는 다 S3 에 넣자
26. Ad-Tech on AWS
Infra on AWS
Candidate
Logger API
Client Site
User Behavior Result (JSON)
Engine
28. Ad-Tech on AWSAmazon Kinesis Stream
Real-Time Streaming Data Buffer
• 실시간
• 사용편의성
• 병렬처리
• 탄력성
• 저렴한비용
• 안정성 (~24H)
29. Ad-Tech on AWSEngine
• EC2 : c4.8xlarge
– 36 CPU / 132 ECU / 60G Mem.
– Provisioned IOPS EBS (3000)
• PostgreSQL + Spring Boot
P
U
T
S3
Result
Bucket
G
E
T
S3
Log
Bucket
…/{siteId}/{recType}/{item or userId}.json…/{siteId}/{logType}/{date}/{time}.json
30. Ad-Tech on AWSEngine – DB선택
장점 단점
H2 엄청 빠름 가끔 죽음..
디버깅..
PostgreSQL 디버깅 상대적으로 느림
Spark 빠름 코드복잡도..
디버깅..
31. Ad-Tech on AWSAPI
GET
S3
Result Bucket
…/{siteId}/{recType}/{item or userId}.json
API
"recType": "a002",
"itemId": "354427372",
"results”:
[
{
"itemId": "362054013",
"categoryId": "5502167”,
"rank": 1,
"score": 1,
http://{apiUrl}/{recType}?itemId={itemId}Req
Res
32. Ad-Tech on AWS
MAU 천만이상의 고객사 사이트 성공적 라이브
Logger / API 그리고 Engine 까지 안정적으로 서비스
AWS 위에 고객사 20개
34. Ad-Tech on AWSProblem 1
일단 가장 쉽게 생각할 수 있는건..
EC2 Instance 의 limitation 을 푸는 것.
Unfortunately,
I am unable to confirm when the capacity will become available
for the Tokyo region.
어어…? 이거 불안한데
35. Ad-Tech on AWSProblem 1+
실제로 Peak Time 에는 15대 정도 쓰면,
도쿄리전 capacity 부족
게다가 커머스는 특성상 돈을 받고 시작했지만
미디어는 미래가치를 위해서 먼저 추천을 제공하고
다른 BM으로 돈을 벌려고 했기때문에
ROI 가 안나옴
c4.8xlarge instance 는 시간당 $2.122
36. Ad-Tech on AWSProblem 2
추천 서비스의 특성을 한 마디로 말하자면
“Customize”
온 사이트에 들어가는 기능이기 때문에
고객들은 자기들이 원하는 것을 충분히 만족시켜주길 원함
원래 계획은 PostgreSQL 로 되어있으니
Data Scientist 들이 SQL 을 잘 수정하면
고객사의 요구사항을 빠르게 만족시킬 수 있겠다고 생각
하지만, 그런거 없다.
Java + SpringBoot App 이다보니 어려움이 있었음
개발자 2명이서 죽어남
37. Ad-Tech on AWS두 마리 토끼를 잡자
SQL을 최대한 이용하는 구조를 만들어서
(개발자없이)
고객사의 요구사항을 들어줄 수 있도록하자.
더 가격이 싼 구조를 만들어서
AWS 서버비용이 폭발하지 않도록 하자.
39. Ad-Tech on AWSSpark / Zeppelin
- Spark
- MapReduce 와 유사
- 높은 확장성
- 간단한 인터페이스
- In-Memory
- Hadoop 호환
- Zeppelin
- Web-based Notebook
- 정말정말 쉬움
40. Ad-Tech on AWSRedshift vs. Spark/Zeppelin
특별히 크게 차이 나지 않고,
Redshift 를 ReservedNode 로 사용하면 더 싸지고,
상용 Workbench 로 쉽게 접속가능한 Redshift 로 결정
Instance(Node) Type Count Estimated Cost
PostgreSQL on EC2 c4.8xlarge (on demand) 1 $2.122 /hr
Redshift dc1.large (on demand) 2 $0.628 /hr
Spark / Zepplin m3.xlarge (spot) 10(slave) + 1(master) $0.5 /hr
Redshift Spark / Zepplin
Load 1 0.6 ~ 0.7
Execution (count, partition, join) 1 7
Execution (function) 1 0.25
44. Ad-Tech on AWSSimple Storage Service (S3)
• 간편성
• 내구성
• 확장가능
• 보안
• 가용성
• 저렴한비용
• 간편한 데이터 전송
• 통합
• 손쉬운관리
45. Ad-Tech on AWS비용
100만개의 상품을 가진 고객사라면 PUT 비용이…
한 번 업데이트 하는데,
$0.0047 / 1,000 * 1,000,000 = $4.7
하루에 세 번이면, 한달에..
$4.7 * 3 * 30 = $423
DB 로 옮겨야할까..?
46. Ad-Tech on AWSAurora
AWS 의 고성능, 고-확장성 DB
- 고성능
- 뛰어난 보안
- MySQL/PostgreSQL 호환
- 뛰어난 확장성
- 높은 가용성 및 내구성
- 완전 관리형
47. Ad-Tech on AWS실패
Aurora 는 IOPS 에 비례해서 과금하는 시스템
배치시간 이후에 모든 데이터가 업데이트 될 때 마다 과금이 폭발
안정적인 서비스를 위해서 Replica 운영 필수
배치시간 이후 모든 데이터가 한번에 업데이트 될 때
Replica Lag 증가
현재 레코벨 데이터모델로는 불가능
향후 모델 수정 후 재시도하기로..
48. Ad-Tech on AWSSimple Storage Service (S3)
• 간편성
• 내구성
• 확장가능
• 보안
• 가용성
• 저렴한비용
• 간편한 데이터 전송
• 통합
• 손쉬운관리
49. Ad-Tech on AWSHashing
Hashing 을 하여, 여러개의 결과 파일을 하나의 파일에
압축시켜 놓자.
하나의 ”압축”파일에는 약 20개의 원본파일이 들어가도
괜찮을 것 같다.
PUT 비용 대략 1/20
51. Ad-Tech on AWSTask Management
현재 사용하고 있는 TaskManagement Tool은
LinkedIn 에서 만든 Azkaban
많은 고객사사이트에 대해서 추천엔진을 돌리지만
오래걸리는 고객사는 사실 20%에 불과
나머지 고객사들은 빠른 시간내에 태스크가 끝남
하지만, AWS 는 시간당 과금
태스크들의 시간 관리가 중요
Task-Bundler 라는 모듈을 만들어서
각 번들내에 태스크들이
50분 정도의 실행시간을 가지도록 만듦
52. Ad-Tech on AWS체크 포인트
- RDS 를 사용할 땐 IOPS 에 주의
- 웬만한 데이터는 S3 에
- 스트리밍 데이터에는 Kinesis
- 기존의 RDS 와는 다른, Aurora 의 요금 체계
- Redshift 꼭 쓰자.