GSMA-Smarter Apps for Smarter phones! part1. 개요입니다

스마트 폰과 스마트 폰 애플리케이션은 지난 몇 년 동안 디바이스 제조업체와 애플리케이션 개발자들에 의해 스스로 성장해 왔습니다. 디바이스와 애플리케이션은 계속 증가하고 발전되어 왔지만 이제는 얼마나 스마트 폰과 통신 네트워크에 효율적으로, 그리고 보안을 강화한 애플리케이션들을 개발할지에 집중 되고 있습니다.

따라서 애플리케이션들의 네트워크 부하 감소와 배터리 소비전력 절감, 보안강화를 도모하는 개발을 위한 가이드문서에 대해 소개를 드리려고 합니다.

먼저 이러한 표준을 정하고 가이드 문서를 제시하는 곳인 GSMA 국제 기구에 대해 알아보겠습니다.

‘GSMA란?’

gsma logo

GSM Association(GSMA)는 단말 제조사들, 이동통신 사업자들 그리고 표준화 추구와 관련된 회사들이 참가하고 있는 국제 표준화 단체입니다.

전 세계 220개국 이상에 걸쳐 있는 GSMA는 800개가 넘는 모바일 운영업체들과 모바일 에코시스템을 구성하고 있는 핸드셋 제조업체, 소프트웨어 기업, 장비 공급업체, 인터넷 회사 그리고 미디어 엔터테인먼트 단체를 비롯한 200여 개 이상의 기업들을 통합하고 있습니다. GSMA는 모바일 산업에서 크게는 연중 행사로 ‘GSMA Mobile World Congress’를, 작게는 ‘GSMA Mobile Asia Expo’, ‘GSMA NFC & Mobile Money Summit’ 그리고 ‘GSMA-mHA Mobile Health Summit’을 개최하고 있으며 이들의 최종 목표는 모바일 커뮤니케이션 산업의 성장 추진이라고 합니다.

‘누구를 위한 것? 무엇을 위한 것?’

그럼 지금부터 GSMA에서 규정하고 배포한 공식 문서의 타겟과 이를 통한 효과에 대해 알아보도록 하겠습니다.

GSMA 공식 문서는 모바일 네트워크를 이용하는 모바일 애플리케이션 개발자들에서 더 나은 개발을 제공하기 위해 만들어졌습니다. 또한 본 가이드라인과 권고를 통해 개발자들이 목적에 맞는 애플리케이션 개발을 위해 더 나은 환경을 제공받게 될 것입니다. 이를 참고하여 개발한 애플리케이션을 통해 모바일 운영체제는 네트워크 과부화 부담을 줄이고, 사용자들은 즉시 반응과 신뢰성을 경험할 수 있으며 배터리 사용시간도 증가 할 것입니다.

따라서 이 문서는 모바일 애플리케이션을 개발하는데 기본적인 것을 제공하는 것이 아니라, 모바일 네트워크 의존적인 애플리케이션을 개발하거나, 개발하고자 하는 개발자들을 위한 것이라고 할 수 있겠네요.

‘가이드라인은 어떤 것들이 있나요?’

제공하는 가이드라인의 목차는 다음과 같습니다.

  1. 개 요 (Introduction)
    1. 개요
    2. 범위
    3. 용어 정리
  2. 네트워크 친화적 (Network friendliness)
    1. 모바일 네트워크의 요구사항과 제약사항
    2. 사용자 입장에서의 부드러운 연결성
    3. 효과적인 네트워크 연결 사용법
  3. 이상적인 모바일 애플리케이션 (Ideal mobile application)
    1. 비동기성
    2. 연결 끊김과 에러 처리
    3. 보안
    4. 효과적인 트래픽 사용

이처럼 본 가이드라인은 네트워크 사용 전반에 관한 효율적인 사용에 대해 정의하고 있습니다.

그럼 어떠한 내용이 있는지 문서의 내용 세 가지 정도만 간단히 살펴보겠습니다.

먼저 모바일 네트워크 요구사항과 제약사항 입니다.

한가지 예로 모바일 네트워크는 고유의 특정한 요구사항과 제약들이 있고, Wi-Fi 연결은 고정 네트워크로 끊김 없이 연결되지 않습니다. 따라서 개발자들은 이러한 사항들을 애플리케이션을 설계할 때 고려해야 합니다. 이러한 데이터 관련 요구사항과 제약사항들은 다음과 같습니다.

  • 제한된 대역폭 (Limited bandwidth)
  • 데이터 사용 비용 (Data is not always free)
  • 배터리 수명 (Battery Life)
  • 네트워크 연결성 (Network connectivity)
  • 보안 (Security)

네트워크 통신이 최적화 될 때 전반적인 사용자의 사용 편의성은 상당히 증가됩니다. 따라서 개발자들은 가능한 모든 최선의 데이터 전송 방법(efficient protocols, caching, compression, data aggregation, pipelining, etc.)을 적용해야 합니다.

다음으로는 사용자에게 끊김없는 사용감을 주기 위한 비동기성 입니다.

모바일 네트워크 환경에서 모든 요구에 대한 응답에 가장먼저 전제되어야 하는 것은 데이터 전송이 지연되거나 혹은 일부가 전송되지 않을 수 있다는 것 입니다. 애플리케이션의 설계 시에 응답 순서를 전적으로 신뢰해서는 안된다는 것 이지요.  또 사용자에게 전송 하려는 데이터가 모두 준비 되지 않았더라도 어느 정도는 전송할 준비가 되어야 합니다.

