SlideShare a Scribd company logo
Big Data Analysis With
API Gateway / Lambda
이상현 Kurt Lee
Vingle Inc
https://www.vingle.net
iOS / Frontend / Backend
Technical Lead
kurt@vingle.net
https://github.com/breath103
1. 저희는 데이터를 정말 많이 수집합니다..
{
content:{
type: 'post',
id: 12345,
position_x: 2,
position_y: 2
},
referral:{
category: 'newsfeed',
area: 'newsfeed'
},
action:{
type: 'impression',
}
}
1. 저희는 데이터를 정말 많이 수집합니다..
{
content:{
type: 'post',
id: 12345,
},
referral:{
category: 'newsfeed',
area: ‘newsfeed’,
resource_id: ‘12345’
},
action:{
type: ‘read',
}
}
1. 저희는 데이터를 정말 많이 수집합니다..
{
content:{
type: ‘webpage',
id: “http://www.rog..”,
},
referral:{
category: ‘card_show',
area: ‘card_show’,
resource_id: ‘12345’
},
action:{
type: ‘read',
duration: 5.6,
}
}
1. 저희는 데이터를 정말 많이 수집합니다..
30,000
Record Per Minute
24,000,000
Byte Per Minute
Architecture 1
결과물(예시)
새로운 아키텍쳐를 위한 요구사항들

기술적으로,

1) Scalability 확보

2) Main web server에 영향을 안주도록

3) S3에 넣기전에 간단한 수준의 data validation / formatting을 할수 있도록

BI적으로,

1) 모든 데이터를 다 redshift에 넣는건 의미 없다. 날짜별, Cohort별, 유저 그룹별,
Aggregation 된 데이터가 훨씬 중요

Architecture 2
Lamba Code
import AWS from 'aws-sdk';
export default function (event, context, callback) {
const httpHeader = new HTTPHeader(event.headers);
const formattedTickets = TicketFormatter.format(event.body.data);
User.fetchUserByToken(httpHeader.token)
.then((user) => {
const firehoseClient = new AWS.Firehose({
region: 'us-east-1',
httpOptions: { timeout: 5000 },
});
firehoseClient.putRecordBatch({
DeliveryStreamName: streamName,
Records: formattedTickets.map((ticket) => {
const data = {
Data: `${JSON.stringify(ticket)}n`,
};
return data;
}),
}, (err, data) => {
callback({
failedPutCount: data.FailedPutCount,
succeedPutCount: data.RequestResponses.length - data.FailedPutCount,
});
});
});
});
Pricing
=> 신기할 정도로 쌈…
Monitoring
Cloudwatch Dashboard를 이용하면
Lambda Invocation, Errors, Duration까지 한눈에 파악 가능
Cloudwatch Alarm을 통해 

Slack으로 실시간 모니터링도 가능
Deployment
과정 (Node.js + Babel ES6)기준
1. Babel Compile
2. npm install —production
3. Zip 압축
4. Lambda로 업로드
5. 끝^^
=> 쉽고 간단. 배포 속도도 상당히 빠름.
업로드 뒤 1~2분 이내에 적용됨
AWS-SDK 좀 다뤄봤다면 자동화도 간단
Deployment
master를 자동 빌드 하고,
빌드 할때마다 Lambda로

새로운 버젼을 업로드 하고
해당 버젼을 git-tag로 추가
Rollback
-> Alias를 사용한다면, 

Alias 버젼만 바꿔주면됨. 

마찬가지로 즉시 적용
-> AWS-SDK에서 API로 지원하는

기능. 자동화 가능
TIP-1
1. Lambda Container는 (불명확하지만)

