효율적 모바일 서비스를 위한 aws 빌딩블럭 - api gateway 및 device farm을...

150
효율적 모바일 서비스를 위한 AWS 빌딩 블럭 Amazon API Gateway 및 AWS Device Farm을 중심으로 월간 웨비나 2015년 8월 26일 금요일 | 오후 3시 http://aws.amazon.com/ko

Upload: amazon-web-services-korea

Post on 21-Jan-2018

6.512 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

효율적 모바일 서비스를 위한 AWS 빌딩 블럭

Amazon API Gateway 및 AWS Device Farm을 중심으로

월간 웨비나 2015년 8월 26일 금요일 | 오후 3시

http://aws.amazon.com/ko

Page 2: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

윤석찬, Tech Evangelist http://twitter.com/channyun http://facebook.com/channyblog http://channy.creation.net

Page 3: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

User  Applica,on  

Applica,on  Service  

Middleware  Service  

Language  Interpreter  

Opera,ng  System  

Host  

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

Page 4: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  Your

Mobile App

사용자 인증

사용자 권한 부여

사용자 행동 분석

미디어의 저장 및 공유

인증정보 단말간 공유

미디어 전송

공유 데이터의 저장

실시간 데이터 스트림 처리

재방문 추적

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

Page 5: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  

모바일 개발자 가라사대… 직면한 문제점 핵심 UX 만드는데도 시간 증가 효율적 백엔드 API 개발 필요 기기 플랫폼 파편화 앱 테스트 및 운영 비용 증가 사용자에게 줄 핵심 기능 구현 시간 저하

앱개발은 만만한 작업이 아니다!

모바일 앱 코드 사용자 인증 및 관리 사용자 데이터 싱크

비동기 커뮤니케이션 활성 디바이스 분석

사용자 행태 분석 사용자 참여 분석

푸시 노티피케이션 사용자 이벤트 기능처리

플랫폼 독립적 모바일 백엔드 데이터 유효성 및 전송

파일 및 미디어 저장 공유 데이터베이스 스토리지

데이터 수집 기타등등…

Page 6: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  

AWS 가라사대… 모바일 앱 코드

사용자 인증 및 관리 사용자 데이터 싱크

비동기 커뮤니케이션 디바이스 대응

푸시 노티피케이션 사용자 이벤트 기능처리

플랫폼 독립적 모바일 백엔드 데이터 유효성 및 전송

파일 및 미디어 저장 공유 데이터베이스 스토리지

데이터 수집 기타등등…

Amazon Mobile Analytics

Amazon SNS Mobile Push

AWS Lambda

Mobile-optimized Connectors (Amazon Kinesis, Amazon S3, Amazon DynamoDB, Amazon SQS)

Amazon Cognito

Page 7: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  

AWS 가라사대…

모바일 앱 관리 서버 없는 모바일 백엔드

API 개발 및 인증 관리 SDK 생성 및 개발자 지원

앱 자동 테스트 품질 관리 향상

다양한 디바이스 대응 AWS Device Farm

Amazon API Gateway

Page 8: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, 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(iOS, Android), API 엔드포인트, AWS 관리 콘솔

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

모바일용 인터페이스

AWS Lambda

Lambda Functions

λ λ λ λ

AWS 모바일 빌딩 블럭

Amazon API Gateway

Amazon Device Farm

Page 9: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  

AWS Mobile SDK

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

Page 10: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, 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 11: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  

Amazon Cognito 소개

간단한 인증 방식 제공 및 접

근 관리

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

가장 안전한 베스트 프랙티

스 적용

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

Guest Your own Auth

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

동기화

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

동기화

Page 12: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, 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 13: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  

Amazon Mobile Analytics

비용이 저렴하다!

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

빠르다!

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

무료로 분석 가능!

데이터는 나의 것!

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

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

AWS 자원에 저장!

Page 14: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, 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 15: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, 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 16: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  

서드파티를 활용한 시각화

mobile client

Amazon S3

Amazon Redshift

Amazon Mobile Analytics

외부 데이터  

Page 17: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, 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 18: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

철수 영희 민수

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

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

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

게임 점수  

철수   1500  

영희   800  

민수   750  

DynamoDB Connector: Object Mapper

Page 19: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  

S3 Connector: 모바일 전송 관리

S3 Connector

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

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

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

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

