Category: AWS Mobile Hub


Parse 서비스의 AWS 마이그레이션 정보

최근  Parse 서비스 중단 소식으로 인해 모바일 개발자들에게 다른 대안으로서 도움을 드리고자, AWS 서비스를 활용하는 방법에 대한 준비를 시작하였습니다. 아래에는 몇 가지 도움이 될 만한 문서 및 동영상을 준비했으니 참고하시기 바랍니다.

  • Migrate From Parse Push to Amazon SNS: 이 자습서는 Parse에서 데이터를 내보내고, APNS 및/또는 GCM 자격 증명을 검색하고, AWS 리소스 및 Mobile Hub 프로젝트를 생성하고, 데이터를 가져오고, Amazon SNS 주제를 게시 및 구독하도록 코드를 수정하는 방법을 설명합니다.
  • How to set up Parse Server on AWS using AWS Elastic Beanstalk: Parse 서버가 포함된 환경을 설정하는 방법을 보여줍니다. MongoLab(MongoDB의 호스팅된 버전)을 사용하거나 자신만의 환경을 설정할 수 있습니다.
  • Parse Analytics to Mobile Analytics: Parse 데이터 분석에 대한 대안으로 검토할 수 있도록 Amazon Mobile Analytics를 사용하여 앱용 사용자 정의 이벤트 도구를 설정하는 방법을 설명합니다.
  • Parse IoT to AWS: IoT 백엔드를 AWS로 마이그레이션하는 방법을 보여주는 단계별 안내서입니다.
  • 웹 세미나 – Migrate your apps from Parse to AWS: AWS 모바일 서비스와 Parse에서 AWS로 모바일을 마이그레이션하는 데 필요한 단계를 알아봅니다.

더 자세한 것은 Resources for Migrating Parse Applications to AWS를 참고하시기 바랍니다.

AWS MobileHub로 안드로이드 앱 시작하기

이번 글에서는 어떻게 AWS 모바일 허브를 통해 빠르게 안드로이드앱을 만들 수 있는지 과정을 설명드리고자 합니다. 이를 통해 손쉽게 AWS 서비스를 연동하여 여러분의 iOS용 앱의 주요 기능과 통합 할 수 있게 될 것입니다.

문서 목차

  1. AWS MobileHub 소개 및 시작하기
  2. AWS MobileHub로 iOS 앱 시작하기
  3. AWS MobileHub로 안드로이드 앱 시작하기

이 글을 처음 읽으시는 분들은 앞의 두 가지 글을 미리 읽어 봐 주시면 이해하시는 데 도움이 되실 것입니다. AWS Mobile Hub 프로젝트를 생성하고, 마법사를 통해 AWS 서비스를 선택하는 부분은 기본적으로 동일합니다.

1. 안드로이드용 소스 패키지 생성

iOS 앱 시작하기 글에서 처럼 유저 사인인(User Sign-in)만 선택해서 안드로이드 용 앱 소스 패키지를 생성해 보겠습니다.

  • User Sign-in : Not Required.

유저 사인-인만 선택하고 나머지는 선택하지 않습니다. 이렇게 설정을 하게 되면, 유저 로그인시 다른 서비스(페이스북 등)를 통한 로그인은 하지 않게 되고 Cognito의 Unauthenticated identities를 이용해서 로그인하게 됩니다. 즉 특별한 로그인 인증 없이 앱기능을 실행하게 됩니다.

여기서 사용한 개발 도구는 안드로이드 스튜디오(AndroidStudio), 시뮬레이터는 제니모우션(Genymotion)을 세팅해서 사용했습니다. 안드로이드 소스 패키징은 기본적으로 그레이들(Gradle)을 사용해서 빌드가 되기 때문에 안드로이드스튜디오에서 사용하기 쉽습니다.

먼저 앱 실행을 해보도록 하겠습니다. 만약 안드로이드 스튜디오에 제니모우션 플러그인이 설치되어 있으면, 스튜디오 맨 상단 우측의 제니모우션 아이콘을 클릭해서, 원하는 디바이스를 우선 런치하도록 합니다.


[그림 1] 안드로이드스튜디오에서 제니모우션 실행

시뮬레이터가 뜬 이후에, 안드로이드 스튜디오 상단의 실행 버튼을 눌러 실행중인 애뮬레이터에 패키지를 배포합니다.