생명주기가 있다
ex) DB Connection 이 필요할때, 매 invocation마다 만들
지
말고, Container 전역 변수로 만들어서 재활용하자
(Lambda는 Duration이 pricing기준에 있다)
TIP-2
1. Environment Variables는 Lambda Code에 박지말고
API Gateway에 넣어서 Lambda로
종합
1. Lambda 좋습니다. 특히 마이크로서비스에
2. Deployment / Pricing / scalability / Monitorability 모두 일반적인
서버 구축 툴 (Opsworks / ECS / ElasticBeansTalk) 에 비해 좋습니
다
3. 다만 특성을 제대로 이해하고 써야합니다. 생각보다 문서로 설명해주
지 않는 특성들이 많아요
4. API Gateway도 마찬가지. 좋지만 문서로 설명 안해주는 기능 / 특성
이 많습니다
5. aws-sdk를 이용한 자동화를 적극 활용 추천
6. 사용하는 아마존 리소스가 워낙 다양하고 많아서 한눈에 보기가 힘듭
니다. AWS에서 관련 포탈을 하나 만들어주시기를…

More Related Content

PDF
AWS re:Invent 신규 서비스 총정리 (윤석찬, AWS테크에반젤리스트)
PDF
AWS 서버리스 신규 서비스 총정리 - 트랙2, Community Day 2018 re:Invent 특집
PDF
추천서비스고군분투기 On Aws - 박진우 (레코벨)
PPTX
[AWSKRUG&JAWS-UG Meetup #1] 태양광발전소 원격 감시 시스템의 대량데이터 해석【株式会社fusic】
PDF
클라우드 네이티브 서비스를 통한 실질적 비용 절감 사례 - AWS Summit Seoul 2017
PDF
모바일을 위한 (AWS) 클라우드 기술 동향
PDF
IT 이노베이션 센터 이야기 - AWS Lambda를 활용한 개발 스폰서십 확보편
PDF
SBS 콘텐츠허브의 AWS 도입 사례 :: SBS 콘텐츠허브 :: AWS Media Day 2016
AWS re:Invent 신규 서비스 총정리 (윤석찬, AWS테크에반젤리스트)
AWS 서버리스 신규 서비스 총정리 - 트랙2, Community Day 2018 re:Invent 특집
추천서비스고군분투기 On Aws - 박진우 (레코벨)
[AWSKRUG&JAWS-UG Meetup #1] 태양광발전소 원격 감시 시스템의 대량데이터 해석【株式会社fusic】
클라우드 네이티브 서비스를 통한 실질적 비용 절감 사례 - AWS Summit Seoul 2017
모바일을 위한 (AWS) 클라우드 기술 동향
IT 이노베이션 센터 이야기 - AWS Lambda를 활용한 개발 스폰서십 확보편
SBS 콘텐츠허브의 AWS 도입 사례 :: SBS 콘텐츠허브 :: AWS Media Day 2016

What's hot (20)

PDF
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
PDF
데브옵스(DevOps)의 현재와 미래 - ChatOps & VoiceOps (윤석찬)
PDF
S3 Select를 통한 빠른 데이터 분석하기 - 트랙2, Community Day 2018 re:Invent 특집
PDF
아마존 닷컴의 클라우드 활용 사례 - AWS Summit Seoul 2017
PDF
Aws로 ci하기 안기욱
PDF
서버리스 애플리케이션 구축 패턴 및 구축 사례 - AWS Summit Seoul 2017
PDF
Amazon SNS로 지속적 관리가 가능한 대용량 푸쉬 시스템 구축 여정 - AWS Summit Seoul 2017
PDF
AWS에 대해 궁금했던 10가지 질문들(윤석찬) - AWS 웨비나 시리즈 2015
PPTX
서버리스 데이터 플로우 개발기 - 김재현 (Superb AI) :: AWS Community Day 2020
PDF
AWS Partner Techshift - B2B IT SaaS 기업은 왜 AWS와 함께 하는가? (샌드버드 윤진현 팀장)
PDF
Lambda를 활용한 서버없는 아키텍쳐 구현하기 :: 김기완 :: AWS Summit Seoul 2016
PDF
AWS CLOUD 2018- 손쉬운 모바일 서비스 데이터 처리, AWS AppSync  (김필중 솔루션즈 아키텍트)
PDF
Amazon S3 고급 활용 기법 - AWS Summit Seoul 2017
PDF
AWS re:Invent 특집(4) – 개발자를 위한 신규 서비스 총정리(윤석찬)
PDF
AWS CLOUD 2018- Amazon Neptune, 신규 그래프 데이터베이스 서비스 (김상필 솔루션즈 아키텍트)
PPTX
Serverless Architecture - 김현민
PDF
서버리스(Serverless)를 위한 Zombie Microservices Workshop 실습 가이드 :: 윤석찬 (AWS 테크에반젤...
PDF
AWS CLOUD 2018- 인공지능 보안 위협 감지 서비스 Amazon GuardDuty를 포함한 AWS 보안 신규 기능 업데이트 (임기...
PDF
인프라 자동 배포를 위한 AWS CloudFormation 고급 활용법 - AWS Summit Seoul 2017
PDF
AWS 클라우드 비용 최적화를 위한 모범 사례-AWS Summit Seoul 2017
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
데브옵스(DevOps)의 현재와 미래 - ChatOps & VoiceOps (윤석찬)
S3 Select를 통한 빠른 데이터 분석하기 - 트랙2, Community Day 2018 re:Invent 특집
아마존 닷컴의 클라우드 활용 사례 - AWS Summit Seoul 2017
Aws로 ci하기 안기욱
서버리스 애플리케이션 구축 패턴 및 구축 사례 - AWS Summit Seoul 2017
Amazon SNS로 지속적 관리가 가능한 대용량 푸쉬 시스템 구축 여정 - AWS Summit Seoul 2017
AWS에 대해 궁금했던 10가지 질문들(윤석찬) - AWS 웨비나 시리즈 2015
서버리스 데이터 플로우 개발기 - 김재현 (Superb AI) :: AWS Community Day 2020
AWS Partner Techshift - B2B IT SaaS 기업은 왜 AWS와 함께 하는가? (샌드버드 윤진현 팀장)
Lambda를 활용한 서버없는 아키텍쳐 구현하기 :: 김기완 :: AWS Summit Seoul 2016
AWS CLOUD 2018- 손쉬운 모바일 서비스 데이터 처리, AWS AppSync  (김필중 솔루션즈 아키텍트)
Amazon S3 고급 활용 기법 - AWS Summit Seoul 2017
AWS re:Invent 특집(4) – 개발자를 위한 신규 서비스 총정리(윤석찬)
AWS CLOUD 2018- Amazon Neptune, 신규 그래프 데이터베이스 서비스 (김상필 솔루션즈 아키텍트)
Serverless Architecture - 김현민
서버리스(Serverless)를 위한 Zombie Microservices Workshop 실습 가이드 :: 윤석찬 (AWS 테크에반젤...
AWS CLOUD 2018- 인공지능 보안 위협 감지 서비스 Amazon GuardDuty를 포함한 AWS 보안 신규 기능 업데이트 (임기...
인프라 자동 배포를 위한 AWS CloudFormation 고급 활용법 - AWS Summit Seoul 2017
AWS 클라우드 비용 최적화를 위한 모범 사례-AWS Summit Seoul 2017
Ad

Similar to Kinesis / Lambda / EMR / Redshift 를 이용한 Big Data 분석 - 이상현 (빙글) (20)

PDF
[236] 카카오의데이터파이프라인 윤도영
PDF
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기
PPTX
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
PDF
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
PDF
[AWS Dev Day] 이머징 테크 | AWS 서버리스를 이용하여 IoT 수준의 메세지 폭풍을 처리하는 방법 - 김민성 AWS 솔루션즈 ...
PDF
게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016
PDF
개발생산성
PPTX
Data-binding AngularJS
PPTX
Aws lambda 와 함께 서버리스 서비스 만들기
PDF
스마트 팩토리: AWS 사물인터넷과 인공지능을 활용한 스마트 팩토리 구축 – 최영준 AWS 솔루션즈 아키텍트, 정현아 AWS 솔루션즈 아키...
PDF
[IoT] MAKE with Open H/W + Node.JS - 3rd
PDF
AWS Lambdas with a Static Outgoing IP
PDF
20181108 HBSmith에서는 이렇게 AWS IaC로 배포한다
PDF
SOSCON 2017 - Backend.AI
PPTX
Spring boot DI
PDF
주니어 개발자의 서버 로그 관리 개선기
PDF
Bigdata with Google Cloud
PDF
Node.js 기본
PPTX
Golang Project Guide from A to Z: From Feature Development to Enterprise Appl...
PPTX
Angular 2 rc5 조사
[236] 카카오의데이터파이프라인 윤도영
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[AWS Dev Day] 이머징 테크 | AWS 서버리스를 이용하여 IoT 수준의 메세지 폭풍을 처리하는 방법 - 김민성 AWS 솔루션즈 ...
게임 고객 사례를 통해 살펴보는 AWS 활용 전략 :: 이경안 :: AWS Summit Seoul 2016
개발생산성
Data-binding AngularJS
Aws lambda 와 함께 서버리스 서비스 만들기
스마트 팩토리: AWS 사물인터넷과 인공지능을 활용한 스마트 팩토리 구축 – 최영준 AWS 솔루션즈 아키텍트, 정현아 AWS 솔루션즈 아키...
[IoT] MAKE with Open H/W + Node.JS - 3rd
AWS Lambdas with a Static Outgoing IP
20181108 HBSmith에서는 이렇게 AWS IaC로 배포한다
SOSCON 2017 - Backend.AI
Spring boot DI
주니어 개발자의 서버 로그 관리 개선기
Bigdata with Google Cloud
Node.js 기본
Golang Project Guide from A to Z: From Feature Development to Enterprise Appl...
Angular 2 rc5 조사
Ad

More from AWSKRUG - AWS한국사용자모임 (20)

PDF
IaC로 AWS인프라 관리하기 - 이진성 (AUSG) :: AWS Community Day Online 2021
PPTX
Docker를 활용한 손쉬운 ECS 활용기 - 김민태 (AUSG) :: AWS Community Day Online 2021
PDF
AWS와 함께하는 무중단 배포 파이프라인 개선기 - 황성찬 (AUSG) :: AWS Community Day Online 2021
PDF
보안을 위한 AWS Network 구성 - 우수연 (AUSG) :: AWS Community Day Online 2021
PDF
자연어 처리 ML모델을 활용한 이커머스 문제 해결하기 - 진현두 (카카오스타일) :: AWS Community Day Online 2021
PDF
Athena & Step Function 으로 통계 파이프라인 구축하기 - 변규현 (당근마켓) :: AWS Community Day Onl...
PPTX
자바개발자가 최대한 빠르게 서비스를 오픈하는 방법 - 최진환 (드라마앤컴퍼니) :: AWS Community Day Online 2021
PDF
스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...
PDF
커뮤니티 빌더를 아시나요? - 윤평호(AWSKRUG) :: AWS Community Day Online 2021
PDF
복잡한 권한신청문제 ConsoleMe로 해결하기 - 손건 (AB180) :: AWS Community Day Online 2021
PDF
ECS to EKS 마이그레이션 경험기 - 유용환(Superb AI) :: AWS Community Day Online 2021
PDF
복잡한 기존 시스템에 피쳐 애드업 후기 - 김태웅(브랜디) :: AWS Community Day Online 2021
PDF
EKS에서 Opentelemetry로 코드실행 모니터링하기 - 신재현 (인덴트코퍼레이션) :: AWS Community Day Online...
PDF
Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021
PDF
[AWS Hero 스페셜] 서버리스 기반 검색 서비스 구축하기 - 이상현(스마일벤처스) :: AWS Community Day Online ...
PDF
초기 스타트업의 AWS - 김지훈(투어라이브) :: AWS Community Day Online 2020
PDF
[AWS Hero 스페셜] Amazon Personalize를 통한 개인화/추천 서비스 개발 노하우 - 소성운(크로키닷컴) :: AWS C...
PPTX
goployer, 코드 기반의 배포 도구 - 송주영 (beNX) :: AWS Community Day 2020
PDF
온라인 주문 서비스를 서버리스 아키텍쳐로 구축하기 - 김태우(Classmethod) :: AWS Community Day Online 2020
PDF
엔터프라이즈 기업을 위한 Digital 플랫폼 구축 사례 - 권낙주(SK C&C) :: AWS Community Day Online 2020
IaC로 AWS인프라 관리하기 - 이진성 (AUSG) :: AWS Community Day Online 2021
Docker를 활용한 손쉬운 ECS 활용기 - 김민태 (AUSG) :: AWS Community Day Online 2021
AWS와 함께하는 무중단 배포 파이프라인 개선기 - 황성찬 (AUSG) :: AWS Community Day Online 2021
보안을 위한 AWS Network 구성 - 우수연 (AUSG) :: AWS Community Day Online 2021
자연어 처리 ML모델을 활용한 이커머스 문제 해결하기 - 진현두 (카카오스타일) :: AWS Community Day Online 2021
Athena & Step Function 으로 통계 파이프라인 구축하기 - 변규현 (당근마켓) :: AWS Community Day Onl...
자바개발자가 최대한 빠르게 서비스를 오픈하는 방법 - 최진환 (드라마앤컴퍼니) :: AWS Community Day Online 2021
스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...
커뮤니티 빌더를 아시나요? - 윤평호(AWSKRUG) :: AWS Community Day Online 2021
복잡한 권한신청문제 ConsoleMe로 해결하기 - 손건 (AB180) :: AWS Community Day Online 2021
ECS to EKS 마이그레이션 경험기 - 유용환(Superb AI) :: AWS Community Day Online 2021
복잡한 기존 시스템에 피쳐 애드업 후기 - 김태웅(브랜디) :: AWS Community Day Online 2021
EKS에서 Opentelemetry로 코드실행 모니터링하기 - 신재현 (인덴트코퍼레이션) :: AWS Community Day Online...
Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021
[AWS Hero 스페셜] 서버리스 기반 검색 서비스 구축하기 - 이상현(스마일벤처스) :: AWS Community Day Online ...
초기 스타트업의 AWS - 김지훈(투어라이브) :: AWS Community Day Online 2020
[AWS Hero 스페셜] Amazon Personalize를 통한 개인화/추천 서비스 개발 노하우 - 소성운(크로키닷컴) :: AWS C...
goployer, 코드 기반의 배포 도구 - 송주영 (beNX) :: AWS Community Day 2020
온라인 주문 서비스를 서버리스 아키텍쳐로 구축하기 - 김태우(Classmethod) :: AWS Community Day Online 2020
엔터프라이즈 기업을 위한 Digital 플랫폼 구축 사례 - 권낙주(SK C&C) :: AWS Community Day Online 2020

Kinesis / Lambda / EMR / Redshift 를 이용한 Big Data 분석 - 이상현 (빙글)

  • 1. Big Data Analysis With API Gateway / Lambda
  • 2. 이상현 Kurt Lee Vingle Inc https://www.vingle.net iOS / Frontend / Backend Technical Lead [email protected] https://github.com/breath103
  • 3. 1. 저희는 데이터를 정말 많이 수집합니다.. { content:{ type: 'post', id: 12345, position_x: 2, position_y: 2 }, referral:{ category: 'newsfeed', area: 'newsfeed' }, action:{ type: 'impression', } }
  • 4. 1. 저희는 데이터를 정말 많이 수집합니다.. { content:{ type: 'post', id: 12345, }, referral:{ category: 'newsfeed', area: ‘newsfeed’, resource_id: ‘12345’ }, action:{ type: ‘read', } }
  • 5. 1. 저희는 데이터를 정말 많이 수집합니다.. { content:{ type: ‘webpage', id: “http://www.rog..”, }, referral:{ category: ‘card_show', area: ‘card_show’, resource_id: ‘12345’ }, action:{ type: ‘read', duration: 5.6, } }
  • 6. 1. 저희는 데이터를 정말 많이 수집합니다.. 30,000 Record Per Minute 24,000,000 Byte Per Minute
  • 9. 새로운 아키텍쳐를 위한 요구사항들 기술적으로, 1) Scalability 확보 2) Main web server에 영향을 안주도록 3) S3에 넣기전에 간단한 수준의 data validation / formatting을 할수 있도록 BI적으로, 1) 모든 데이터를 다 redshift에 넣는건 의미 없다. 날짜별, Cohort별, 유저 그룹별, Aggregation 된 데이터가 훨씬 중요 Architecture 2
  • 10. Lamba Code import AWS from 'aws-sdk'; export default function (event, context, callback) { const httpHeader = new HTTPHeader(event.headers); const formattedTickets = TicketFormatter.format(event.body.data); User.fetchUserByToken(httpHeader.token) .then((user) => { const firehoseClient = new AWS.Firehose({ region: 'us-east-1', httpOptions: { timeout: 5000 }, }); firehoseClient.putRecordBatch({ DeliveryStreamName: streamName, Records: formattedTickets.map((ticket) => { const data = { Data: `${JSON.stringify(ticket)}n`, }; return data; }), }, (err, data) => { callback({ failedPutCount: data.FailedPutCount, succeedPutCount: data.RequestResponses.length - data.FailedPutCount, }); }); }); });
  • 12. Monitoring Cloudwatch Dashboard를 이용하면 Lambda Invocation, Errors, Duration까지 한눈에 파악 가능
  • 13. Cloudwatch Alarm을 통해 
 Slack으로 실시간 모니터링도 가능
  • 14. Deployment 과정 (Node.js + Babel ES6)기준 1. Babel Compile 2. npm install —production 3. Zip 압축 4. Lambda로 업로드 5. 끝^^ => 쉽고 간단. 배포 속도도 상당히 빠름. 업로드 뒤 1~2분 이내에 적용됨 AWS-SDK 좀 다뤄봤다면 자동화도 간단
  • 15. Deployment master를 자동 빌드 하고, 빌드 할때마다 Lambda로
 새로운 버젼을 업로드 하고 해당 버젼을 git-tag로 추가
  • 16. Rollback -> Alias를 사용한다면, 
 Alias 버젼만 바꿔주면됨. 
 마찬가지로 즉시 적용 -> AWS-SDK에서 API로 지원하는
 기능. 자동화 가능
  • 17. TIP-1 1. Lambda Container는 (불명확하지만)
 생명주기가 있다 ex) DB Connection 이 필요할때, 매 invocation마다 만들 지 말고, Container 전역 변수로 만들어서 재활용하자 (Lambda는 Duration이 pricing기준에 있다)
  • 18. TIP-2 1. Environment Variables는 Lambda Code에 박지말고 API Gateway에 넣어서 Lambda로
  • 19. 종합 1. Lambda 좋습니다. 특히 마이크로서비스에 2. Deployment / Pricing / scalability / Monitorability 모두 일반적인 서버 구축 툴 (Opsworks / ECS / ElasticBeansTalk) 에 비해 좋습니 다 3. 다만 특성을 제대로 이해하고 써야합니다. 생각보다 문서로 설명해주 지 않는 특성들이 많아요 4. API Gateway도 마찬가지. 좋지만 문서로 설명 안해주는 기능 / 특성 이 많습니다 5. aws-sdk를 이용한 자동화를 적극 활용 추천 6. 사용하는 아마존 리소스가 워낙 다양하고 많아서 한눈에 보기가 힘듭 니다. AWS에서 관련 포탈을 하나 만들어주시기를…