아래 그림 1은 모든 요청들이 동시적으로 만들어 졌을 때 다운로드에 필요한 순서입니다.

그림1

그림 1. 동시에 발생하는 요청

이 예제에서 순서는 3가지 요청(Image1, Image2, Image3)을 가지고 있습니다. 만약 같은 요청들이 병렬로 요구된다면 시간에 다른 흐름은 그림 2과 같을 것입니다.

그림2

그림 2. 동시에 일어나지 않는 요청

네트워크 연결은 일정한 속도가 신뢰되어야 하고, 사용자들은 요청들이 병렬적으로 일어났다는 것을 알아채지 않아야 합니다. 그림에서 보듯이 전반적인 로딩 시간 큰 차이를 보이지 않지만, 이러한 방식은 지연이나 연결 인터럽션이 없는 이상적인 네트워크에서만 가능합니다.

현실에서는 그림 3 에서 보듯 같은 순서라도 요구되는 특정 요청은 한참 나중에 받아질 수 있고 또 몇 요청들은 아무런 반응이 없을 수도 있습니다.

그림 3

그림 3. 현실에서의 비동기적 요청
(출처 : GSMA ‘Smarter apps for smarter phones’ figure-3)

만약 애플리케이션들이 전체 작업을 수행하기 전, 사용자들이 모든 응답에 기다리게 하고 계속해서 결과를 보여주지 않는다면, 사용자들은 빈 화면(blank screen)만들 보게 될 것입니다.

따라서 다음과 같은 요구 사항들을 애플리케이션을 설계할 때 적용해야 합니다.

  1. 네트워크 연결은 동시에 처리하는 방식으로 설계하여야 합니다. (사용자 인터페이스와 같은 스레드 내에 있어서는 안 됨) 이러한 분리는 지연된 반응으로 인해 사용자의 인터페이스를 절대 막지 않을 것입니다.
  2. 특정 영역에서 사용자는 데이터의 로딩 과정을 ‘프로그레스 바’나 ‘대체 문자열’, 혹은 간단한 ‘네트워크 지표’와 등으로 확인 할 수 있어야 합니다. 또한 그림 4에서와 같이 문자형태의 정보가 이미지를 다운받기 이전에 먼저 표시될 수 있다. 그리고 이미지가 다운되는 대로 즉시 이미지를 보여주는 것입니다.
  3. 애플리케이션은 반드시 응답 없음에 대한 가정이 있어야 합니다. 따라서 사용자들이 잘 아는 적절한 사용자 인터페이스가 소프트웨어에 문제가 없는 것을 보여주기 위해 진행도중에 유지되어야 합니다.그림 4

그림 4. 비동기적 요청에 따른 시간 흐름

다음으로는 스마트 폰 사용자라면 누구나 한번 쯤 보았을 로딩 화면에 대한 가이드라인 입니다. blocking User Interface (UI)는 네트워크로 데이터를 받을 때나 애플리케이션 구조의 decision tree를 생성하면서, 사용자가 모바일 기기를 사용하는 것을 UI가 막는 것을 뜻합니다. 데이터 손실을 방지하기 위해 팝업이 생길 수는 있지만 실제로 다른 작업 (데이터 다운로드 등)으로 인해 인터페이스가 사용자의 사용을 막는 것은 불필요합니다. (아래 그램 참고)

UI issue

그림5.로딩 시 올바른 UI 사용법과 그렇지 않은 예시
(출처 : GSMA – smarter apps for smarter phones 중 figure-5)

그러기 위해서 네트워크 작업은 백그라운드에서 진행되어야 하며, 사용자가 취소하거나 다른 화면으로 전환하는 것을 허용해야 합니다. 사용자에게 “Loading…” 메시지를 스크린에 보여주며 스크린을 막는 것은 불편하다는 것이죠.

다른 예로, 사용자가 웹 페이지 로딩을 요구했지만 브라우저는 서버에 연결을 실패했다고 합니다. 이 경우에 메시지 박스는 디스플레이 되어야 합니다. 하지만 이미지를 다 전송 받지 못했다면 깨진 이미지 자리에 대체 문자열(플레이스 홀더)를 보여주는 것이 더 바람직합니다.

따라서 애플리케이션의 UI와 decision tree를 설계할 때 사용자가 발생시킨 네트워크 연결(user-initiated network connection)인지 애플리케이션에 의해 발생 (application-driven activity)한 것인지를 구분하는 것이 중요합니다.

요약하자면 이상적인 모바일 애플리케이션의 네트워크 연결은 가능한 한 요구사항과 제약사항을 지키고 다른 메인 스레드를 UI와 시스템 이벤트로 막지 않아야 한다는 것입니다.

‘끝으로..’

이러한 효과적인 애플리케이션 개발에 유용한 가이드라인은 여기서 다운로드 가능하며 위 두 가지 예시 외에도 효과적인 네트워크 연결 사용법, 연결 끊김과 에러처리, 시큐리티와 관련한 가이드 뿐 아니라 Android , iOS, 윈도우 폰 각각의 팁들에 대해서도 제공하고 있으니 많이 참고하셔서 Smarter Application개발을 부탁드립니다.^^

조민혜 표준화팀

저는 표준화 팀에서 표준화 관련 프로토타입을 개발하고 있습니다^^

공유하기