+ All Categories
Home > Technology > [AWSKRUG&JAWS-UG Meetup #1] Serverless Real-Time Analysis

[AWSKRUG&JAWS-UG Meetup #1] Serverless Real-Time Analysis

Date post: 14-Apr-2017
Category:
Upload: aws-korea-usergroup-aws
View: 271 times
Download: 3 times
Share this document with a friend
65
Serverless Real-Time Analysis Minyoung Jeong CTO, The Beatpacking Company
Transcript
Page 1: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis

Serverless Real-Time Analysis

Minyoung JeongCTO, The Beatpacking Company

Page 2: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis

Minyoung Jeong

CTO, The Beatpacking Company

Founder, AWSKRUG

AWS Community Hero

Love Python!

Page 3: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis

Agenda

• Real-Time Analysis ?

• Why Serverless?

• Architecture Overview

• AWS Products

Page 4: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis

Real-Time Analysis

Page 5: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis

BEATAd supported Streaming Radio

Page 6: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis

To sell ads,need Real-time analysis

Page 7: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis

To detect abusing, use Real-time analysis.

Page 8: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis

What's Real-time?

Page 9: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis

Differences between Unit

Page 10: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis

Day, Hour, Minute

Page 11: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis

Day, Hour, Minute

Page 12: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis

Second

Page 13: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis

충분히 적은 오차를 감수지연을 줄이는 분석

Page 14: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis

Why Serverless?

Page 15: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis

–William of Occam

“Pluralitas non est ponenda sine neccesitate”

Page 16: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis

Everything seems nails when you hold a hammer?

Page 17: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis

Flexible by demand Increase efficiency

Page 18: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis

Deploy, Scaling, CapacityFault tolerance,, ….

Page 19: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis

Works great with Microservice Architecture

Page 20: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis

Service that covers smaller areaQuick develop, higher reliability

Page 21: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis

MonitoringLoad dispersion and management

Page 22: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis

Forget everything other than codes.

Page 23: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis

Forget everything other than codes ?

Page 24: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis

Lambda has inconvenient development model Apex, Serverless

Page 25: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis

Architecture Overview

Page 26: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis
Page 27: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis
Page 28: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis
Page 29: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis
Page 30: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis
Page 31: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis
Page 32: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis
Page 33: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis

Peak: 1K RPS Avg: 300 RPS

Page 34: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis

API Gateawy+Lambda+ES<= $400/m < m4.2xlarge 1ea/m

Page 35: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis

API Gateway

Page 36: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis

REST EndpointAuth & Cache & Monitoring

Page 37: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis

HTTP ProxyLambda, AWS Service

Page 38: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis
Page 39: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis
Page 40: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis
Page 41: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis

By using Cloufront,reduce latency and prevent DDOS

Page 42: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis

Automatically expands within designated Range, then throttling works.

Page 43: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis

Utilizing Stage feature,Test/Verification

Page 44: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis
Page 45: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis

Request/Response Template

Page 46: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis

Kinesis

Page 47: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis

Platform for streaming data on AWS

Page 48: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis

Managed KafkaQueue/ETL/Analysis

Page 49: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis

Scale In/Out by ShardExplore forward, backward, and certain point of streamConfigurable Retention Period

Page 50: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis

Stream

Shard

Shard

Shard

Shard

Page 51: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis

TRIM_HORIZON LATESTAT(AFTER)_SEQUENCE

Page 52: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis

Connect various consumers to one streamInvocation is available within retaining period Idempotence

Page 53: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis

Lambda Integration(w/Event Source)Provide KCL/KPL SDKREST API

Page 54: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis

Lambda

Page 55: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis

Code in the Cloud

Page 56: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis

Execute by receiving event and contextCRON/AWS Event/API GatewayCloudwatch Log & Monitoring

Page 57: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis
Page 58: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis

Set only memory and execution timeoutAutoscale by throughputCharge by 100ms

Page 59: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis

Throtting and latency spike existExecute invocation and assure idempotence

Page 60: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis

event

Page 61: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis

function endpointCollect(event, context) { // api-gateway context let apiContext = event.context;

event.body._context = { es_name: apiContext['es-name'], es_index: apiContext['es-index'], es_doc_type: apiContext['es-doc-type'], s3_bucket: apiContext['s3-bucket'], s3_prefix: apiContext['s3-prefix'] }

putStream(apiContext['stream-name'], event).then((resolve, reject) => { context.succeed(); }).catch((err) => { context.fail(err); }); }

Page 62: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis

function putStream(streamName, event) { // inbound from AWS API Gateway

let injected = injectContext(event); let record = { Data: JSON.stringify(injected), PartitionKey: `${event.body.timestamp}`, StreamName: streamName }; return new Promise((resolve, reject) => { kinesis.putRecord(record, (err, data) => { if (err) { reject(err); } else { resolve(data); } }); }); }

Page 63: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis

const ESEndpoint = new AWS.Endpoint(es_host); const req = new AWS.HttpRequest(ESEndpoint);

req.method = 'POST'; req.body = body; req.path = '/_bulk'; req.region = 'ap-northeast-1';

req.headers['presigned-expires'] = false; req.headers['Host'] = ESEndpoint.host;

if (AWSCredential.accessKeyId) { const signer = new AWS.Signers.V4(req, 'es'); signer.addAuthorization(AWSCredential, new Date()); }

Page 64: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis

Demo

Page 65: [AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis

Thanks!


Recommended