54
모바일을 위한 (AWS) 클라우드 기술동향 윤석찬 테크에반젤리스트 아마존웹서비스 코리아 AWSKRUG 4회 정기 세미나

모바일을 위한 (AWS) 클라우드 기술 동향

Embed Size (px)

Citation preview

Page 1: 모바일을 위한 (AWS) 클라우드 기술 동향

모바일을 위한 (AWS) 클라우드 기술동향

윤석찬 테크에반젤리스트 아마존웹서비스 코리아

AWSKRUG    4회 정기 세미나  

Page 2: 모바일을 위한 (AWS) 클라우드 기술 동향

User  Applica2on  

Applica2on  Service  

Middleware  Service  

Language  Interpreter  

Opera2ng  System  

Host  

개발에만 집중하세요! 클라우드컴퓨팅이란?

Page 3: 모바일을 위한 (AWS) 클라우드 기술 동향

폭넓은 서비스 분야 및 전문성

데이터 분석

데이터 웨어하우스

배치 분석 Hadoop

실시간 분석

데이터 파이프라인

머신러닝

보안 및 관리 사설네트웍(VPC)

인증및 접근제어

암호화 및 키관리

자동화 인프라관리

모니터링 로그/감사

데디케이트 서비스

인프라 및 핵심 서비스 리전 가용영역 컴퓨팅 네트워킹 콘텐츠배포 데이터베이스 (RDS/NoSQL/캐싱)

스토리지 (객체/볼륨/백업))

문서 공유 및 협업

가상 데스크톱

디렉토리 카탈로그

비지니스

이메일

스토리지 게이트웨이

엔터프라이즈

통합 인증

기존망 연결

백업/재해복구

배포 서비스

통합관리

하이브리드 지원 모바일 서비스

데이터 싱크

모바일 분석

푸시 알림

모바일 백엔드

소셜 인증

개발 배포 관리

소스 콘트롤

콘테이너 서비스

배포 도구

빌드 도구

데브옵스

큐 서비스

워크플로

앱 스트리밍

이메일 전송

검색 서비스

모바일 테스트

동영상 변환

API 관리

이벤트기반 컴퓨팅

도메인 네임관리

애플리케이션 서비스

지역별 영업 조직

파트너 생태계

프로페셔널 컨설팅

빌링 및 비용 관리

솔루션즈 아키텍트 기술 지원 교육 및

자격 인증 기술 및 영업 지원

Page 4: 모바일을 위한 (AWS) 클라우드 기술 동향

v  어떻게 모바일 앱을 특별(Unique)하게 만들것인가?

시간은 어디에 더 집중해서 써야 할까?

==  

모바일 개발 … 중요한 점은…

Page 5: 모바일을 위한 (AWS) 클라우드 기술 동향

v  Your

Mobile App

사용자 인증

사용자 권한 부여

사용자 행동 분석

미디어의 저장 및 공유

인증정보 단말간 공유

미디어 전송

공유 데이터의 저장

실시간 데이터 스트림 처리

재방문 추적

푸시 알림 전송 모바일앱 요구사항

Page 6: 모바일을 위한 (AWS) 클라우드 기술 동향

Amazon Cognito Amazon Mobile Analytics Amazon SNS Mobile Push

Amazon Kinesis Recorder

DynamoDB Mapper

S3 Transfer Manager

SQS Client Amazon SES Client

AWS 글로벌 인프라

핵심 빌딩 블럭 클라우드 서비스

모바일 최적화 커넥터

모바일 최적화 서비스

모바일 앱, 게임, IoT 디바이스 AWS 모바일 SDK, API 엔드포인트, AWS 관리 콘솔

컴퓨팅 스토리지 네트워크 데이터 분석 데이터베이스

통합 SDK

AWS Lambda

Lambda Functions

λ λ λ λ

AWS 모바일 빌딩 블럭

Page 7: 모바일을 위한 (AWS) 클라우드 기술 동향

v  

AWS Mobile SDK

Amazon Mobile Analytics

Amazon Cognito (Sync)

AWS Identity and Access Management

Amazon Cognito (Identity Broker) Amazon S3

Transfer Manager

Amazon CloudFront (Device Detection)

Amazon DynamoDB (Object Mapper)