Page 20: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, 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 21: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  

Amazon Kinesis

Amazon Redshift

Kinesis enabled

Apps on EC2 AWS

Mobile SDK

Kinesis Connector for Mobile Apps For sophisticated

User Behavior Real-time Analysis

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

석 할 수 있었습니다.

“ Amazon EMR

Page 22: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

더 자세한 것은…

hCp://www.slideshare.net/awskorea/kr-­‐webinar-­‐2015-­‐aws-­‐mobile-­‐services    

Page 23: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, 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 24: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)
Page 25: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

AWS Lambda: 이벤트 기반 코드 실행

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

프로그램 코드

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

Page 26: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

활용 예제: Data Triggers-Mobile Backend

AWS  Lambda  

λ  Amazon  Cognito  User  data  change  

Send  SNS  no,fica,ons  

Update    DynamoDB  

Table  

Page 27: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

단계1: Lambda 함수 만들기

Page 28: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

단계2: 테스트 해보기

Page 29: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  

단계3: 실행 결과 디버깅

Page 30: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  

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

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

Page 31: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  

예제: LambdaChat

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

Page 32: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  

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

Page 33: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, 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  Manipula,on  

40      Func,on  Invoked  

Mul,-­‐part  Upload  

User  Login  

Auto  with  Web  Iden,ty  Token  

User  

Friends  

AWS  Mobile  SDK  

Session  &  Photo  Metadata  

Role  Associated  With  Iden,ty  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 34: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

Q: AWS 자원의 이벤트 없이도 AWS Lambda 함수를 실행할 수 있을까?

Q: 모바일 백엔드를 위한

API 관리를 쉽게 할 수 없을까?

Page 35: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

Amazon API Gateway 안전하고 확장 가능한 API 서비스 유지 및 관리를 위한

클라우드 기반 관리형 서비스

Page 36: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

API 관리에 대한 고객 피드백 API 버전 및 단계별 관리 비용이 높다

서드파티 개발자 접근 모니터링에 시간이 많이 든다

인증 관리 및 키 발급 관리도 힘들다.

트래픽이 갑자기 올라가면 확장성 고려를 해야 한다

서버 없이 개발을 하려고 한다면, 솔루션은?

Page 37: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  

Amazon API Gateway 소개 버전 관리 및 출시 단계별 관리 가능 개발자를 위한 API 키 발급 및 관리 용이 API 접근 인증을 위한 Signature Ver.4 지원 백엔드 보호를 위한 요청 모니터링 및 제한 AWS Lambda 활용

Page 38: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  

API Gateway 활용 이점 API 응답을 손쉽게 캐싱해서 제공 Amazon CloudFront를 활용하여 지연 속도 감소 및 DDoS 방어력 향상 iOS, Android 및 JavaScript SDK 자동 제작 Swagger 표준 형식 지원 요청/응답 데이터 변형 가능

Page 39: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, 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 40: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  

API 시작하기 • API 생성하기

• API 리소스 정의하기

• 리소스에 대한 메소드 정의하기 •  REST 호출을 위한 HTTP verb 사용

Pet  Store  

/pets  

/pets/{petId}  •         GET  •         POST  •         PUT  

Page 41: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  

API 배포하기 • API 설정을 원하는 배포 단계에 따라 개별 구성 가능

• 각 단계는 전혀 다른 사용자 및 서비스 환경을 가지게 됨:

•  Dev (e.g., example.com/dev) •  Beta (e.g., example.com/beta) •  Prod (e.g., example.com/prod) •  As many stages as you need

Pet  Store  dev  

beta  

gamma  

prod  

Page 42: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  

API 버전 및 단계별 관리 방법 API  1  (v1)  

Stage  (dev)  

Stage  (prod)  

API  2  (v2)  

Stage  (dev)  

Page 43: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  

맞춤형 도메인 지원 • 소유하고 있는 자체 도메인 사용 가능

• HTTPS 인증서와 함께 API Gateway에 제공

• 자체 도메인명은 API 혹은 각 단계에 지정 가능 •  Beta (e.g., yourapi.com/beta) •  Prod (e.g., yourapi.com/prod)

Page 44: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

API 사용량 측정 및 인증 관리

Page 45: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  

API Key를 통한 사용량 측정 • API keys 생성 지원

