찾아가는 aws 세미나(구로,가산,판교) - aws에서 작은 서비스 구현하기...

87
AWS 에서 작은 서비스 구현 하기 솔루션즈 아키텍트 김필중 2016년 10월 27일

Upload: amazon-web-services-korea

Post on 16-Apr-2017

597 views

Category:

Technology


4 download

TRANSCRIPT

Page 1: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

AWS 에서작은 서비스 구현 하기

솔루션즈 아키텍트 김필중2016년 10월 27일

Page 2: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

이번 세션의 진행

> 백그라운드 지식> 시나리오 기반 작은 서비스 구현> 정리

Page 3: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

> 들어가기에 앞서 백그라운드 지식

Page 4: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

AWS 클라우드의 다양하고 폭넓은 서비스고객 및 기술

지원

영업 지원

고객지원

프로페셔널컨설팅

교육 및인증

보안 및빌링시스템

파트너생태계

솔루션즈아키텍트

엔터프라이즈

가상데스크톱

기업용 공유도구

기업용이메일

백업 및 복구

글로벌 리전(Region)

가용 영역(AZ)

콘텐츠 배포지점(Edges)

인프라

핵심 서비스

컴퓨팅가상머신, 자동확장, 부하분산, 컨테이너, 클라우드 기능

스토리지오브젝트, 블록, 파일, 아카이브, Import/Export

데이터베이스관계형, NoSQL, 캐싱, 마이그레이션

네트워킹VPC, DX, DNS

콘텐츠 배포(CDN)

하이브리드환경

데이터 백업

통합 앱개발 환경

전용 회선연결

통합 인증

통합 리소스관리

네트워크통합

서비스접근 제어

사용자인증 관리

암호 키 관리및 저장

모니터링로그

기업 자원설정 및 보고

리소스 사용량및 감사

보안 및 규정 준수

기업 내규정 준수 웹 방화벽

비지니스 앱

비지니스인텔리전스 데이터베이스

DevOps 도구 네트워킹보안 스토리지

IoT

규칙 엔진

디바이스섀도

디바이스SDK

레지스트리

디바이스게이트웨이

개발 및 운영 도구모바일 서비스앱 서비스데이터 분석

데이터웨어하우스

하둡/Spark

실시간 데이터저장

머신 러닝

Elasticsearch서비스

알람 및 큐서비스

워크 플로우

풀-텍스트검색

Email 전송

동영상 변환

원 클릭 앱 개발

모바일 인증

디바이스 동기화

모바일 앱 테스트

푸시 알림

DevOps 리소스 관리

앱 생명주기 관리도구

컨테이너 서비스

클라우드 함수

리소스 템플릿

API 게이트웨이

실시간 데이터분석

비지니스인텔리전스

모바일 분석

모바일 허브

마켓 플레이스

Page 5: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

Amazon EC2

가상 서버 (Virtual Machine)

CPU/메모리/네트워크에 따라 다양한 인스턴스 타입 제공

다양한 OS 사용 가능

다양한 과금 옵션 (온디맨드/예약/스팟)

컴퓨팅

Page 6: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

Amazon S3

어떤 것이든 저장

오브젝트 저장소

확장 가능

99.999999999% 내구성

Static 웹사이트 호스팅 서비스 가능

사용(저장)한 만큼만 지불

오브젝트 저장소

Page 7: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

Amazon CloudFront

콘텐츠 배포 네트워크 (CDN)

이미지, 동영상, 파일, 웹 페이지 등 전송

정적/동적 콘텐츠 캐싱 및 가속

업로드 가속 (PUT, POST HTTP 지원)

실제 전송량 만큼 과금

콘텐츠 배포

Page 8: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

Auto Scaling

사용자 정의 조건 (ex, 트래픽, CPU 사용률 등)에 따라

EC2 인스턴스를 자동으로 확장 및 축소

비정상적이거나 연결이 안되는 인스턴스를 교체하여

애플리케이션의 고가용성을 유지

자동 확장

Page 9: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

Amazon Lambda

이벤트에 응답하는 코드를 작동시키는 Serverless

컴퓨팅 서비스

사용자 정의 커스텀 로직으로 AWS 서비스를 확장

처리된 요청과 동작한 컴퓨팅 시간만큼만 비용 청구

이벤트 처리