Amazon Kinesis (Recorder)

Amazon Mobile Analytics

Amazon SNS Mobile Push

Your Mobile App

사용자 인증

사용자 권한 부여

사용자 행동 분석

미디어의 저장 및 공유

인증정보 단말간 공유

미디어 전송

공유 데이터의 저장

실시간 데이터 스트림 처리 재방문 추적

푸시 알림 전송

AWS Mobile SDK

Page 8: 모바일을 위한 (AWS) 클라우드 기술 동향
Page 9: 모바일을 위한 (AWS) 클라우드 기술 동향

v  

Amazon Cognito 소개

간단한 인증 방식 제공 및 접

근 관리

모바일 및 AWS 전체 서비스에 적용 가능한 안전한 아이덴티티 관리

가장 안전한 베스트 프랙티

스 적용

다양한 소셜 로그인 방식을 통해 쉽게 로그인 가능

Guest Your own Auth

디바이스 및 플랫폼간 데이터

동기화

디바이스 및 플랫폼 관계 없이 사용자 인증 및 데이터

동기화

Page 10: 모바일을 위한 (AWS) 클라우드 기술 동향

v  

Amazon Cognito: 인증 체계도

Iden2typool  

Iden2ty  Providers  

같은 보안 정책을 공유하는 아이덴티티풀

Access  Policy   Access  to  AWS  Services  iden2typool  

Unauthen2cated  Iden22es  

authen2cated  iden22es  

AWS IAM Roles

AWS  Account  

웹 아이덴티티풀

S3

DynamoDB

Get Delete Put

Page 11: 모바일을 위한 (AWS) 클라우드 기술 동향

단계1: Identity Pool 생성

Page 12: 모바일을 위한 (AWS) 클라우드 기술 동향

단계2: 기본 IAM Role 생성

Page 13: 모바일을 위한 (AWS) 클라우드 기술 동향

v  

단계3: SDK 다운로드 및 샘플 코드 적용

Page 14: 모바일을 위한 (AWS) 클라우드 기술 동향

v  

Amazon Cognito: 동기화 기능 예제

CredentialsProvider 및 CognitoClient 초기화

데이터 동기화

원하는 데이터 셋이나 키/값 설정

provider = new CognitoCachingCredentialsProvider (context, AWS_ACCOUNT_ID, COGNITO_POOL_ID, COGNITO_ROLE_UNAUTH, COGNITO_ROLE_AUTH, Regions.US_EAST_1);

cognito = new CognitoSyncManager (context, Regions.US_EAST_1, provider);

dataset.synchronize(new SyncCallback(){..});

cognito.openOrCreateDataset(datasetName); dataset.put(key, value);

Page 15: 모바일을 위한 (AWS) 클라우드 기술 동향

v  

DataSet *dataset = [syncClient openOrCreateDataSet:@"myDataSet"]; NSString *value = [dataset readStringForKey:@"myKey"]; [dataset putString:@"my value" forKey:@"myKey"];  

AWSCognitoSyncClient *syncClient = [[AWSCognitoSyncClient alloc] initWithConfiguration: configuration];  

[dataset synchronize];

Amazon Cognito: 동기화 기능 예제

CredentialsProvider 및 CognitoClient 초기화

데이터 동기화

원하는 데이터 셋이나 키/값 설정

Page 16: 모바일을 위한 (AWS) 클라우드 기술 동향

v  

Page 17: 모바일을 위한 (AWS) 클라우드 기술 동향

v  

Amazon Mobile Analytics

비용이 저렴하다!

다양한 통계 분석을 60분 이내에 수행 가능

빠르다!

수백만의 사용자로 부터 오는 수십억건 데이터도

무료로 분석 가능!

데이터는 나의 것!

“간단하고도 비용 효율적인 모바일 앱 분석 도구”

수집된 데이터는 모두 자신의

AWS 자원에 저장!

Page 18: 모바일을 위한 (AWS) 클라우드 기술 동향

v  

주요 지표 (한라인코드로만도 추가 가능) 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 19: 모바일을 위한 (AWS) 클라우드 기술 동향

v  

고객 유지(User Retention) 마케팅 이벤트 및 UI 변경, 신기능 추가 등에 대한 사용자 반응을 신속하게 체크 가능