• API 및 단계 수준별 접근 제어 가능

• Amazon CloudWatch 로그를 통한 API Key 접근 통계 측정 가능

Page 46: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  

API Key에 대한 바른 인식 및 사용법 • “key”가 보안을 의미하지만, API Key는 앱 코드에 담기므로 보안을 의미 하지 않음

• API keys는 앱 및 사용자 트래픽을 측정하는데에만 사용 필요

• API keys는 더 강력한 인증 메카니즘 안에서 사용해야 함

Page 47: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  

AWS signature version 4 적용 방법 • API 호출을 서명 및 인증하기 위해 AWS signature version 4 활용 가능

•  Amazon Cognito 및 AWS Security Token Service (AWS STS)을 통해 앱에 대한 임시 인증 토큰 생성

• 별도 헤더를 통해 Oauth나 유사한 다른 인증 메카니즘을 사용할 수 있음

•  백엔드로 별도 헤더를 전송하기 위해 API 메소드에 설정 가능

Page 48: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  

Signature version 4를 통한 API 호출 인증

Call login API, no authentication

required

Client API Gateway Backend

/login   AWS Lambda fn_login

User accounts database

Credentials verified

Amazon Cognito developer

authenticated identities

Access and secret key /login  

Receives credentials to sign API calls

Page 49: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

트래픽 제어 및 캐싱 기능

Page 50: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  

API 트래픽 제어 • 백엔드 보호 및 관리를 위해 필요하며, 개발자가 지정한 방속으로 제공 가능 (예: 초단 접속 횟수)

• 제한 트래픽량을 초과할 경우 오류 반환 •  HTTP 429 response

• 자동 생성된 SDK에서 트래픽 제어 처리 가능

Page 51: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  

API 응답 캐싱 지원 • 캐쉬 키 및 API응답에 대한 Time to Live (TTL) 설정가능

• 백엔드 호출 없이 캐싱 아이템 응답 가능

• 캐싱은 설정에 따라 가능하며 0.5 GB - 237 GB 사이

Page 52: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

API 호출 시 워크플로

API 호출 • 캐시에 있는지 확인 • 캐시에 있으면 응답

트래픽설정 • 초당 접근 횟수 측정 • 허가량 초과시 HTTP 429 반환

백엔드 호출 •  AWS Lambda •  AWS EC2 혹

은 외부 자원

Page 53: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

입출력 모델 및 데이터 변환

Page 54: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  

API 모델 • API 모델은 JSON으로 만들어진 호출 및 응답에 대한 표준 스키마

• SDK 생성 혹은 내부 백엔드 API로 입출력 필터링이 필요할 때 사용

• API 내 여러 메소드에서 모델을 재사용 가능

Page 55: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

hCps://github.com/awslabs/aws-­‐apigateway-­‐swagger-­‐importer    

Page 56: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  

입출력 변환 • 데이터 변환에 Velocity 템플릿을 사용

• 출력 결과 필터링 •  테스트나 불필요한 데이터 제거 •  API 성능 향상을 위해 데이터셋 크기 필터링

• GET to POST •  GET 호출로 받은 모든 파라미터를 내부 API 백엔드로 POST로 변환해서 제공 가능

•  JSON to XML •  JSON 입력 결과를 내부 API 백엔드로 XML 변환 가능 •  AWS Lambda로 부터 받은 JSON 결과를 XML로 변환 가능

Page 57: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  

변환 예제: JSON to XML API Gateway Back end

 GET  -­‐  /sayHello  AWS

Lambda fn_sayHell

o

/sayHello  

{ “message” : “hello world” }

<xml> <message> Hello world </message> </xml>

#set($root = $input.path('$')) <xml> <message> $root.message </message> </xml>

Page 58: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

SDK 자동 생성

Page 59: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  

네이티브 SDK 자동 생성 • API 배포(Deployement) 기준에 따라 SDK 자동 생성 가능

• 호출 및 응답 모델이 생성되어 있는 경우, SDK에서 메소드 입출력 처리 가능

• 응답에 대한 트래픽 제한 처리 가능

• AWS 임시 크리덴셜(Signature Version 4 지원)을 기반으로 호출 서명 가능

• 안드로이드, iOS 및 JavaScript 지원

Page 60: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

Demo 1

외부 블로그 RSS Feed를 제공해주는 API 사례

