윈도 클라우드 '애저'에서 아이폰 개발해 보니

플랫폼 인사이더 뉴스 – [Microsoft]

일반입력 :2011/06/20 08:52

남정현

클라우드 서비스를 모바일에서 사용하는 것은 이제 당연한 일이 되었다. 개발자가 아니라고 하더라도 누구나 쉽게 대용량 메일 서비스를 사용할 수 있고, 각종 스토리지 서비스에서 파일을 내려 받거나 올릴 수 있다. 그러나 정작 개발자가 마음 놓고 쓸 수 있는, 휴대폰 애플리케이션(앱)에서 사용하기에 편리한 저장소는 의외로 선택하기 쉽지 않다.

■아이폰 개발자들의 두 가지 고민과 윈도 애저 모바일 툴킷

아이폰 기반 앱을 만들어본 개발자들이라면 흔히 고민하는 것이 두 가지가 있다. 하나는 휴대폰 자체의 저장소가 아닌, 온전히 앱을 위해서 편하게 디자인할 수 있는 저장소가 마땅치 않다는 것이고, 또 다른 하나는 푸시 알림 서비스를 구현하기 위해서는 꼭 서버가 필요하다는 것이다. 앱 개발 하나에만 집중해도 만족스러운 결과를 얻을 수 있을지 어떨지 모르는 상황에서 이런 부분들은 개발자의 능력에 따라 다르겠지만 대개는 부담으로 다가올 수 밖에 없다.

더 정확히 표현하자면, 지금까지 이러한 기능을 제공할 수 있는 인프라가 없는 것은 아니었다. 다만 개발자의 입장에서 곧바로 가져다가 쓸 수 있는 개발 도구가 마땅치 않았던 것이라고 봐야 할 것이다.

필자가 소개하려고 하는 것은 실제로 앱 개발자들이 서버에 대한 기술을 잘 모르더라도 자유롭게 활용할 수 있는 서버 측 기술을 포장한 툴킷이다. 이 툴킷은 클라우드 서비스인 윈도 애저 플랫폼을 이용하도록 만들어진 아이폰, 아이팟, 아이패드 개발자들을 위한 툴킷이며 나온지 얼마 안 된 따끈따끈한 신상이다.

같은 기능을 안드로이드 플랫폼에서도 사용할 수 있는 툴킷도 제공하며, 그리고 국내에 곧 출시가 될 것으로 예상되는 윈도폰용 툴킷도 제공된다. 그리고 아이폰과 안드로이드용 툴킷의 경우 상용 프로젝트에서도 사용이 가능한 오픈 소스 라이선스를 기반으로 소스 코드가 제공되므로 라이선스 문제에 대한 걱정 없이 사용할 수 있다.

모바일용 윈도 애저 툴킷은 크게 네 가지 부분으로 나뉘어진다. 우선 모바일 장치들이 접속하여 이용할 수 있는 서비스를 만들 수 있는 비주얼 스튜디오를 위한 툴킷이 있고, 그 외에 아이폰, 안드로이드, 윈도 폰 플랫폼을 위한 전용 라이브러리들이 있다.

참고로 아이폰과 안드로이드용 툴킷의 경우 폰이 아닌 패드 계열 장치나 다른 버전의 장치에서도 툴킷을 이용한 개발을 지원한다. 마지막으로, 클라우드 레디 패키지를 바로 윈도 애저에 배포할 수 있는 형태로 내려 받을 수도 있고, 비주얼 스튜디오에 설치되는 프로젝트 템플릿의 형태로 이용할 수도 있어서 여러분의 의도에 맞게 서비스를 만드는 것도 가능하다.

이 툴킷의 가장 큰 장점은 클라우드 서비스를 앱 개발자의 의지대로 커스터마이징할 수 있고, 단순히 파일을 저장하는 것 말고도 NO-SQL 기반의 데이터 저장과 쿼리 서비스, 그리고 실시간 큐 저장소를 지원한다는 점이다. 이러한 종류의 툴킷이 없을 경우 모바일 만으로는 능동적인 서비스 구현이 어렵기 때문에 항상 서버나 서비스 개발이 뒷받침이 되어야만 했었다.

그리고 푸시 알림 서비스도 쉽게 개발할 수 있도록 클라우드 패키지를 제공한다. 이 클라우드 패키지는 소스 코드에 대한 수정을 거칠 필요 없이 푸시 알림 서비스 구축에 필요한 다양한 설정을 제어할 수 있게 되어있다.

■아이폰과 윈도 애저 스토리지

윈도 애저 스토리지는 세 가지 형태의 스토리지 서비스를 하나의 계정에서 제공한다.

BLOB 저장소를 사용하면 작은 파일에서부터 매우 큰 크기의 파일까지 자유자재로 취급할 수 있으며, 크기가 큰 파일의 경우 저 수준의 파일 시스템을 핸들링하는 것과 비슷하게 블록 단위의 파일 취급도 가능하다. 그리고 BLOB 저장소에 올려둔 파일을 기준으로 CDN 서비스를 사용할 수도 있다. 참고로 애저의 CDN 서비스는 대한민국을 경유하는 노드가 있으므로 속도가 중시되는 동영상 및 멀티미디어 서비스에 유리하다.

큐 저장소를 사용하면 수신처에 관계없이 문자열 기반의 단일화된 메시징을 응용프로그램 사이에 구현할 수 있다. 이것은 이전의 소켓 기반 프로그래밍과는 구분되며, 큐에 메시지를 쌓을 수 있는 수준도 우리의 상상을 뛰어넘는 수준으로 웬만한 과부하에는 끄떡없는 성능을 보여준다. 문자열 기반의 메시징이고, 적절한 클라이언트와 접근 방법만 있다면 당연하게도 완전히 다른 장치들 사이의 커뮤니케이션도 가능하다.

