푸시기능과 GCM / APNS

안녕하세요 남산돈가스입니다.

이번 포스팅은 iFriendsPet v.1.11에 업데이트 될 기능인 푸시기능에 대해서 정리하는 시간을 가져보려고 합니다.

이 주제는 총 3개의 포스팅으로 나누어 다음과 같은 순서로 게시될 예정입니다.
#1 푸시기능과 GCM / APNS
#2 Node.js를 이용하여 iOS 푸시기능 구현
#3 Node.js를 이용하여 Android 푸시기능 구현

그 첫번 째 포스팅으로 푸시기능의 개념과 GCM / APNS에 대해서 알아보도록 하겠습니다.

일단 저도 푸시기능을 처음 개발해보는 사람으로서 푸시기술이라는게 정확히 어떤 의미인지부터 궁금했습니다.
위키피디아에서 검색한 푸시란, 인터넷 상에서 어떤 전송 요청이 중앙 서버에서 시작되는 정보 전달 방식이라고 설명하는데요. 덧붙여, 이 푸시는 전송 요청이 클라이언트에서 시작되는 풀 기법과 대비되는 것이라고도 표현합니다.

위의 설명을 살펴보면 풀 방식과 푸시방식이 존재하는데, 이 두 방식은 서로 상반 된 기능을 하고 있다고 짐작해볼 수 있습니다.
간단하게 정리해보자면, 푸시 기법은 사용자(클라이언트)가 어떠한 이벤트를 실행 함에 따라 서버 사이드에서 그 이벤트에 대한 정보 등을 자동으로 제공해주는 서비스라고 할 수 있고, 풀 기법은 이와 반대로 사용자가 직접 필요한 정보를 서버쪽에 요청하여 해당하는 정보 등을 제공받는 형식이라고 말할 수 있습니다.

모바일 서비스가 주를 이루기 전의 푸시서비스는 흔히 뉴스, 메일링 서비스 등을 생각해 볼 수 있습니다. 웹 상에서 뉴스를 구독하거나 메일 수신에 동의하는 절차를 통해 자동으로 서버에서 클라이언트에게 주기적인 정보를 제공해왔었습니다.
이런 푸시 서비스는 스마트폰의 급격한 성장을 통해 모바일 서비스들의 기본적이고 중요한 기능으로 자리 잡았습니다.
이러한 이유들을 통해 우리 iFriendsPet 모바일 서비스에서도 사용자와의 지속적인 커뮤니케이션과 사용성 증가를 위해 푸시 기능을 도입하고자 생각했습니다.
그렇다면 지금부터 푸시기능을 어떻게 개발할 것인지 알아보도록 합시다.

우선, iFriendsPet의 푸시서비스 기능은 아래와 같이 동작 될 것입니다.

먼저, 사용자들은 푸시 알림을 수신할 것인지 여부를 체크합니다. 푸시알림에 동의한 사용자들은 iFriendsPet 서비스 내에서 발생한 다양한 이벤트에 대한 정보를 푸시로 제공받을 수 있게 됩니다. 여기서 말하는 이벤트는 앱에서 자신이 게시한 글에 댓글이나 감정표현이 등록되었을 때, 혹은 자신이 즐겨찾기 한 사용자가 새로운 콘텐츠를 등록하였을 때에 해당합니다.
사용자들이 이러한 이벤트를 발생시켰을 때, 서버에서 해당하는 이벤트들을 감지하여 iOS같은 경우는 APNS, Google같은 경우는 GCM에 푸시 알림을 요청하게 되고, 이 각각의 푸시서버들이 푸시 알림을 받을 클라이언트에 푸시알림을 전송하게 됩니다.
KakaoTalk_20170904_011931804


위에서 iOS는 APNS , Google은 GCM 를 이용한다고 했는데요. 이 GCM과 APNS가 무엇인지에 대해서 알아보겠습니다.

GCM이란?
Google Cloud Messaging의 약자로 개발자에게 서버에서 안드로이드 디바이스의 Application으로 데이터를 전송하는 것을 도와주는 서비스라고 할 수 있습니다. 기존에는 C2DM이었으나 서비스를 종료하고 GCM으로 바뀌었습니다.

GCM 구조

  • app은 message를 받기위해 GCM으로부터 device를 register함. 이 register를 3rd-party에 등록.
  • 3rd-party server는 app에 message를 보내기 위해 등록된 rgister와 함께 GCM으로 message전송.
  • GCM connection server는 register로 확인된 단말에 해당 message를 전송.
3
  • 1. 단말에서 GCM으로 register 요청
  • 2. GCM에서 register 성공 후 registration id 전송
  • 3. third-party server로 registration id 전송
  • a. Registration id 값과 message를 GCM으로 전송
  • b. 해당 Registration에 맞는 단말에 message 전송
출처: http://humble.tistory.com/30 [개발스토리]
GCM의 구조에 대해서 설명하기 위해 자료를 찾다가 정리가 잘 되어있는 내용이 있어 참고하였습니다.

APNS란?
Apple Push Notification Service의 약자로 애플의 푸시 알림 서비스를 뜻하고, GCM과 비슷한 맥락으로 개발자가 제작한 응용프로그램이 새 데이터가 도착하면 데이터를 모니터링하면서 영구적 보안 채널을 통해 APNS와 공급자를 연결하여 대상 장치에 알림을 보내는 서비스라고 할 수 있습니다.

APNS를 이용하기 위하여 반드시 필요한 준비물들이 있는데요. APNS 인증서와 key파일 등이 있습니다. APNS 셋팅을 위한 내용은 세번째 시간에 구체적으로 다루기로합시다.

APNS 구조
image
GCM의 동작 방식과 비슷하게 프로바이더에서 APNS로 알림에 대한 요청을 하게 되면 APNS의 등록 된 토큰을 통해 해당 애플기기에 푸시 알림메세지를 전달하는 방식으로 동작하게 됩니다.


여기까지 푸시 서비스의 개념에 대해서 알아보았고, 모바일 시장의 주를 이루는 iOS와 Android에서 제공하는 푸시 서비스인 GCM과 APNS의 동작방식에 대해서도 알아보았습니다. 다음 시간부터는 이 GCM와 APNS를 활용해 Node.js에서 푸시 서버를 구축해보는 시간을 갖도록 하겠습니다.

댓글

  1. 푸쉬서버 구축해보려고 이곳저곳에서 푸쉬서버에 개념을 찾다가
    선생님 블로그에서 글보고 개념이 많이 잡혔어요.
    푸쉬서버에 대한 개념이 한눈에 들어오네요.
    감사합니다.^^

    답글삭제

댓글 쓰기

주간 인기글

[Spring Boot] JPA + Pageable 을 이용한 페이징 처리

[AWS] Bastion Host 를 활용한 SSH 접근통제 #1

[Android] Parcelable 에 대한 쉬운 이해

[AWS] 사용중인 EC2 인스터스의 Type 변경하기

[ubuntu] 신규 계정에 sudo 권한 추가하기