Page 10: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

많은 분들이 다음 처럼 질문 하십니다.

“클라우드, AWS 관련 얘기가 많이 들려오는데,어떻게, 어디에 써야 하는지 모르겠어요.” – 아무개

특히나 비지니스 영향이 없어야 하는데..

Page 11: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

뭐든지 해볼 수 있습니다!

Page 12: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

올인!

개발 및 테스트

실제 서비스

미션 크리티컬

개발을 위한 환경과 테스트 환경

실 서비스 애플리케이션 구축 및 마이그레이션

미션 크리티컬 애플리케이션 구축 및 마이그레이션

사내 표준으로 도입

Page 13: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

기존 환경 AWS 클라우드

한번에 옮겨가기

그대로

Page 14: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

기존 환경

한번에 옮겨가기

수십~수백대의 서버들FTP, NAS 등의 각종 스토리지L2, L4 장비백업용 테이프

포크리프트

AWS의 장점은?

Page 15: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

하지만 비지니스에 영향이 있으면 안되는데…

그래서, 작은 서비스 위주로 옮겨봅시다!비지니스에 영향을 최소화 하는 방향으로요!Serverless 를 활용 한다면 가능 합니다

Page 16: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

왜 Serverless 일까요?

Page 17: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

Servers서버의 물리적인 장애를

어플리케이션에서 어떻게 처리하지?

내 서버들에 대한 접근을어떻게 통제할 수 있지?

서버의 수를 언제늘려야 하지?

내 서버의 용량을언제 늘려야 하지? 내 예산에 맞는

서버의 크기는?

내 서버들의남아있는 용량은얼마나 되지?

(AAHHHHHHHHH!!)

Page 18: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

서버 없는 아키텍쳐

완전 관리형• 프로비져닝 없음• 관리요소 없음• 높은 가용성

개발자 생산성• 중요한 코드에 집중• 빠르게 혁신• 시장에 빠르게 접근

지속적인 스케일링• 자동으로• 스케일 업/다운

Page 19: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

AWS의 수많은 Serverless 옵션

스토리지데이터베이스

네트워크

컴퓨팅

콘텐츠 전송

메시징 및 대기열보안

게이트웨이

사용자 관리모니터링 및 로깅

사물 인터넷기계 학습

Page 20: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

시나리오 #1

우리는 티켓 예약 서비스를 제공하고 있어요.서버는 15대가 운영 중이고요.유명한 가수의 콘서트 예약 시 부하가 가장 커요. 가끔 서비스 장애가 발생하죠…서버 늘려달라고 해도 평균 사용률이 높지 않다는 이유로 안해주세요.장애 발생하면 실무자들 능력 부족이라 몰고 가는게 너무 슬프네요…

Page 21: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

떠오르는 생각들

- AWS 는 필요한만큼만 컴퓨팅을 사용할 수 있는 기능을 제공 한다던데- 예약 페이지만 AWS 에서 구현해볼까?- 그런데 갑자기 늘어나는 트래픽을 감당할만큼 탄력적이긴 할까?

Page 22: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

기존 시스템

백엔드 로직 데이터베이스브라우저/모바일

Page 23: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

AWS 에서의 예약 페이지

AWS Lambda

Amazon API Gateway

Amazon DynamoDB

Serverless Microservice

Page 24: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

AWS Lambda

이벤트에 대한 응답으로 작성한 코드를 실행하는 컴퓨팅서비스

이벤트 트리거들:• 비동기적 혹은 동기적인 직접 호출을 통해• Amazon S3 버킷으로의 오브젝트 업로드를 통해• API Gateway 엔드포인트 호출을 통해• Amazon SNS 메시지를 통해• 그 이외에도 다양한 방법으로

사용처:• 데이터 기반의 감사, 분석 및 알림 등을 수행할 때• 자동으로 확장하는 백엔드 서비스를 만들 때

Page 25: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

AWS Lambda 의 이점

지속적으로 확장관리할 서버 없이

코드가 각 트리거의 응답에따라 실행되어 자동으로 확장.코드는 병렬로 실행하고개별적으로 트리거를 처리,워크로드의 볼륨에 정확하게

맞춰 확장

1초 이하의 미터링

매 100ms의 코드 실행시간과 코드가 실행된횟수에 따라 비용이 발생,코드가 실행되지 않을 땐그 어떤 과금도 발생 안함