[그림 2] 에뮬레이터에 앱 실행

앞서 iOS와 동일한 화면 결과가 나옵니다. 설정에서 유저사인인만 선택했기 때문에, 그림 3와 같이 그에 해당하는 메뉴만이 리스트에 나오게 됩니다.


[그림 3] 유저사인인 화면

기능을 실행해보면, 게스트 계정으로 로그인을 해서 특별한 인증 없이 유저 아이덴터티 값을 가져오게 됩니다. 프로젝트가 생성되면서, 설정에서 선택된 기능에 해당하는 서비스가 자동으로 생성됩니다. 예를 들어 여기서 Cognito의 서비스가 생성되고, POOL_ID값도 자동으로 생성되는데, 소스 패키지에 이 값이 기본으로 포함되어 있습니다.


[그림 4] 안드로이드 소스 패키지 생성

이후에 빌드 단계에서 안드로이드를 선택해서 소스를 다운로드 하시기 바랍니다. 적절한 곳에 소스를 푼 후에 본인의 개발 도구에 프로젝트를 가져오기 하시기 바랍니다.

이제 생성된 소스의 구조를 살펴보도록 하겠습니다.


[그림 5] 프로젝트 구조

AWS 서비스와 관련된 클래스들은 amazonaws.mobile 패키지에 위치합니다. 설정 단계에서 서비스가 추가될 때마다 xxxManager가 추가됩니다.

데모 앱의 화면과 관련된 클래스들은 mysampleapp 패키지 안에 위치합니다. 역시 설정 단계에서 서비스가 추가될 때마다 데모용 화면이 추가되면서 클래스가 늘어나게 됩니다.

AWS 서비스와 관련해서 가장 기본적인 파일은 AWSConfiguration과 AWSMobileClient 입니다. 그림 5에서 보듯이 AWSConfiguration는 AWS 서비스 리소스의 아이덴터티를 포함하고 있습니다.

또한 AWSMobileClient는 앱의 부트스트랩을 담당합니다. 각종 서비스의 매니징 클래스를 생성하는 일을 담당하는 것입니다. 여기서는 IndentityManager만 입니다. 서비스가 추가되면 이 또한 늘어나게 됩니다.

2. 안드로이드용 데모 앱 실행하기

먼저 데모 앱 실행을 해보도록 하겠습니다. 만약 안드로이드스튜디오에 제니모우션 플러그인이 설치되어 있으면, 스튜디오 맨 상단 우측의 제니모우션 아이콘을 클릭해서, 원하는 디바이스를 먼저 런치하도록 합니다.


[그림 6] 안드로이드스튜디오에서 제니모우션 실행

시뮬레이터가 뜬 이후에, 안드로이드스튜디오 상단의 실행 버튼을 눌러 실행 중인 애뮬레이터에 패키지를 배포합니다.


[그림 7] 에뮬레이터에 앱 실행

앞서 iOS와 동일한 화면 결과가 나옵니다. 그림 8와 같이 설정에서 유저사인인만 선택했기 떄문에, 그에 해당하는 메뉴만이 리스트에 나오게 됩니다.


[그림 8] 유저 사인인 화면

메뉴를 클릭하여 기능을 실행해보면, 게스트 계정으로 로그인을 해서 특별한 인증 없이 유저 아이덴터티 값을 가져오게 됩니다.

프로젝트가 생성되면서, 설정에서 선택된 기능에 해당하는 서비스가 자동으로 생성됩니다. 예를 들어 여기서 Cognito의 서비스가 생성되고, POOL_ID값도 자동으로 생성되는데, 소스 패키지에 이 값이 기본으로 포함되어 있습니다.

3. 안드로이드용 데모 앱에 서비스 추가하기

우리는 현재 모바일에서 로그인 기능을 Amazon Cognito로만 연결한 기능을 테스트해보았습니다. 이제 몇 가지 기능을 추가하고 다시 소스 패키지 모습과 서비스 모습을 살펴보도록 하겠습니다. 프로젝트 이름은 SecondTestApp이라고 하겠습니다.

기본 설정에서는 다음과 같이 구성을 하겠습니다. 먼저 유저 사인인에서 페이스북으로 로그인하도록 설정합니다.