Page 61: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)
Page 62: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)
Page 63: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)
Page 64: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)
Page 65: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)
Page 66: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)
Page 67: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)
Page 68: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)
Page 69: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)
Page 70: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)
Page 71: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)
Page 72: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)
Page 73: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)
Page 74: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)
Page 75: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

Demo 2

API Gateway와 Lambda를 통한 간단한 모바일 백엔드

Page 76: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)
Page 77: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)
Page 78: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)
Page 79: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)
Page 80: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)
Page 81: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)
Page 82: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)
Page 83: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)
Page 84: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)
Page 85: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)
Page 86: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)
Page 87: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)
Page 88: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)
Page 89: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)
Page 90: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

hCps://aws.amazon.com/blogs/compute/the-­‐squirrelbin-­‐architecture-­‐a-­‐serverless-­‐microservice-­‐using-­‐aws-­‐lambda/    

샘플 사례: The SquirrelBin Architecture

Page 91: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  

API Gateway 가격 정책 • 1백만 호출당 $3.50 • AWS Free Tier

•  12개월 동안 월 백만 호출 무상 제공

• 데이터 전송 비용 (표준 AWS 가격) •  $0.09/GB for the first 10 TB •  $0.085/GB for the next 40 TB •  $0.07/GB for the next 100 TB •  $0.05/GB for the next 350 TB

Cache  memory  size  (GB)  

Price  per  hour  (USD)  

0.5   $0.020  1.6   $0.038  6   $0.200  13   $0.250  28   $0.500  58   $1.000  118   $1.900  237   $3.800  

Dedicated  cache  pricing  

Page 92: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  

Amazon API Gateway

API 버전 관리

API 트래픽 관리

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

생성

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

Page 93: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

AWS Device Farm을 통한 모바일 앱 테스트 자동화

Page 94: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  

앱의 품질이 중요하다! •  48%의 사용자 버그나 성능 문제가 있다면 앱

을 삭제한다. •  32%의 사용자 이러한 문제가 발생하면 경쟁

앱을 찾는다. •  이용자 획득 비용은 앱마다 2.74달러로 되어

있으며, 2014년 4월에 비해서 연간 80%증가

Failing  to  meet  mobile  app  user  expectations  -‐‑‒  A  mobile  app  user  survey  from  Dimensional  Research  (2015/3/30)http://go.saas.hp.com/apppulse-‐‑‒mobile-‐‑‒survey  

Mobile  Marketing  Costs  See  Unprecedented  Year-‐‑‒over-‐‑‒Year  Growth,  According  to  the  Fiksu  Indexes  (2015/5/29)https://www.fiksu.com/about/news-‐‑‒releases/fiksu-‐‑‒indexes-‐‑‒mobile-‐‑‒marketing-‐‑‒costs-‐‑‒see-‐‑‒unprecedented-‐‑‒year-‐‑‒over-‐‑‒year-‐‑‒growth  

Page 95: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  

고품질 앱을 제공하는 것이 왜 어렵나? •  대부분의 문제는 기기 스펙에 기인 •  사용자가 갖고 있는 실제 기기와 같은 것

에서 테스트해야함 •  시장에는 많은 디바이스와 OS버전 조합

이 존재 •  대량 테스트 디바이스를 테스트하는 것

은 매우 높은 비용 •  수작업에 의한 테스트는 시간 많이 소요

Open  Signal  -‐‑‒  Android  Fragmentation  Visualized  (2014/8)http://opensignal.com/reports/2014/android-‐‑‒fragmentation/  

Page 96: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  

디바이스/OS의 변화는 가속되는 중 •  사용자가 갖고 있는 Android 기기 종류

는 전년 11,868개에서 , 2014년 8월에는 18,796로 증가

•  Android 사용자의 38%는 Jelly Bean, 39%는 KitKat, 12%는 Lolipop, 10%는 아직 Gingerbread와 Ice Cream Sandwich를 이용

Open  Signal  -‐‑‒  Android  Fragmentation  Visualized  (2014/8)http://opensignal.com/reports/2014/android-‐‑‒fragmentation/  

Android  Developers  (2015/6)http://developer.android.com/intl/zh-‐‑‒CN/about/dashboards/index.html  

Page 97: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  

테스트에 드는 비용 및 복잡성 증가