서버를 준비하거나 관리할 필요없이 코드를 자동으로 실행.코드를 작성하여 업로드만

하면 작동함

1 2 3

Page 26: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)
Page 27: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

-코드

언어-메모리 /실행시간-

Page 28: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

서버 확장 Lambda 함수

Page 29: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

Lambda의 구성 요소

• Lambda 함수(사용자 작성) • 이벤트 소스• AWS Lambda 서비스• 함수 네트워킹 환경

Page 30: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

AWS Lambda 함수

• 사용자 코드(Java, NodeJS, Python)

• 실행 시 코드가 가정하는IAM 역할

• 사용자 코드에 할당된메모리 양(CPU 및네트워크에도 영향을 줌)

유효하고 완전한Lambda 함수

Page 31: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

이벤트 소스

• 함수 실행 시기는언제입니까?

• 현재 이벤트 소스로사용되는 수많은 AWS 서비스:

• S3• Kinesis• SNS• DynamoDB• CloudWatch• Config Rules• Amazon Echo• 기타• …및 Amazon API Gateway

(더 많은 서비스 제공 예정)

Page 32: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

AWS Lambda 서비스

• 서버 관리 또는 확장 없이 함수 코드를 실행• 함수 실행을 트리거하기 위한 API를 제공• 트리거 시 규모에 상관없이 병렬로 함수가 실행• 함수에 추가 기능을 제공 (로깅, 모니터링)

Page 33: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

함수 네트워킹 환경

기본 - VPC 내에 기본 네트워크환경 제공

• 함수의 인터넷 액세스 상시 허용• VPC 배포 자산 액세스 불가

고객 VPC - 사용자 VPC의 컨텍스트내부에서 함수가 실행

• 사용자 VPC 내에서 다른 리소스와프라이빗 통신

• 익숙한 구성 및 동작:– 서브넷– ENI– EC2 보안 그룹– VPC 라우팅 테이블– NAT 게이트웨이

Page 34: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

PlayOn! 스포츠 - 비디오 스트림 처리

랩톱인코더

HLS

S3 재생

VOD 스트림모바일

클라이언트

CloudFront 스트리밍

라이브 스트림모바일

클라이언트

CloudFront S3 수집

480p 트랜스코드

HQ 사본

360p 트랜스코드

오디오전용

트랜스코드

썸네일

QOS 분석

Lambda 함수 종속 연결

http://www.slideshare.net/AmazonWebServices/arc308-the-serverless-company-using-aws-lambda

Page 35: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

시나리오 #2

우리는 모바일 게임 회사 입니다.초창기 캐주얼 게임으로 크게 성공하고, 중간 중간 소소한 타이틀을 출시 했습니다.실제 매출에 가장 큰 도움이 되는건 아무래도 이벤트를 진행하는 것 이었습니다.하지만 이것도 갈수록 그 효과가 줄어들고 있는 것 같아요. 매출이 줄고 있어요…더욱이 데이터를 기반으로 의사 결정이 중요하다고 하던데…인력도 부족하고 경험도 부족한 상황 입니다.

Page 36: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

떠오르는 생각들

- 이벤트 시스템을 AWS 에서 구현해볼까?- 데이터 분석도 하고 싶은데… 해본적이 없구나…- 그런데 구성해 두면 뭐해, 관리 인력이 부족한데…

Page 37: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

13시 ~ 18시

매일 12시 30분게임 서버 확장

LambdaScheduling

12시 30분

Amazon Elasticsearch

근 실시간분석

LambdaScheduling

매일 13시/18시이벤트 개시/종료

Amazon SNS

푸시 메시지 전송

Lambda

데이터 처리

Amazon S3

데이터 저장

13시/18시 이벤트 개시/종료 à 푸시 메시지 전송 à 데이터 수집 à 저장 à 처리 à 근 실시간 분석

Lambda

스트림 처리

Kinesis Streams

아키텍처 #1

Page 38: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

13시 ~ 18시

매일 12시 30분게임 서버 확장

LambdaScheduling

12시 30분

Amazon Elasticsearch

근 실시간분석

LambdaScheduling

매일 13시/18시이벤트 개시/종료

Amazon SNS

푸시 메시지 전송

Lambda