[그림 9] 페이스북 사인인 설정

여기서 페이스북 앱 아이디는 페이스북 앱을 만들어서 생성된 앱 아이디입니다. 참고로 페이스북에 앱을 생성한 후에, 플랫폼 추가를 선택해서 안드로이드의 경우 패키지 네임, 런치 화면 클래스 이름, 키 해쉬 값을 넣어 주어야 합니다. 보다 상세한 내용은 페이스북 개발자 문서를 참고하시기 바랍니다.


[그림 10] 페이스북 안드로이드 세팅

이렇게 생성한 이후에, 소스 패키지를 다운 받아서 실행해 보기 바랍니다. 처음 예제와 마찬가지 방법으로 앱 실행을 하면, 이번에는 페이스북으로 로그인하라는 화면이 나옵니다.


[그림 11] 페이스북 로그인 하기

에뮬레이터에서 키보드 타이핑이 안되는 경우가 있을 수 있습니다. 이 경우 에뮬레이터의 설정에서 키보드 입력의 Physical Keyboard Input을 OFF 로 설정하면 됩니다.


[그림 12] 에뮬레이터 키보드 설정 변경

로그인을 하면 각 기능별로 데모화면을 볼 수 있게 됩니다.


[그림 13] 서비스별 데모화면

유저 데이터 스토리지를 실행하면, 하나의 파일을 볼 수 있습니다. 이 파일은 프로젝트를 생성하면서 자동으로 생성된 S3 버킷에 존재합니다. AWS 콘솔에서 확인을 해보면 파일이 존재하는 것을 알 수 있습니다.


[그림 14] 자동으로 생성된 S3 버킷과 그 파일

각 서비스별로 실행을 해보면 그 상태를 서버에서 확인 할 수 있습니다.

소스코드의 변경을 살펴보겠습니다. 아래 그림을 보면 어떤 파일이 추가되었는지 비교해서 알 수 있습니다.


[그림 15] 변경된 프로젝트 구조

amazonaws.mobile패키지에 서비스 별로 필요한 패키지들이 추가된 것을 볼 수 있습니다. 물론 화면이 추가 되었기 때문에 mysampleapp에도 여러 클래스들이 추가된 것을 알 수 있습니다. 개별 클래스는 안드로이드 프로그래밍에 익숙한 분은 쉽게 파악할 수 있습니다.

지금까지 살펴봤듯이 모바일 허브를 통해 생성된 소스 패키지는 본인의 앱을 개발하는데 있어서 아주 좋은 출발점이 됩니다. 서비스를 생성하고, 그에 맞는 클라이언트 기능을 일일히 SDK를 이용해서 구현하는 것 보다 훨씬 쉽고 빠르게 초기 작업을 진행할 수 있습니다.

또한, AWS 서비스에 대한 비용만 지불하며, AWS Mobile Hub 사용에 대한 추가 요금은 없습니다. 각 AWS 서비스에서 사용한 만큼만 요금을 지불하면 됩니다.

어렵게만 생각한 AWS 모바일 클라이언트의 개발, 이제 손쉽게 시작해 보세요.

본 글은 아마존웹서비스 코리아의 솔루션즈 아키텍트가 국내 고객을 위해 전해 드리는 AWS 활용 기술 팁을 보내드리는 코너로서, 이번 글은 박선용 솔루션즈 아키텍트께서 작성해주셨습니다.

AWS MobileHub로 iOS 앱 시작하기

지난 AWS re:Invent 행사에서 AWS를 활용하는 모바일 개발자를 위한 모바일 허브(Mobile Hub)라는 새로운 서비스가 소개되었습니다.

이미 기존에 모바일을 위한 AWS 서비스는 많이 존재합니다. 인증 및 데이터 동기화를 위한 Amazon Cognito, 분석을 위한 모바일 분석(Mobile Analytics), 다양한 기기별 테스트를 위한 디바이스 팜(Device Farm), 푸시 서비스(SNS) 등이며, 이를 모바일 개발 환경 별로 AWS 모바일 SDK를 통해 제공하고 있습니다.