Page 20: 모바일을 위한 (AWS) 클라우드 기술 동향

v  

Mobile Analytics 적용 코드 예제

앱 코드에서 MobileAnalyticsManager 초기화

별도 원하는 추가 이벤트 수집의 경우 선언

OnResume() 혹은 OnPause() 추가

private static MobileAnalyticsManager analytics; analytics = MobileAnalyticsManager.getOrCreateInstance( this.getApplicationContext(),"yourCompany.yourAppId",

Regions.YOUR_REGION, config, cognitoProvider );

EventClient eventClient = analytics.getEventClient(); MobileAnalyticsEvent visitEvent = eventClient.createEvent("speedSet"); eventClient.recordEvent(visitEvent);

analytics.getSessionClient().resumeSession(); analytics.getSessionClient().pauseSession(); Analytics.getEventClient().submitEvents();

Page 21: 모바일을 위한 (AWS) 클라우드 기술 동향

v  AWSMobileAnalytics 객체 초기화! AWS 관리 콘솔에서 확인 가능

이벤트 전송. 만약 호출되지 않으면 주기적으로 자동 호출

커스텀 이벤트 추가 하기

[eventClient submitEvents];

id<AWSMobileAnalyticsEventClient> eventClient = analytics.eventClient; id<AWSMobileAnalyticsEvent> level1Event = [eventClient createEventWithEventType:@"level1Complete"];

AWSMobileAnalytics* analytics = [AWSMobileAnalytics defaultAWSMobileAnalyticsWithIdentifier:@"someuniqueid"];

Mobile Analytics 적용 코드 예제

Page 22: 모바일을 위한 (AWS) 클라우드 기술 동향

v  

서드파티를 활용한 시각화

mobile client

Amazon S3

Amazon Redshift

Amazon Mobile Analytics

외부 데이터  

Page 23: 모바일을 위한 (AWS) 클라우드 기술 동향
Page 24: 모바일을 위한 (AWS) 클라우드 기술 동향
Page 25: 모바일을 위한 (AWS) 클라우드 기술 동향

v  

Amazon SNS Cross-platform

Mobile Push

Internet

Apple APNS

Google GCM

Amazon ADM

Windows WNS and MPNS

Baidu CP

With Amazon SNS, developers can

send push notifications on

multiple platforms and reach mobile users around the

world

Amazon SNS 모바일 푸시

Android Phones and Tablets

Apple iPhones and iPads

Kindle Fire Devices

Android Phones and Tablets in China

iOS

Windows Desktop and Windows Phone Devices

Page 26: 모바일을 위한 (AWS) 클라우드 기술 동향

단계1: 토픽(Topic) 생성

Page 27: 모바일을 위한 (AWS) 클라우드 기술 동향

단계2: 애플리케이션(Application) 등록

Page 28: 모바일을 위한 (AWS) 클라우드 기술 동향

단계3: SDK 다운로드 및 샘플 코드 적용

Page 29: 모바일을 위한 (AWS) 클라우드 기술 동향

철수 영희 민수

Amazon DynamoDB Connector: Object Mapper

•  지연 속도 없이 빠르게 데이터 추가 및 높은 성능을 가진 DynamoDB를 앱에서 간단한 코드로 접근 가능

•  모바일 클라이언트 데이터를 그대로 싱크 가능

•  멀티 디바이스에서 쉽게 이용 가능

게임 점수  

철수   1500  

영희   800  

민수   750  

Page 30: 모바일을 위한 (AWS) 클라우드 기술 동향

v  

S3 Connector: 모바일 전송 관리

S3 Connector

멀티 파트 데이터 업로드(photos, videos, audio) 빠른 다운로드(e.g. assets) 자동 재시작 중단/재시작/취소 기능 제공 네이티브 OS 친화적

앱스토어 출시 사이클과 상관 없이 동적으로 자원을 업데이트할 수 있었으며, 170MB가 넘는 다바이스별 이미지를 모바일에서 직접 다운르도하여 서버 확장성을 고려할 필요가 없이 더 품질 높은 고해상도 이미지 전송도 가능

Amazon S3 connector를 통해 동적으로 게임 자원을 백그라운드로 다운로드

