모바일 장치에서 클라우드 컴퓨팅 활용 방안 – 1) 플랫폼 클라우드 이용한 푸시 알림 서비스 활용 하기

(임베디드 월드 2012년 2월호에 기고 했던 원고를 협의 하에 포스팅합니다. 원고의 저작권은 임베디드 월드(https://www.embeddedworld.co.kr/) 에 있습니다. 원문 주소 : https://www.embeddedworld.co.kr/atl/view.asp?a_id=5474 )

 

모바일 장치에서 클라우드 컴퓨팅 활용 방안 – 1) 플랫폼 클라우드 이용한 푸시 알림 서비스 활용 하기

: 폰이나 태블릿과 같은 모바일 장치에서 구동되는 애플리케이션 개발 시에 클라우드 컴퓨팅 플랫폼인 윈도우 애저를 활용하는 방법에 대한 설명과, 이를 이용해서 카카오톡에서 메시지를 전송할 때 사용하는 것과 같은 푸시 알림 서비스를 개발하는 방법을 알아봅니다.

 

모바일 장치와 클라우드 서비스

 

요즘은 어디서든 스마트 폰이나 태블릿 등을 이용해서 인터넷이나 온라인 서비스를 활용하는 사람들을 쉽게 볼 수 있듯이, 과거 몇 년 동안 아주 빠른 속도로 진행된 모바일 장치들의 보급과 기술의 발달은 이를 이용하는 개인의 생활 방식을 바꾸고 있다.

 

모바일 장치를 이용자와 공급자의 관점에서 바라 보면, 이 중에 공급자는 다시 하드웨어 공급자와 이 하드웨어를 기반의 애플리케이션 공급자로 나눠서 생각해 볼 수 있다.

 
 

실제로 특정 모바일 장치가 시장에 나왔을 때 이용자들이 주로 쓰는 것은 장치 위에서 구동되는 애플리케이션이며. 이런 이용자의 수요는 앱 스토어 같은 온라인 장터를 기반으로 새로운 수익을 내고자 하는 애플리케이션 서비스 공급자의 자발적인 참여를 이끌어냈다.

 

하지만 모바일 애플리케이션 서비스로 수익을 성공적으로 내기 위해서는 서비스에 대한 개발 및 관리 운영 역량이 필요하다. 큰 규모의 업체에서는 많은 인력 및 자본을 투자해서 안정적인 서비스를 운영을 할 수 있지만, 작은 규모의 업체에서는 운영에 많은 비용을 쓰기 어렵고, 이는 안정적인 서비스를 제공하는데 문제가 된다.

 
 

전 세계 IT 산업 전반에서 수년간 화두로 논의 되고 있는 클라우드 컴퓨팅은 이런 모바일 장치용 애플리케이션 개발을 비롯한 많은 분야에서 대안을 제시하고 있다. 총 3회로 예정된 기사를 통해 모바일 장치가 클라우드 컴퓨팅의 어떤 부분들을 활용할 수 있는지에 대해서, 실제적인 예를 통해서 다뤄보고자 한다.

 
 

푸시 서비스의 이해

 

모바일 장치에서 사용자에게 메시지를 전달하는 방식으로 자주 활용되는 것 중에 하나인 푸시 알림 서비스를 클라우드에서 구동하는 방법을 살펴보겠다. 푸시 알림 서비스는 휴대 전화에서 문자가 왔을 때 알림 표시가 되는 것처럼 사용자에게 실시간으로 메시지를 푸시 하는 방식을 말한다. 해외는 'What's App', 국내 서비스로는 '카카오톡'과 같이 많이 사용되는 모바일 용 애플리케이션에서 사용자에게 메시지가 전달되는 방식을 생각해 볼 수 있다.

 
 

푸시 알림의 동작 방식 대해서 이해하기 위해, 모바일 장치가 서버와 통신하는 방식을 살펴 보면 크게 두 가지로 나눠 볼 수 있다. 하나는 모바일 장치에서 서버에 접근하는 것이며, 이는 서로 간에 통신에 이용하는 프로토콜 사이의 문제가 없다면, PC와 같은 클라이언트에서 웹 서비스들을 소비하는 방식과 다르지 않게 구현 및 사용할 수 있다. (예를 들면 REST, SOAP, JSON 등의 프로토콜을 이용)

 

다른 하나는 서버에서 모바일 장치에 접근을 하는 것이다. 외부에 서비스를 제공하기 위해서 운영 되는 서버와 다르게 모바일 장치에서는 주로 외부의 서비스를 이용한다. 따라서 외부의 서비스에서 모바일 장치로 접근하기 위해서는 외부에 서비스에 모바일 장치와 관련한 정보가 노출되어 대기하고 있어야 한다.

 

 

그림1. 모바일 장치에서 서버로 통신(좌), 서버에서 모바일 장치로 통신(우)

 

하지만, 모바일 장치 운영체제의 자체적인 유지 관리에 필요한 서비스가 아닌, 외부 개발사에서 개발한 애플리케이션 들마다 모바일 디바이스에 메모리에 상주하면서 외부의 서비스를 모니터링하는 것은 모바일 장치의 배터리나 메모리 같은 한정된 자원을 효율적으로 사용할 수 없게 한다.

 
 

따라서 현재 이와 같은 이유 등으로 마이크로소프트의 윈도우폰, 애플의 iOS, 구글의 안드로이드 등의 모바일 운영체제에는 외부에서 장치 쪽으로 메시지를 보내는 방식을 통합해서 관리하는 기능을 내장하고 있으며, 애플리케이션 개발사에서는 이를 활용하는 형태로 개발을 하고 있다.

 
 

 

그림2. 모바일 운영체제 제조사 별로 제공하는 푸시 알림 서비스

 
 

푸시 알림 서비스의 동작 방식

 

그러면 일반적인 알림 서비스 (Notification Service, NS)가 동작하는 방식에 대해서 간략히 알아본다. 모바일 애플리케이션 서버는 클라우드에서 서비스되고 있다고 가정한다. 크게 장치가 푸시 알림을 구독 하는 과정과 서비스 등록 이후에 서버 쪽에서 푸시 알림을 장치에 보내는 과정으로 나눌 수 있다.

 
 

그림3. 모바일 장치에 알림 서비스(NS)를 등록하고 전송하는 과정

 

(1) 모바일 장치에서 알림 서비스(NS) 쪽에 통신을 할 채널 URL을 요청한다.

(2) NS에서 모바일 장치로 통신을 할 채널 URL을 반환한다.

(3) 모바일 장치에서 클라우드의 서비스에 채널 URL을 전송한다. 해당 채널 URL이 모바일 애플리케이션을 서비스하는 서버 쪽에 저장된다

(4) 클라우드의 웹 서비스에서 NS로 알림 메시지를 보낸다

(5) NS에서 모바일 장치로 알림 메시지가 전송된다.

 
 

그림4. NS를 활용해서 모바일 장치로 웹 서비스를 사용하는 과정

 
 

(1) 클라우드의 웹서비스에서 NS로 메시지를 보낸다.

(2) NS에서 모바일 장치로 메시지를 보낸다.

(3) 모바일 장치에서 메시지를 받고, 클라우드의 서비스를 호출한다.

(4) 클라우드의 웹 서비스에서 응답으로 요청한 메시지를 보낸다.

 
 

지금까지 설명한 일반적인 푸시 알림 서비스의 형태를 마이크로소프트 푸시 알림 서비스(MPNS)와 윈도우폰을 이용해서 동작하는 구조를 표현해보면 다음과 같다. 윈도우폰 모바일 운영체제 쪽에 Push Client 쪽에서 MPNS와 등록 및 메시지를 받아서, 이를 사용하고자 하는 애플리케이션과 연동이 된다. 이외의 방식은 동일하므로 순서 별 설명은 생략한다.

 

그림5. 윈도우폰과 MPNS 그리고 클라우드에 있는 애플리케이션의 연동 구조

 

늘어나는 트래픽 처리

지금까지 푸시 알림 서비스를 모바일 장치에 있는 애플리케이션에서 어떻게 사용하는지에 대해서 살펴봤다. 그런데 개발한 애플리케이션의 사용자 수가 많아지고, 이 애플리케이션에 포함된 푸시 알림 서비스의 사용량이 많아질 경우에 이와 함께 연동되는 웹 서버 사용량이 늘어나는 것을 애플리케이션 개발사 측에서 감당해야 한다.

 
 

일반적으로 서버를 확장하는 방법에는 스케일 업 방식의 확장과, 스케일 아웃 방식의 확장이 있다. 스케일 업 방식은 더 높은 성능을 낼 수 있도록 더 큰 하드웨어 자원(CPU, 메모리, 하드디스크 등)을 사용하는 방식이다. 하지만, 현존하는 하드웨어에는 낼 수 있는 성능의 한계가 있기 때문에, 많은 비용을 들이더라도 충분한 효과를 얻지 못할 수도 있다.

 
 

다른 확장 방법인 스케일 아웃 방식은 서버의 개수를 늘려서 여러 서버에서 처리하도록 방식을 바꾸는 것이다. 웹 서버에서 이와 같은 작업을 하기 위해서는 앞 단에 로드밸런서를 붙여서 집중 되는 부하가 서버 별로 분산 될 수 해주면 된다.

 
 

모바일 애플리케이션의 특성상 많은 사용자가 동일한 시간 대에 몰리는 것을 고려해본다면 스케일 아웃 방식이 지속적인 유지 관리를 위해서는 더 효율적일 수 있다. 하지만, 애플리케이션 개발사의 규모가 크지 않을 경우에는 스케일 아웃으로 서버들을 늘렸을 경우 관리 및 유지하기 위한 부가 비용 및 인력 투자가 들어가게 되며, 이는 개발사가 애플리케이션 개발에 더 집중하지 못하게 되는 원인이 된다.

 
 

해결책으로 클라우드 컴퓨팅의 활용과 PaaS

 

이런 문제를 해결하기 위해서 모바일 애플리케이션 개발사는 사용한 만큼만 지불할 수 있고, 또한 관리적인 부분에 대한 부담에 크게 감소하는 클라우드 컴퓨팅을 활용하는 것을 고려해 볼 수 있다. 외부의 클라우드 서비스는 방식에 따라서, 인프라를 서비스로 제공받는 것(IaaS)과 플랫폼을 서비스로 제공받는 것(PaaS)이 있다.

 

그림6. 제공 범위에 따른 클라우드 서비스의 분류

 
 

IaaS의 경우에는 운영체제나 서버들을 포함한 기존 자체적인 서버에서 사용하던 구조나 방식들을 대부분 그대로 활용할 수 있다는 장점이 있고, 물리적인 장애에 대해서 신경을 쓰지 않을 수 있지만, 서버를 호스팅 받았을 때와 마찬가지로 운영체제나 개발용 런타임 들의 관리를 해야한다. 예를 들면 로드밸런서를 추가된 서버들과 연결하는 것도 직접 설정이 필요하다.

 
 

하지만 PaaS에서는 개발사 입장에서는 클라우드 플랫폼에 지원할 수 있는 형태로 서비스를 개발하는 노력은 필요하지만, 이렇게 개발한 이후에 배포를 하면 그 이후에는 자신들이 애플리케이션과 그 애플리케이션이 사용하는 데이터에 대한 부분만을 관리해 주면 되며, 확장에 대한 부담을 덜 수 있다.

 
 

마이크로소프트의 클라우드 플랫폼, 윈도우 애저

 

마이크로소프트에서 서비스하고 있는 윈도우 애저는 이런 클라우드 플랫폼 서비스이며 컴퓨팅 자원과 저장소 자원을 구분해서 컴퓨팅 서비스에서는 상태 값을 가지지 않도록 함으로서 서비스의 규모를 유연하게 늘리거나 줄일 수 있도록 되어 있다.

 

그림6. 윈도우 애저에서 제공하는 핵심 서비스 요소

 

또한 윈도우 애저는 기존 마이크로소프트의 닷넷 뿐만 아니라 JAVA, PHP 등과 같은 언어로 개발된 대부분의 애플리케이션을 사용할 수 있으며, 일반 웹 애플리케이션은 물론 엔터프라이즈, 게임 등과 같은 다양한 시나리오에 맞도록 서비스를 운영할 수 있다.

 

그림7. 윈도우 애저를 활용할 수 있는 다양한 시나리오

 

윈도우 애저를 활용하는 모바일 애플리케이션을 서비스 시나리오에 대한 개발을 보다 쉽게 할 수 있도록 제공하는 모바일 툴킷이 각각의 모바일 운영체제 별로 있으며, 이 중에 윈도우폰 용 툴킷에서 윈도우 애저를 이용해 푸시 알림 서비스를 사용하는 부분을 살펴 보겠다.

 

윈도우 애저 및 윈도우폰 개발 환경과 툴킷 설치

 

마이크로소프트에서 제공하는 웹 플랫폼 설치 관리자(WPI)를 이용하면 개발하고자 하는데 필요한 소프트웨어들을 간단하게 설치할 수 있습니다. WPI 를 이용해서 Windows Azure SDK for .NET을 설치하면 윈도우 애저 개발에 필요한 환경이 구성이 되며, 마찬가지로 윈도우폰 개발을 위해서는 Windows Phone SDK 7.1도 설치 하면 된다.

 
 

그림8. 웹 플랫폼 설치 관리자 화면

 
 

개발 환경의 설치를 마쳤으면 Codeplex라는 마이크로소프트의 오픈 소스 사이트에 있는 윈도우폰용 윈도우 애저 툴킷 프로젝트(Windows Azure Toolkit for Windows Phone)를 다운받는다. 이 프로젝트에는 푸시 알림 서비스를 포함해서 클라우드 서비스에 활용할 수 있도록 구성된 샘플 들이 포함이 되어 있다. 또한 해당 소스 코드들은 문서화가 되어 있고, 지속적으로 업데이트가 되므로 개발에 효과적으로 활용할 수 있다.

 

그림9. 윈도우폰을 위한 윈도우 애저 툴킷에 포함된 푸시 알림 서비스 구조

 

툴킷을 실행하고 푸시 알림 서비스 테스트

 

툴킷을 설치하면 Visual Studio의 Cloud 프로젝트에 추가되는 Windows Phone Cloud Application을 선택해서 진행해서 실행하면 윈도우폰용 에뮬레이터와 클라우드의 서비스 웹 페이지와 볼 수 있다. (로컬 PC를 가상 윈도우 애저 클라우드 환경으로 만들거나, 윈도우 애저에 직접 웹 애플리케이션을 올려서 테스트 해볼 수 있다.)

 

그림10. 윈도우폰 애플리케이션에서 푸시 알림 연결, 클라우드 웹 애플리케이션에서 푸시 알림 메시지 전송

 

윈도우폰 애플리케이션의notification 화면에서 Enable push notification 체크박스를 클릭해주면, 윈도우폰 사용자 정보가 클라우드 쪽으로 전송되고, 클라우드의 웹 페이지에서는 해당 윈도우폰 사용자를 볼 수 있다. 그리고 해당 사용자에게 푸시 알림 메시지를 보낼 수 있다.

 

참고로 윈도우 폰에서는 푸시 알림을 전달하는 방식이 Toast, Tile, Raw 총 3가지다. Raw는 메시지 자체만 보내서 폰의 애플리케이션에서 사용하는 것이며, Toast는 폰 화면의 상단에 바 형태로 알림이 가는 것, 그리고 Tile은 윈도우폰 첫 화면에 있는 타일에 표시를 하는 방식이다.

 


그림11. 윈도우 폰에서 푸시 알림 서비스를 등록하고, 푸시 알림을 받는 화면(좌측 Toast, 우측 Tile 방식)

 

클라우드의 장점을 활용해서 모바일 장치로의 푸시서비스를 쉽게 구현

지금까지 모바일 장치 위에서 구동되는 애플리케이션을 개발하는데 있어서, 클라우드 서비스의 필요성과 푸시 서비스의 구조 및 활용 예를 윈도우 애저와 윈도우폰을 통해서 살펴 보았다. 클라우드의 장점을 활용하면 관리적인 부분에 대한 신경을 덜 쓰고, 모바일 장치에서 구동되는 애플리케이션 개발 자체에 집중할 수 있다. 다음 번 연재 기사에서는 모바일 장치에서 클라우드의 저장소를 활용하는 부분에 대한 내용을 다루도록 하겠다.