그러나, 모바일 SDK를 사용해서 프로그래밍을 하는 것은 기본 구조를 파악하고, 적용하기까지 몇 번의 시행착오를 거쳐서 하나의 시작 애플리케이션을 만들 수 있습니다. 통상 그 시간은 매우 짧지만 보다 편리한 방법을 찾는 것이 개발자의 본능이라고 생각합니다. 이러한 개발자의 편의를 위해 새롭게 발표한 서비스가 바로 AWS 모바일 허브라는 서비스입니다.

문서 목차

    1. AWS MobileHub 소개 및 시작하기
    2. AWS MobileHub로 iOS 앱 시작하기
    3. AWS MobileHub로 안드로이드 앱 시작하기

이번 글에서는 어떻게 AWS 모바일 허브를 통해 빠르게 iOS 앱을 만들 수 있는지 과정을 설명드리고자 합니다. 이를 통해 손쉽게 AWS 서비스를 연동하여 여러분의 iOS용 앱의 주요 기능과 통합 할 수 있게 될 것입니다.

우선 Mobile Hub 콘솔에 들어가서 프로젝트를 생성하고, 간단한 마법사를 통해 원하는 AWS 서비스를 선택하는 과정을 거치게 됩니다. 처음에 프로젝트 생성하는 과정은 AWS 모바일 허브 시작하기 글을 참고하시기 바랍니다.

1. iOS용 소스 패키지 생성

먼저 생성된 iOS앱 샘플 앱을 생성해 보도록 하겠습니다. 프로젝트 생성 마법사의 마지막 단계에서 “iOS”를 선택하고 “Build Your App”을 하시면 됩니다. 생성되는 소스 코드에 대한 정보는 소스 패키지 다운로드 단계에 존재하는 Discover, Develop를 보면 어떤 소스 코드를 수정해야 하는지 어떤 부분을 추가 개발해야 하는지 상세한 가이드가 제시됩니다.

[그림1] iOS의 샘플 앱 생성하기

한 가지 중요한 점은 샘플 코드에서 수정해야 할 주요 정보는 여러분이 실제로 사용할 AWS 서비스 정보입니다. 클라이언트 소스가 패키지 될 때 사용할 AWS 서비스(Cognito 또는 S3 버킷 등)가 같이 생성됩니다.

경우에 따라 생성된 프로그램에서 서비스에 필요한 정보를 수정하거나 변경할 필요가 있습니다. 예를 들어, 현재 베타 버전인 모바일 허브에서 생성된 서비스는 “us-east-1” 즉 버지니아 지역을 기준으로 생성됩니다. 만약 여러분이 Cognito 등을 기존에 사용하던 Identity Pool 정보라던가, 지역을 변경해서 새로 생성한 서비스로 연결하려면, 해당 ID 값들을 이용해야 합니다.

먼저 iOS의 프로젝트 구조를 살펴보도록 하겠습니다.


[그림2] iOS의 소스 패키지 구조

Demo 폴더에는 예제 실행이 가능한 각 화면들로 구성됩니다. 만약 여러분이 추가적으로 기능을 추가하면 그에 맞추어서 간단한 테스트를 할 수 있는 화면이 이 그룹에 추가됩니다. App 폴더 에는 앱의 가장 기본 파일들, AppDelegate나 Supporting Files가 기록됩니다.

AWS 서비스와 관련된 것은 AmazonAWS 폴더 입니다. 만약, 추가적으로 서비스 변경이 필요하다면 우선적으로 이 부분을 살펴보면 됩니다.

가장 먼저 보아야 할 부분은 AWSConfiguration.h이며, 그 다음에는 각 서비스 별로 그룹들이 추가됩니다. 통상 각 서비스에 대한 클라이언트 관리 클래스는 XXXManager라는 이름으로 구성됩니다. 여기서는 Identity 그룹에 AWSIdentityManager가 추가되어 있는 것을 볼 수 있습니다. AWSConfiguration.h를 살펴보면 그림3과 같습니다.


[그림 3] AWSConfiguration.h

여기에는 기본적으로 Amazon Cognito에 대한 POOL_ID 정보가 나와 있습니다. 만약 설정 단계에서 S3 스토리지나, 모바일 분석 서비스를 추가적으로 선택하면 Analytics의 앱 아이디나, S3의 버킷 이름이 추가적으로 나타나게 됩니다. 서비스를 추가하는 것은 이후에 살펴보도록 하겠습니다.

2. 데모 애플리케이션 실행하기