데이터 처리

Amazon S3

데이터 저장

Kinesis Firehose

아키텍처 #213시/18시 이벤트 개시/종료 à 푸시 메시지 전송 à 데이터 수집 à 저장 à 처리 à 근 실시간 분석

Page 39: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

13시 ~ 18시

매일 12시 30분게임 서버 확장

LambdaScheduling

12시 30분

Amazon Elasticsearch

근 실시간분석

LambdaScheduling

매일 13시/18시이벤트 개시/종료

Amazon SNS

푸시 메시지 전송

KinesisAnalytics

Kinesis Streams

Kinesis Firehose

아키텍처 #313시/18시 이벤트 개시/종료 à 푸시 메시지 전송 à 데이터 수집 à 저장 à 처리 à 근 실시간 분석

Page 40: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

Amazon Kinesis Streams

스트리밍 데이터를 처리하거나 분석하는 커스텀애플리케이션을 개발

Amazon Kinesis: 스트리밍 데이터를 쉽게 이용AWS 에서 실시간 데이터 스트림 관련 작업을 쉽게하는 서비스

Amazon Kinesis Firehose

방대한 볼륨의 스트리밍데이터를 Amazon S3나Redshift로 쉽게 로드

Amazon Kinesis Analytics

표준 SQL쿼리를 이용하여 데이터 스트림을

쉽게 분석

Page 41: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

Amazon Kinesis Streams 는 1초 이하의 처리 지연으로 스트리밍되는 각레코드마다커스텀 처리를 수행하고 선택적으로 스트림 처리 프레임워크들을 사용할 수 있는워크로드에 맞는 서비스

Amazon Kinesis Firehose 는 관리 운영 없이 S3 또는 Redshift 를 기반으로하는기존 분석 툴들을 그대로 사용할 수 있고 60초 또는 그 이상의 데이터 지연을요구하는워크로드에 맞는 서비스

Amazon Kinesis Streams 와 Firehose

Page 42: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

Amazon Kinesis Streams

Easy administration: 스트림 생성, 샤드와 수용량 설정. 데이터 쓰루풋 rate 와볼륨에 맞게끔 확장.

Build real-time applications: Kinesis Client Library (KCL), Apache Spark/Storm, AWS Lambda 등을 활용해 스트리밍 데이터 처리

Low cost: 어떠한 크기의 워크로드에도 비용 효율적

Page 43: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

• Zero administration: 애플리케이션 개발 및 관리 인프라 없이 S3 또는 Redshift로 스트리밍 데이터를 캡처하여 전송

• Direct-to-data store integration: 간단한 설정만으로 스트리밍 데이터를 일괄처리, 압축, 암호화하여 거의 60초 이내에 목적지에 전송

• Seamless elasticity: 특별한 개입없이 데이터 처리량에 맞는 원활한 확장

Firehose 로 스트리밍데이터를 캡처하고 전송

Firehose는 지속적으로 S3 또는 Redshift로스트리밍 데이터를 로드

선호하는 BI 툴들을 사용하여 스트리밍 데이터를 분석

Amazon Kinesis Firehose방대한 양의 스트리밍 데이터를 Amazon S3 나 Amazon Redshift 로 쉽게 로드

Page 44: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

Amazon Kinesis Analytics

Apply SQL on streams: Kinesis Stream 과 Firehose Delivery Stream 에 쉽게연결하여 SQL 기술을 적용.

Build real-time applications: 1초 이내 프로세싱 지연으로 거대한 스트리밍데이터를 지속적으로 처리

Easy Scalability : 데이터 쓰루풋에 맞게끔 탄력적으로 확장

Connect to Kinesis streams,Firehose delivery streams

Run standard SQL queries against data streams

Kinesis Analytics can send processed data to analytics tools so you can create alerts

and respond in real-time

Page 45: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

Amazon Elasticsearch Service 는 클라우드에서 Elasticsearch 클러스터를쉽게 구성하고, 운영하며 확장할 수 있는 관리형 서비스

쉽게클러스터를구성하고설정을 관리

IAM 를 통한 보안Amazon CloudWatch를통한 모니터링

CloudTrail 을 통한 감사

AWS 서비스들과 통합 가능CloudWatch Logs, Amazon DynamoDB,

Amazon S3, Amazon Kinesis