하여 사용자 경험이 늘어났습니다. Douglas Hare CEO, Outplay Entertainment

Page 31: 모바일을 위한 (AWS) 클라우드 기술 동향

v  

S3 이미지 관리 예제 // Creating the transfer manager TransferManager transferManager = new TransferManager(credentialProvider); // Upload image Upload upload = transferManager.upload(BUCKET_NAME, fileName, file); // Download image Download = transferManager.download(BUCKET_NAME, mKey, file); // Pause, and Resume try { PersistableDownload persistableDownload = download.pause(); //do something if we didn’t abort } catch(PauseException e) { //do something if we aborted }

download = transferManager.resumeDownload(persistableDownload);

Page 32: 모바일을 위한 (AWS) 클라우드 기술 동향

v  

Amazon Kinesis

Amazon Redshift

Kinesis enabled Apps on

EC2

AWS Mobile SDK

Amazon Kinesis Connector for Mobile Apps For sophisticated

User Behavior Real-time Analysis

Amazon Kinesis를 통해 실시간 사용자 액션을 직접 모바일로 전송하여 분

석 할 수 있었습니다.

“ Amazon EMR

Page 33: 모바일을 위한 (AWS) 클라우드 기술 동향

v  

AWS Mobile SDK

Amazon Mobile Analytics

Amazon Cognito (Sync)

AWS Identity and Access Management

Amazon Cognito (Identity Broker) Amazon S3

Transfer Manager

Amazon CloudFront (Device Detection)

Amazon DynamoDB (Object Mapper)

Amazon Kinesis (Recorder)

Amazon Mobile Analytics

Amazon SNS Mobile Push

Your Mobile App

사용자 인증

사용자 권한 부여

사용자 행동 분석

미디어의 저장 및 공유

인증정보 단말간 공유

미디어 전송

공유 데이터의 저장

실시간 데이터 스트림 처리 재방문 추적

푸시 알림 전송

AWS Mobile SDK

비지니스 로직/기능

AWS Lambda

Page 34: 모바일을 위한 (AWS) 클라우드 기술 동향
Page 35: 모바일을 위한 (AWS) 클라우드 기술 동향

AWS Lambda: 이벤트 기반 코드 실행 (서버 없이)

유연한 자동 확장 서버 설치 불필요 실행 시간에 따라 과금

프로그램 코드

“서버 없이도 클라우드 기반 무상태(Stateless) 함수 실행”

Stream processing

Data triggers

Serverless backend

Mobile/IoT Indexing &

synchronization

Page 36: 모바일을 위한 (AWS) 클라우드 기술 동향

단계1: Lambda 함수 만들기

Page 37: 모바일을 위한 (AWS) 클라우드 기술 동향

단계2: 테스트 해보기

Page 38: 모바일을 위한 (AWS) 클라우드 기술 동향

v  

단계3: 실행 결과 디버깅

Page 39: 모바일을 위한 (AWS) 클라우드 기술 동향

활용 예제: Data Triggers-Mobile Backend

AWS  Lambda  

λ  Amazon  Cognito  User  data  change  

Send  SNS  no2fica2ons  

Update    DynamoDB  

Table  

Page 40: 모바일을 위한 (AWS) 클라우드 기술 동향

v  

다양한 활용 예제 • S3에 ZIP 파일 업로드시 자동 압축 해제 하기 • S3에 동영상 파일 업로드시 인코딩 하기 • S3에 XLS 파일 업로드시 DynamoDB로 저장하기 • S3에 정적 블로그 호스팅 하기 • Node.js 문자 인식 라이브러리로 이미지내 문자 인식하기 • Node.js 크롤러를 이용한 간단한 웹 크롤러 개발하기 • Node.js 활용 Cron Job 만들기

hNps://github.com/awscodes/lambda-­‐snippet    

Page 41: 모바일을 위한 (AWS) 클라우드 기술 동향

v  

예제: LambdaChat

•  예제: http://lambda-chat.s3-website-us-east-1.amazonaws.com/ •  코드: https://github.com/cloudnative/lambda-chat

Page 42: 모바일을 위한 (AWS) 클라우드 기술 동향

Demo

Page 43: 모바일을 위한 (AWS) 클라우드 기술 동향