Xcode에서 Product에서 Run을 실행해서 데모앱을 실행해보면 아래와 같은 데모앱이 실행됩니다.


[그림 4] 데모 앱 실행화면

“User Sign-in”을 눌러보시면, Amazon Cognito를 통해 게스트(Guest)로 자격 증명을 얻은 것을 보실 수 있습니다. Amazon Congito를 통한 서비스에는 “프로젝트명_MOBILEHUB_번호” 형식으로 서비스가 생성된 것을 확인할 수 있습니다. 그 서비스를 클릭하고 들어가면, 그림 4처럼 앞서 게스트로 로그인해서 Identities의 s숫자가 증가된 모습을 볼 수 있습니다.


[그림 4] Amazon Cognito 서비스 화면

여기서 한 가지 점검할 사항이 있습니다. 만약 컴파일을 했는데, 그림 5처럼 “Illegal Configuration” 에러가 보인다면, 현재 Xcode버전이 7.0 이상인지를 꼭 확인해 보시기 바랍니다.


[그림 5] Xcode 7 미만 버전에서의 에러메시지

3. 데모 앱에 AWS 서비스 추가하기

Amazon Cognito로  Guest 로그인 기능만 있는 것에 몇 가지 기능을 추가하고, 다시 한번 소스 패키지 모습과 서비스 모습을 살펴보도록 하겠습니다. 새 프로젝트 이름은 SecondTestApp이라고 하겠습니다.

새 설정에서는 User sign-in 부분을 페이스북으로 로그인하도록 설정합니다.


[그림 6] 페이스북 로그인 설정

여기서 페이스북 앱 아이디는 페이스북 앱을 만들어서 생성된 앱 아이디입니다. 먼저, 페이스북에 앱을 생성한 후에, “플랫폼 추가”를 선택해서 iOS의 경우 번들 아이디를 넣어 주어야 합니다. 보다 상세한 설정 방법은 페이스북 개발자 문서를 참조하시기 바랍니다.

다음에는 사용자 데이터 스토리지와 모바일 분석, 클라우드 로직을 차례로 설정합니다.

  • User Data Storage : Store user data
  • App Analytics : Add analytics
  • Cloud Logic : Enable Logic

클라우드 로직의 경우에는 [그림 7]과 같이 예시적으로 나와있는 기본 AWS Lambda 함수를 모두 선택합니다.


[그림 7] 클라우드 로직 설정

이렇게 하고 소스 패키지를 생성한 이후에, 다운로드 받아서 Xcode로 열어보시기 바랍니다. Demo 폴더에는 화면이 더 추가되었고, AmazonAWS 그룹에도 서비스 이름이 더 추가된 것을 알수 있습니다.


[그림 8] 기능 추가 소스 패키지 프로젝트 구조

이제 실행을 시키면 먼저 페이스북 로그인 화면이 나타납니다. 여기서 본인의 페이스북 아이디로 로그인을 하면 첫번째 데모 화면이 나타납니다.


[그림 9] 추가된 서비스 데모 앱 화면

만약 유저 데이터 스토리지를 누르면  예제 파일을 다운로드 할 수 있습니다. 여기서 보이는 example-image.png파일은 어디에 존재하는 것일까요? 이것은 프로젝트에서 설정에 스토리지를 추가했기 때문에 자동으로 생성된 S3 버킷에 존재합니다.


[그림 10] S3의 샘플 이미지 다운로드

변경된 AWSConfiguration.h 내용을 살펴보도록 하겠습니다. 모바일 분석와 S3 버킷 이름이 추가된 것을 확인 할 수 있습니다.


[그림 20] 변경된 AWSConfiguration.h

새로 만들어 진 데모 앱 화면에서 다른 기능도 사용해 보시고, 여러분이 가진 AWS 자원으로 직접 연결하셔서 기본 기능을 수행해 보실 수 있습니다.

지금까지 살펴 보신 것과 같이 단일 콘솔을 사용하여 모바일 허브를 사용하면 AWS 서비스에서 구동되는 모바일 앱을 쉽게 개발할 수 있습니다. 샘플 앱을 새로 만들 앱의 기반으로 사용하거나, 코드 스니핏을 잘라내어 여러분의 앱에 삽입하여 서비스를 개발 할 수 있습니다.