ELK 를 지원

Amazon Elasticsearch Service

Page 46: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

이벤트 기간내 Top 10 결제 유저

이벤트 스테이지에서 결제 발생 횟수 및 금액

스테이지별 결제 발생 횟수 (녹색: 이벤트 스테이지)

이벤트 대상 아이템 획득 횟수

전체 아이템 획득 횟수(3: 이벤트 아이템)

스테이지별 클리어 성공 및 실패 횟수

Page 47: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

그 이외에도

로그 정리 작업통계를 위한 배치 작업알람 작업인프라 자동화 작업

Page 48: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

시나리오 #2

우리는 모바일 게임 회사 입니다.초창기 캐주얼 게임으로 크게 성공하고, 중간 중간 소소한 타이틀을 출시 했습니다.실제 매출에 가장 큰 도움이 되는건 아무래도 이벤트를 진행하는 것 이었습니다.하지만 이것도 갈수록 그 효과가 줄어들고 있는 것 같아요. 매출이 줄고 있어요…더욱이 데이터를 기반으로 의사 결정이 중요하다고 하던데…인력도 부족하고 경험도 부족한 상황 입니다.

: 서버없이, 자동화로 인력 부족 해소 및 장애 요인 최소화: 많이 사용되는 스택을 관리형으로 사용하여 경험 부족을 채움: 근 실시간으로 데이터를 분석하여 의사 결정에 활용

Page 49: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

시나리오 #3

전 개발자에요.저희 서비스는 잘 동작하고 있어요. 건들고 싶지 않아요.그런데 단 하나 불만이 있는데요.서비스에 기능이 추가되기 전 테스트를 하려면 다양한 환경이 필요한데,그런 환경 구성이 쉽지 않네요. 여유 리소스도 없고 시간도 필요 하고…또, 간단한 웹 기반 툴 만들어서 팀이랑 같이 쓰려니 어디에다 해야 할지...개발 서버는 개발 테스트 용이라 힘들고, 제 컴퓨터를 항상 켜둘 수는 없고…

Page 50: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

떠오르는 생각들

- AWS 에서는 다양한 환경을 순식간에 구성할 수 있다고 하던데?- 그런데 간단한 웹 기반 툴을 위해 서버를 유지해야 할까?- 그것도 안 쓸 땐 돈만 나가는데…

Page 51: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

SPPutPaste

웹 브라우저

Amazon S3

동적 콘텐츠

정적 콘텐츠

AmazonDynamoDB

간단한 웹 기반 툴: Serverless Pastebin (gist)

Amazon API Gateway

ServerlessPastebin

- pid- content- created_at

SPGetPaste

SPUpdatePaste

SPDeletePaste

모바일

/pastePOSTOPTIONS/{id}POSTGETPUTDELETEOPTIONS

AmazonRoute 53

s3://serverless.piljoong.com

Page 52: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

Amazon API Gateway

Page 53: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

API의 완전 관리형 서비스

생성 구성 게시

보관 모니터링 보안

Page 54: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

Amazon API Gateway

RESTful API 들을 생성, 배포, 유지,관리

63 개의 엣지 로케이션을 가진 콘텐츠전송 네트워크를 활용

DDoS 방어와 쓰로틀링 기능 제공

API 스테이징 가능 (dev, test, prod 등)

AWS Lambda

Amazon API Gateway

Amazon EC2

AWS API

On-prem server

Page 55: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

시나리오 #4

AWS Lambda 로 좋아 졌다는 말들은 많이 들었어요.그래도 프로덕션에 적용하기는 위험하지 않을까 합니다. (팀장님이 그래요…)

Page 56: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

떠오르는 생각들

- 실제 서비스일 필요는 없지 않을까?- 테스트, 관리 등등에서 활용할 수 있지 않을까?

Page 57: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

https://goad.io/

Page 58: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

https://goad.io/

Page 59: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

참고:

AWS 부하 테스트와 관한 정보는

http://bit.ly/LoadTestingOnAWS

Page 60: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

시나리오 #5

저희는 모바일 애플리케이션을 서비스 하고 있습니다.UX 가 강점이고, 아이디어가 좋다는 평가가 많아요.그런데, 무엇이 문제인지 비지니스 관점에서 성적이 좋지 못 해요.특히나 실제 사용자(DAU)는 많은데 이상하네요…