테이블 저장소는 앞서 설명한 NO-SQL을 구현한 데이터 저장소로 전통적으로 실무에서 많이 사용되는 데이터 액세스 프로그래밍 기법 외의 관점에서 접근하므로 장치에 독립적이고 저장할 수 있는 자료 역시 상당히 유연하다. 물론 아직 불편한 점이 많으며 기존의 SQL 및 관계형 데이터베이스 시스템에 익숙한 개발자들에게는 부족한 점이 많지만 만족할만한 성능을 보여주는 믿음직스러운 클라우드 기반 저장소이다. 또한 이름에서 알 수 있듯이 SQL을 사용하지 않고 REST 기반의 프로토콜을 사용하므로 SQL 사용에 친숙하지 않은 앱 개발자들도 쉽게 활용할 수 있는 것이 장점이다.

그리고 이 세 가지 서비스 모두 HTTP 및 HTTPS 프로토콜을 기반으로 동작하므로 이들 프로토콜을 지원하는 플랫폼이라면 활용에 아무런 제약이 없다. 윈도 애저 스토리지가 내세우는 강점이 여기에 있으며 지금 유행하는 세 종류의 하드웨어에 대한 모바일 툴킷을 기술적으로 완성도 높게 내놓을 수 있었던 배경이기도 하다.

그러면 아이폰 개발 환경에서 윈도 애저 툴킷을 어떻게 사용할 수 있을까? 윈도 애저 툴킷은 윈도 애저가 제공하는 서비스 중에서 윈도 애저 스토리지의 3가지 저장소 서비스 (BLOB, 큐, 테이블)를 쉽게 접근할 수 있도록 도우미 라이브러리를 포함하고 있으므로 XCODE에서 미리 컴파일된 라이브러리 파일을 프로젝트에 추가하고, 여기에 대한 헤더 파일을 포함시키면 준비가 끝난다. BLOB 스토리지에 저장된 컨테이너의 목록을 가지고 오는 샘플 코드쯤은 쉽게 짤 수 있다.

한 발 더 나아가서, 앞서 이야기한 테이블 스토리지를 활용할 수 있다면 아이폰에서도 데이터베이스를 사용하는 것과 비슷한 혜택을 누릴 수 있다. 테이블 스토리지에 저장되어있는 레코드를 필터링하여 가져오는 코드도 쉽게 개발 가능하니, 앱 개발을 하면서 가장 필요한 파일 처리와 데이터 관리를 별도의 서버 개발 없이 할 수 있다는 것은 분명한 장점이 될 것이다.

■애저로 푸시 알림 서비스 구축하기

주변에 스마트 폰을 가지고 푸시 알림 서비스를 구축하기 위해서 잘 쓰고 있던 방화벽 설정을 마구 망가뜨리거나 구현이 잘 되지 않아서 밤을 지새우는 개발자들을 많이 봤다. 개발 일정은 늘 촉박하기에 이를 자체 구현하기 위해 오늘도 밤을 지새우는 개발자들이 많을 것이다.

그러나 윈도 애저 모바일 개발 툴킷을 알고 있다면 회사 인트라넷 구성을 깨뜨리거나 언제 네트워크가 끊어질지 모를 다락방 서버로 악전고투를 벌일 이유가 없다. 윈도 애저 툴킷에서는 이런 이유로 고생하는 개발자들을 위한 패키지를 제공한다. 바로 클라우드 레디 패키지인데 이 패키지는 윈도 애저에 바로 게시할 수 있는 형태로 미리 컴파일된 패키지이며 가이드까지 같이 제공되므로 쉽게 따라할 수 있다.

또한, 이 패키지는 미리 컴파일 되어 있는 형태이기 때문에 곧바로 클라우드에 게시하기만 하면 되므로 개발자가 윈도 기반 컴퓨터를 따로 구해서 비주얼 스튜디오를 설치하고 프로젝트를 빌드하는 작업을 하지 않아도 된다.

압축을 풀고 가이드에 있는 대로 진행하면 손쉽게 구축할 수 있게 되어있다. 우선, 애플 푸시 알림 서비스 신청 시 발급받은 인증서 손 도장 값 및 윈도 애저 스토리지 접속 정보 등을 설정 파일에 기재해야 한다. 그리고 애저 포털 서비스 내에서 실행되는 가상 컴퓨터에 기본으로 설치할 인증서로 애플 푸시 알림 서비스에서 발급받은 인증서를 업로드하면 된다.

관련기사

그 이후에 애저 포털 서비스를 통하여 배포하면 된다. 배포에서 실행까지는 보통 5-8분 정도 소요되며, 정상적으로 배포되면 여러분이 설정한 호스트 이름을 사용하는 도메인 주소를 얻을 수 있고 여기에 HTTP로 접속하면 웹 브라우저로 제어할 수 있는 콘솔 화면이 아래와 같이 나타날 것이다. 이 화면에서 안내하는 대로 좀 더 설정해야 완전히 마무리된다.

이제 여러분이 APNS를 구현하기 위해서 앱에 작성했던 코드를 새로 구축한 환경에 알맞게 변형하는 것으로 작업이 마무리된다. 개발 도구, 시험해 볼 아이폰이나 아이팟 혹은 아이패드, 그리고 애플 앱 개발자 계정까지 가지고 있지만 서버 문제 때문에 개발이 진행되고 있지 않아 고민이었다면 아마 이 글을 보고 곧바로 써보고 싶다는 생각이 들었을 것이다. 클라우드란 바로 이러한 개발자의 욕구를 위한 것이다.