v  

모바일 활용 전략

SNS Amazon Cognito

Amazon Cognito

Amazon Cognito

SNS

Lambda

Lambda Lambda

Lambda

Any

Analytics S3 + Amazon Redshift

Amazon Kinesis

DynamoDB

Amazon Cognito Amazon

Kinesis Lambda S3

Page 44: 모바일을 위한 (AWS) 클라우드 기술 동향

v  

AWS Mobile SDK

다운로드: http://aws.amazon.com/ko/mobile/sdk

Page 45: 모바일을 위한 (AWS) 클라우드 기술 동향

v  

모바일 빌딩블럭: 사진 공유 앱을 생각해 봅시다!

Page 46: 모바일을 위한 (AWS) 클라우드 기술 동향

v  

AWS Region

AUTHEN

TICATED  (ASSUMED  RO

LE)  

서버없는 모바일 앱 AWS 모바일 서비스 기반

Download  Photos  &  App  Files  

Session  and  Device  Data,  User  Behavior  

Social  Content  (Tagging,  Likes,    Comments,  etc.)   Auto  Export  

Metadata  

Image  Manipula2on  

40      Func2on  Invoked  

Mul2-­‐part  Upload  

User  Login  

Auto  with  Web  Iden2ty  Token  

User  

Friends  

AWS  Mobile  SDK  

Session  &  Photo  Metadata  

Role  Associated  With  Iden2ty  Pool  

AWS  

Lambda  

Amazon  

CloudFront  

Amazon  

Mobile  AnalyBcs  

Amazon  

DynamoDB  

Amazon  

Cognito  

Amazon  

IAM   Amazon  

S3  

Geo  Look  up  

Amazon  

SNS  Mobile    Push  

Amazon  

RedshiH  

Targeted  

Page 47: 모바일을 위한 (AWS) 클라우드 기술 동향

v  

Amazon API Gateway

API 버전 관리

API 트래픽 관리

데이터 캐싱 인증 및 보안 SDK 자동 생성

“확장성과 보안성 높은 API 개발, 관리 모니터링 서비스”

Page 48: 모바일을 위한 (AWS) 클라우드 기술 동향

API Gateway 모식도

Internet

Mobile Apps

Websites

Services

AWS Lambda functions

AWS API Gateway

Cache

Endpoints on Amazon EC2

Any other publicly accessible endpoint Amazon

CloudWatch Monitoring

Amazon CloudFront API  Gateway    

Page 49: 모바일을 위한 (AWS) 클라우드 기술 동향

Demo

Page 50: 모바일을 위한 (AWS) 클라우드 기술 동향

v  

실제 기기에서 자동 테스트

안드로이드, iOS 및 Fire OS 지원

앱 및 디바이스 설정 가능

세부 테스트 결과 및 로그 분석

Amazon DeviceFarm

“클라우드를 통해 간단하게 모바일 앱 테스트 가능!”

Page 51: 모바일을 위한 (AWS) 클라우드 기술 동향

Demo

Page 52: 모바일을 위한 (AWS) 클라우드 기술 동향

v  

Amazon Cognito

Mobile Analytics

SNS Mobile Push

Free  Tier:  1  Million  push  messages  every  month    

Free  Tier    (for  first  12  months):  1  Million  syncs/month  +  10GB  of  storage  for  Amazon  Cognito  

Free  Tier:  100  Million  events  every  month        

AWS 모바일 무료 서비스

hNp://aws.amazon.com/mobile    

AWS Lambda

Free  Tier  :  1M  free  requests  per  month    400,000  GB-­‐seconds  of  compute  2me  per  month    

Page 53: 모바일을 위한 (AWS) 클라우드 기술 동향

여기서 선물!

피드백 양식을 작성해 주시면, AWS 무료 크레딧을 보내드립니다!

hNp://bit.ly/awskr-­‐feedback    

Page 54: 모바일을 위한 (AWS) 클라우드 기술 동향

여러분의 피드백을 기다립니다!

•  공식 블로그: http://aws.amazon.com/ko/blogs/korea

•  한국어 공식 소셜 미디어 @AWSKorea  

AmazonWebServices  

AWSKorea  

AWSKorea               ‘좋아요’ 눌러주세요!