•  엔터프라이즈 IT테스트와 QA예산 전체 비율은 2012년 18%에서 2014년 26%로 증가했으나, 여전히 35%는 불만족

•  40% IT경영자가 앱을 적절히 테스트할 시간이 부족

•  51% 개발자가 비용과 시간의 제약 때문에 테스트가 힘듬

Capgemini  -‐‑‒  World  Quality  Report  2014-‐‑‒15https://www.capgemini.com/thought-‐‑‒leadership/world-‐‑‒quality-‐‑‒report-‐‑‒2014-‐‑‒15  

77%  of  Mobile  App  Purchasers  Have  Concerns  When  Buying  Mobile  Apps  -­‐  Harris  (2013/8/20)http://www.businesswire.com/news/home/20130820006244/en/77-‐‑‒Mobile-‐‑‒App-‐‑‒Purchasers-‐‑‒Concerns-‐‑‒Buying-‐‑‒Mobile#.Vaz9yaad1N0  

Page 98: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

AWS Device Farm

클라우드 기반 실제 디바이스에서 안드로이드, iOS 및 FireOS 앱 테스트 자동화 서비스

Page 99: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

Android, iOS, Fire OS앱을 올리고 테스트 내용을 설정하

여 디바이스 선택

선택한 디바이스를 병렬적으로 앱을 빠르게 테스트

가능

버그, 성능 등의 문제를 몇분 안에 상세하게 테스트

결과 제공

YOURAPP +

AWS Device Farm AWS클라우드에 호스팅 된 수많은 스마트 폰, 태블릿, 기타의 실제 기기를 통해 빠르게 Android, iOS, Fire OS앱을 테스트 및 품질 향상 가능

Page 100: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

자체 테스트 팜 운영

•  초기 투자/운용에 높은 비용 필요

•  신규 기기 추가와 OS 업데이트 비용

•  기기 사용을 온라인 상태 유지 필요

•  병렬 실행, 데이터 수집, 레포팅 등 자동화를 위한 기반 솔루션에 투자 필요

AWS Device Farm의 장점

AWS Device Farm

•  종량 과금제에 따른 비용 절감

•  신규 기기 및 OS에 빠른 접근 가능

•  AWS 데이터 센터에서 높은 신뢰성과 가용성 보장

•  앱의 품질에만 집중 할 수 있음

Page 101: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

Demo

간단한 모바일 앱 퍼지 테스트

Page 102: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)
Page 103: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)
Page 104: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)
Page 105: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)
Page 106: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)
Page 107: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)
Page 108: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)
Page 109: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)
Page 110: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)
Page 111: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)
Page 112: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)
Page 113: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)
Page 114: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)
Page 115: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)
Page 116: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)
Page 117: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)
Page 118: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

모바일 기기 및 앱 테스트 종류

Page 119: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  

디바이스 종류 •  디바이스 프로파일은 제조 회사/모델/OS버전/통신사를 기준으로 제공 •  AWS데이터 센터에 호스팅 되어 있어 사용자 요구에 따라 확장 가능 •  클라우드 서비스를 위한 충분한 용량 (다수 디바이스 프로파일)을 보유 •  보안 요구 조건을 충족 (예: 루트 권한이 동작않음) •  시장 정보를 바탕으로 기기 선택 및 제공 (새로운 디바이스 지속 추가)

신규 기기 입고 최신 기기를 활용 가능 AWS 데이터센터

Page 120: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  

디바이스 선택 •  호환성 있는 모든 디바이스에서 개별적으로 선택 가능 •  이용하고 싶은 디바이스를 사전에 선택하는 디바이스 풀 작성 가능

주의 기본적인 몇개의 시용 디바이스밖에 이용할 수 없음. 모든 디바이스를 이용하려면 별도 신청이 필요

Page 121: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  

기본 탑재 테스트 종류 •  Fuzz 테스트

Fuzz 테스트는 앱에 여러 사용자 입력(터치, 스와이프, 키보드 입력)을 주고 UI테스트. 이벤트 수, 시간 간격, 무작위 이벤트에 사용되는 랜덤값(seed)를 설정할 수 있다. 테스트후, 같은 랜덤값(seed)을 이용하면 같은 이벤트 재현 가능