Page 61: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

떠오르는 생각들

- 사용자가 원하는게 무엇이고, 어떤 행동 패턴을 보이는지 알면 도움이 될까?- 모바일 개발자는 여유가 있지만, 백엔드 개발자는 부족한데..- 데이터 분석은 뭘 해야 하는거지?

Page 62: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

Amazon Mobile Analytics

확장성과 Free Tier

상관 있는 지표에 집중.60분 동안 가용한 사용

리포트

빠름

매일 수백만 사용자로부터 생성되는 수억개의

이벤트를 수용할 수있는 확장성

데이터를직접 소유

”규모와 상관 없이 앱 사용 데이터를 쉽게 수집, 가시화, 이해를 위한 서비스”

수집된 데이터는공유되지 않으며,재사용되지 않음

Page 63: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

Key Business Metrics (with one line of code)

1. Monthly Active Users (MAU)

2. Daily Active Users (DAU)

3. New Users, 4. Daily Sessions, 5. Sticky Factor, 6. 1-Day Retention, 7. Avg. Revenue per DAU, 8. Daily Paying Users,9. Avg. Paying DAU

Page 64: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)
Page 65: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

사용자가 행한 특정 행동으로 앱에 대한행동의 통찰력을 얻을 수 있음

얼마나 자주 Custom Event 가 발생하였고,Attribute 와 Metric 의 추가 정보를 포함한리포트를 제공

예제

좋아요/공유 횟수를추적

레벨별 사용자의플레이 중지 비율에

대한 이해

사용자 세션별 음악이재생된 횟수

In-app 아이템의인기도

Custom Events

Page 66: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

Mobile Analytics 초기화

// Within your activityprivate static MobileAnalyticsManager analytics;

// Within your activity onCreate()try {

AnalyticsConfig options = new AnalyticsConfig();options.withAllowsWANDelivery(true);analytics = MobileAnalyticsManager.getOrCreateInstance(

getApplicationContext(),"YOU MOBILE ANALYTICS APP ID",Regions.US_EAST_1,cognitoProvider, // You need a Cognito credential provideroptions

);} catch(InitializationException ex) {

Log.e(this.getClass().getName(), "Failed to initialize Amazon Mobile Analytics", ex);}

Page 67: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

Activity Lifecycle 관리

@Overrideprotected void onPause() {

super.onPause();if(analytics != null) {

analytics.getSessionClient().pauseSession();// Attempt to send any events that have been recorded to the Mobile Analytics service.analytics.getEventClient().submitEvents();

}}

@Overrideprotected void onResume() {

super.onPause();if(analytics != null) {

analytics.getSessionClient().resumeSession();}

}

Page 68: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

Custom Event 기록

public void onLevelComplete(String level, String difficulty, double timeToComplete, int playerState) {

// Create a Level Complete event with some attributes and metrics(measurements)// Attributes and metrics can be added using with statementsAnalyticsEvent levelCompleteEvent = analytics.getEventClient().createEvent("LevelComplete")

.withAttribute("LevelName", levelName)

.withAttribute("Difficulty", difficulty)

.withMetric("TimeToComplete", timeToComplete);

// attributes and metrics can also be added using add statementsif (playerState == STATE_LOSE)

levelCompleteEvent.addAttribute("EndState", "Lose");else if (playerState == STATE_WIN)

levelCompleteEvent.addAttribute("EndState", "Win");

// Record the Level Complete eventanalytics.getEventClient().recordEvent(levelCompleteEvent);

}