또한, AWS 서비스에 대한 비용만 지불하며, AWS Mobile Hub 사용에 대한 추가 요금은 없습니다. 각 AWS 서비스에서 사용한 만큼만 요금을 지불하면 됩니다.

어렵게만 생각한 AWS 모바일 클라이언트의 개발, 이제 손쉽게 시작해 보세요.

본 글은 아마존웹서비스 코리아의 솔루션즈 아키텍트가 국내 고객을 위해 전해 드리는 AWS 활용 기술 팁을 보내드리는 코너로서, 이번 글은 박선용 솔루션즈 아키텍트께서 작성해주셨습니다.

AWS Mobile Hub – 모바일 앱 빌드, 테스트 및 모니터링

AWS Mobile Hub(베타) 신규 서비스는 AWS 서비스를 사용하여 모바일 앱을 빌드, 테스트 및 모니터링을 단순화한 새로운 서비스입니다. 여러분 앱에 간단한 설정을 추가함으로서 기존의 AWS 서비스 설정 및 통합 작업의 부담을 덜어드림과 동시에 인증, 데이터 저장소, 백엔드 로직, 푸시, 콘텐츠 배포 및 분석 등 모든 것을 통합된 하나의 콘솔에서 운영할 수 있습니다.

관리 콘솔에서는 설정, 빌드, 테스트 및 사용량 모니터링 등 개발 및 서비스 단계 별로 기능 위주로 서비스를 선택할 수 있으며 이들 기능을 하나 통합 및 조합해서 사용할 수 있습니다. 일단 10분 정도만 사용해 보시면 어떻게 동작하는지 바로 확인이 가능합니다.

모바일 허브 콘솔 자세히 보기
이제 콘솔 기능을 한번 살펴 보도록 하겠습니다.

모바일허브는 모바일 앱 개발 단계별로 필요한 업무를 대략적으로 알 수 있게 되어 있습니다.

샘플 프로젝트 명은 SuperMegaMobileApp으로 하겠습니다.

각 기능은 하나 이상의 AWS 서비스를 활용할 수 있는데, 예를 들어 로그인의 경우 Amazon CognitoAmazon SNS를 통한 푸시를 조합할 수 있습니다. 클릭해서 선택 후 설정만 하면 됩니다.

Push Notification을 선택 후, Enable push를 누르고 원하는 플랫폼을 선택합니다.

안드로이드 기기에 푸시를 보내고 싶다면 API Key와 Sender ID를 넣으면 됩니다.

백엔드 로직을 위해 AWS Lambda 함수를 연결할 수도 있습니다.

기능 설정을 마쳤다면, Build를 누르면 다음으로 넘어갑니다.

모바일 허브는 바로 시작할 수 있는 소스 패키지를 제공합니다. 다운로드하여 사용하기 전에 여기에 대한 자세한 설명 및 가이드는 보실 수 있습니다.

전체 패키지를 다운로드 한 후, 여러분이 선호하는 개발 환경(IDE)에 통합할 수 있습니다.

이 코드를 기반으로 샘플 앱을 시작하거나 편집할 수 있으며, 코드 일부를 기존 앱에 붙여넣기 할 수도 있습니다.

여러분이 앱 테스트를 원한다면 AWS Device Farm을 그리고 분석 데이터 수집을 원한다면 Amazon Mobile Analytics를 선택하시면 됩니다.

모바일 허브 사용하기
새로운 앱을 만들거나 기존 앱에 기능 추가를 위해, 모바일 허브는 아주 적은 비용과 시간을 들여 확장성 및 신뢰성을 높일 수 있습니다. 여러분이 보셨듯이 AWS Mobile Hub를 통해 기능 선택 및 설정을 바로 할 수 있으며 자동으로 AWS 서비스를 동작할 수 있도록 하여 더 빠르게 iOS 및 안드로이드 앱에 기능을 더할 수 있습니다.

이제 모바일 앱 개발에만 더욱 시간을 쏟아서 여러분의 중요한 서비스에만 집중하십시오. 더 자세한 사항은 AWS Mobile Hub 페이지에서 확인하시기 바랍니다.

— Jeff;

이 글은 AWS Mobile Hub – Build, Test, and Monitor Mobile Applications의 한국어 번역이며, re:Invent 2015의 신규 서비스 소식입니다.