•  참고 사항 •  테스트 케이스 없이도 테스트 가능 •  짧은 시간내에 호환성 문제를 파악 가능 •  아래와 같은 테스트 진행 가능

ü  앱 설치/실행 / Fuzz 테스트 / 앱 제거

Page 122: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  

테스트 프레임웍 지원 •  테스트 자동화 프레임웍

•  Appium(JUnit, TestNG) •  Calabash •  JUnit, Espresso, Robotium •  uiautomator •  XCTest(Xcode5∼), KIF 

•  참고사항 •  프로젝트별로 최적인 솔루션을 사용해서 테스트를 만들 수 있다. •  개발 팀과 QA팀에서 요건이 다르더라도 하나의 공통 플랫폼에 통합

수 있다. •  새롭게 출현하는 체제도 지원됨으로써 통합 수 있다.

Page 123: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

https://github.com/appium/sample-‐‑‒code    –  AndroidTest.java

Page 124: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

https://github.com/appium/sample-‐‑‒code    –  AndroidContactsTest.java

Page 125: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

http://calaba.sh/  

Page 126: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  

테스트 케이스를 업로드한 경우…

Page 127: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  

병렬 테스트 •  병렬 테스트 •  선택한 기기로 병렬로 테스트 실행 가능 •  클라우드 기반 충분한 기기 ( 많은 동일한 디바이스 프로파일) 보유 •  디바이스 프로파일 이용이 많아지면 기기마다 큐 대기 •  테스트가 완료되면 기기 기반으로 결과 제공

•  참고사항 •  자동 테스트를 하루 몇 번씩 실행하는 경우 •  자기 자동화 솔루션에서 대량 기기를 병렬 테스트할 수 있는 인프라를 구

축하는 것은 복잡하고 기술적 도전이지만, AWS Device Farm로 있으면 쉽게 구현 가능

Page 128: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  

실제 시나리오를 재현 가능한 환경 설정 가능

•  언어/지역 선택 •  위치 정보(위경도) •  네트워크 상황

•  WiFi, Bluetooth, GPS, NFC

•  추가 데이터 •  다른 앱 설치

Page 129: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

앱 테스트 결과 보기

Page 130: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  

결과 보고

• 각 기기별 상세 정보뿐 아니라 다양한 결과를 담고 있다. •  성공/실패 정보 •  앱 크래시 리포트 •  테스트 로그 •  디바이스 로그 •  스크린샷 •  성능 정보

Page 131: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  

결과 보고 – 원인 조사•  각각의 문제에 대한 상세한 정보 확인 가능

Page 132: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  

결과 보고 – 스크린샷•  테스트 중 얻은 스크린샷을 다양하게 확보 가능

Page 133: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  

결과 보고 – 성능 조사•  테스트에서의 퍼포먼스(CPU, 메모리 이용, 스레드 수)을 조사 가능

Page 134: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  

결과 보고 – 로그 •  테스트에서 만들어진 테스트 로그 확보 가능

Page 135: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  

기존 개발/테스트 워크 플로와 통합 •  AWS관리 콘솔에서 이용 가능 •  Jenkins 플러그 인을 이용하고 Jenkins CI서버에서 이용 가능 •  기타 워크 플로 API 이용 가능

ü  테스트 설정 및 시작, 스크린샷 저장 ü  결과 보고서 다운로드

Page 136: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  

Jenkins 플러그인 •  Jenkins CI서버와 AWS Device Farm을 기능적으로 연계 하는 플러그인

AWS  Device  Farm  Jenkins  Pluginhttps://github.com/awslabs/aws-‐‑‒device-‐‑‒farm-‐‑‒jenkins-‐‑‒plugin  

Page 137: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  

Jenkins 플러그인 •  테스트 결과(스크린 샷 로그 등)을 다운로드하는 것도 가능.

Page 138: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

보안 및 기타 참고사항

Page 139: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  

보안 관련 사항 •  AWS Device Farm과 모든 통신은 SSL 통해 제공 •  테스트가 끝나면 설치된 앱은 모두 제거 •  전화 번호, 추가 계정, 외부 데이터를 포함한 디바이스상의 모든 데이터 삭제 •  AWS 위에 임시 저장된 앱과 파일은 자동적으로 30일 경과후 삭제 •  테스트 중 각 기기는 그 사용자가 점유 •  각 기기는 독립되어 있어 WiFi, Bluetooth 등으로 다른 기기 접속 불가 •  외부 네트워크 접속은 인터넷만 가능하고 다른 기기 접속망은 없음 •  일부 기기에만 테스트 가능 (모든 기기를 이용하려면 별도 신청 필요)