this.onLevelComplete(”Taipei Hotpot Hotspot", "Very Difficult", 2734, STATE_WIN);

Page 69: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

Monetization Event 기록

EventClient eventClient = mobileAnalyticsManager.getEventClient();

// create a builder that can record purchase events for Amazon IAPAmazonMonetizationEventBuilder builder = AmazonMonetizationEventBuilder.create(eventClient);Event purchaseEvent = builder.withProductId(purchasedItem.getSku())

.withFormattedItemPrice(purchasedItem.getPrice())

.withQuantity(1).build();

eventClient.recordEvent(purchaseEvent);

// create a builder that can record purchase events for Google Play IAPGooglePlayMonetizationEventBuilder builder = GooglePlayMonetizationEventBuilder.create(eventClient); Event purchaseEvent = builder.withProductId(sku)

.withFormattedItemPrice(price)

.withTransactionId(purchase.getOrderId())

.withQuantity(1).build();

eventClient.recordEvent(purchaseEvent);

MonetizationEventBuilder

AmazonMonetizationEventBuilderCustomMonetizationEventBuilderGooglePlayMonetizationEventBuilderVirtualMonetizationEventBuilder

Page 70: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

S3 로 추출 후 다양한 방법으로 분석

Mobile Client

Amazon S3

Amazon Redshift

Amazon Mobile Analytics

Hadoop/SparkAmazon EMR

Amazon Glacier

Archive

Batch

Page 71: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

Query And Visualize Data

Mobile Client

Amazon S3

Amazon Redshift

Amazon Mobile Analytics

Augment Your Data

External Data

S3 로 추출 후 Redshift 적재 및 가시화

Page 72: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

시나리오 #6

저희는 모바일 애플리케이션 개발을그냥 처음부터 다 AWS 에서 하고 싶어요!

Page 73: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

사용자 인증

접근 제어

사용자 행동 분석

콘텐츠 저장 및 공유

데이터 동기화

미디어 전송

공유 데이터 저장

실 시간 데이터 스트림비지니스 로직 수행

푸시 알림 전송

사용자와 인증 제공관리

클라우드 리소스에안전하게 접근

디바이스 간의사용자 설정 동기화

활성 유저,인게이지먼트 추적

서버 없이 상태 없는커스텀 코드 실행

사용자 제작 사진과 미디어저장 및 공유

모바일 디바이스 자동 인지콘텐츠를 빠르게 글로벌로 전송

메시지를 전송하여사용자 인게이지먼트 레벨 향상

사용자와 디바이스 간NoSQL 데이터를 빠르게 저장 및 쿼리

실 시간 클릭스트림 로그 수집 및빠르게 동작 수행

TYCOON

麻辣火鍋

Page 74: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

TYCOON

麻辣火鍋사용자 인증

접근 제어

사용자 행동 분석

데이터 동기화

Amazon Mobile Analytics

Amazon Cognito (Sync)

AWS Identity and Access Management

Amazon Cognito(Identity)

콘텐츠 저장 및 공유

미디어 전송

Amazon S3

Amazon CloudFront(Device Detection)

공유 데이터 저장

Amazon DynamoDB

Amazon Lambda

푸시 알림 전송Amazon SNS Mobile Push

AWS Mobile SDK실 시간 데이터 스트림비지니스 로직 수행

Amazon Kinesis

Page 75: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

그 이외에 Lambda 활용 방안

Page 76: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

Lambda를 활용하여 CloudTrail 로그 감사

AWS Lambda

Amazon S3Amazon CloudTrail

Amazon SNS

AWS IAM

Page 77: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

Lambda를 활용하여 인프라 운영 자동화

AWS Lambda

Amazon SNS

Amazon CloudWatch Alarm

ec2runInstance

ecsstartTask

beanstalkupdateApp

kinesissplitShard

Any API call

https://aws.amazon.com/blogs/compute/scaling-amazon-ecs-services-automatically-using-amazon-cloudwatch-and-aws-lambda/

Page 78: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

Lambda를 활용하여 Lambda function 배포

https://aws.amazon.com/blogs/compute/dynamic-github-actions-with-aws-lambda/

AWS Lambda

Amazon SNS

GitHub Repo

lambda createFn ()

Page 79: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

Serverless 아키텍처 패턴

Page 80: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

마이크로서비스

Page 81: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

모바일 백엔드

Page 82: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

실시간 분석 엔진

Page 83: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

> 정리

Page 84: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

AWS 활용 = Building Block 조립

작은 서비스 구축에 적절한다양한 서비스들을 유연하게 조립하여 활용

Page 85: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

무엇이든 구축해 보세요!

Amazon API Gateway

AWS Lambda AmazonDynamoDB

Page 86: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

참고자료는 여기에!

https://aws.amazon.com/ko/https://aws.amazon.com/ko/new/https://aws.amazon.com/ko/blogs/aws/http://aws.amazon.com/ko/documentation/https://aws.amazon.com/ko/whitepapers/https://twitter.com/awskorea

Page 87: 찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)

감사합니다!