Page 140: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

•  업로드할 수 있는 앱은 최대 4GB까지 •  이용 가능 기기 갯수의 상한은 없으나, 병렬 테스트 최대 5개 까지 가능 •  Wi-Fi에 의한 인터넷 접속은 가능 •  통신사 연결이나 전화 발신 SMS 송신 불가 •  카메라를 통한 사진을 찍을수는 있으나 기기 설치 환경상 블랙 이미지 •  안드로이드의 경우 Google Play서비스는 있으나 실계정 연동은 안됨 •  제조 업체와 통신사의 최소 기본앱만 설치되어 있음 •  PhoneGap, Titanium, Xamarin, Unity 등의 하이브리드앱도 제공

기타 참고 사항

Page 141: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

활용 방법

Page 142: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  

기업 형태별 활용 사례 •  엔터프라이즈 및 대형 업체

ü  모든 모바일 비즈니스에 활용할 수 있는 플랫폼 ü  자비로 자동화 솔루션을 구축/운용할 필요 없음 ü  새로운 기기에 대한 빠른 대응 가능

•  중소 규모 업체 ü  테스트하지 못했던 기기에 대한 대응 가능 ü  수작업이 아닌 자동화를 통한 효율적 테스트 가능

•  SI업체 및 컨설팅 기업 ü  외부 개발 서비스를 제공하기 위한 플랫폼 활용 ü  재사용 가능한 기술과 자산 구축을 통한 비지니스 확대

Page 143: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  

활용 로드맵 •  기존 자동 테스트 이용 혹은 계획중 •  더 많은 기기에 테스트 활용 필요 •  직접 기기 및 QA룸을 운영하고 싶지 않을 때

•  → Device Farm 프레임웍 기반 테스트 진행

•  아직 테스트 자동화를 이용하지 않음 •  테스트 스크립트를 작성하는 자원 부족 •  앱 테스트를 위한 자원 부족

→ Device Farm Fuzz 테스트 진행

Page 144: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

이용 요금

Page 145: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  

이용 요금 •  종량 과금

테스트에 필요한 Device Minutes에 의해서 결정 •  즉, 디바이스 사용 시간에 따라 과금 •  무료 한도:250 Device Minutes •  이후: 1 Device Minute 0.17달러

•  정액 요금 •  1개 장치에 월 250달러

•  정액으로 디바이스 활용 가능 •  서브 스크립션을 변경하지 않아도 언제든지 수많은

Android장치에서 필요한 디바이스를 선택 가능

Page 146: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  

2개 기기 실제 정액 요금 병렬 테스트

시간 1

3 4

종량 요금

월간 250×2=$500

Page 147: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  

실제 기기에서 자동 테스트

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

앱 및 디바이스 설정 가능

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

Amazon DeviceFarm

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

Page 148: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

•  클라우드 기반의 Android, iOS, Fire OS 실제 장치에서 테스트 진행 가능 •  주요 테스트 프레임워크 활용 가능 •  기본 탑재된 Fuzz 테스트 활용 가능 •  병렬 테스트를 통해 짧은 시간에 결과 도축 •  실제 시나리오 재현을 위한 테스트 환경 설정 가능(언어, 위치 및 기기 상태) •  테스트 결과 확보 가능 (스크린 샷, 디바이스 로그, 성능 데이터 등) •  Jenkins 지속적 통합(CI)과 다른 워크 플로우의 일부로 테스트를 실시 가능

AWS Device Farm 요약

Page 149: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

v  

Amazon Cognito

Mobile Analytics

SNS Mobile Push

Free  Tier:  1  Million  push  messages  every  month    

Free  Tier    1  Million  syncs/month  +  10GB  of  storage  for  Amazon  Cognito  

Free  Tier:  100  Million  events  every  month        

AWS 모바일 무료 서비스

hCp://aws.amazon.com/mobile    

AWS Lambda

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

AWS Device Farm

Free  Tier  :  250  Device  minutes  per  month    

Page 150: 효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)

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

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

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

AmazonWebServices  

AWSKorea  

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