티스토리 뷰

====== 2023년 9월 14일 업데이트 ======

래셔널아울 솔루션은 API 솔루션이다. 래셔널아울 API솔루션은 API를 통해 원하는 형태의 앱을 개발할 수 있는 유연성이 있으나 개발 과정을 거처야 하는 과정이 필요하다. 개발 과정없이 고성능의 푸시메시지를 이용하고자 하는 고객 요구가 존재해 푸시알림, 문자, 알림톡을 통합한 통합 메시지 솔루션을 출시하였다.

개발 과정없이 초당 1만 건 이상 발신 가능한 고성능 통합메시지 솔루션

 

래셔널아울 통합메시지 솔루션 출시

래셔널아울 솔루션은 API 솔루션이다. API를 이용해 개발과정을 거쳐야 한다. - 실시간 데이터 API를 통해 채팅, 온라인 게임, 실시간 소셜앱을 개발 - 푸시 메시지 API를 모바일 앱에 푸시 기능을 추

rationalowl.tistory.com

 

====== 원문 ======

 

래셔널아울 메시지 처리속도를 설명할때 20만 TPS(Transaction Per Second), 10만 RPS(Request Per Second)라고 이전 글에서 설명했다. 그런데 푸시알림 성능 관련 다음과 같은 고객문의가 종종 있었다.

 

 "그럼 도대체 초당 푸시알림을 몇 번 발신가능하다는 소리냐?"

 

본글은 초당 푸시발신 속도와 성능을 제대로 활용하는 팁을 설명하고자 한다.

초당 20만 실시간 데이터(메시지) 발신

채팅, 게임, 실시간 소셜앱등에서 이용하는 실시간 데이터는 평균 0.1초 미만의 전달을 보장하며 초당 20만 개의 실시간 데이터를 전달한다. 즉, 20만 TPS와 실시간 데이터 전송속도가 같다고 생각하면 된다. 2016년  MVP 제품 테스트를 통해 19만 TPS를 확인하였는데 최근 20만을 상회하는 결과를 확인하였다.

 

아래 래셔널아울 API 호출시 그 성능을 보장한다.

  • 실시간 다운스트림 API: sendMulticastMsg() / sendBroadcastMsg()/ sendGroupMsg()
  • 실시간 P2P API: sendP2PMsg()
  • 실시간 업스트림 API: sendUpstreamMsg()

초당 10만 푸시 알림 발신

래셔널아울 푸시 발신 속도는 초당 10만개의 푸시알림을 단말앱에 발신이 가능하다.

 

아래 래셔널아울 커스텀 푸시 API 호출시 그 성능을 보장한다.

  • sendMulticastCustomPush()
  • sendBroadcastCustomPush()
  • sendGroupCustomPush()

이는 실시간 API 성능의 50% 수준인데 성능제한 요인은 크게 2가지이다.

커스텀푸시 성능제한 요인

  • 1대의 트래킹 서버의 초당 10만 알림전달 결과 처리속도
  • 퍼블릭 푸시 서버(FCM 서버/ APNs 서버)와의 통신 처리속도

트래킹서버의 초당 10만 알림전달 트래킹은 이전 블로그 글에서 설명하여 본 글에서는 퍼블릭 푸시 서버와의 통신시 성능제한 사항에 대해 설명하고자 한다.

 

래셔널아울 서버가 퍼블릭 푸시 서버에 푸시발신 요청을 보내면 퍼블릭 푸시 서버는 다음과 같은 요청 결과를 반환한다.

  • 요청결과 Accept
  • 요청결과 Reject(푸시 토큰이 존재하지 않을 경우)
  • 요청결과 Reject(푸시 토큰포맷이 잘못 되었을 경우)

FCM 서버와의 통신속도

 

현재 래셔널아울은 FCM 서버에  초당 최대 10,000회 푸시요청을 보낸다. 왜냐면 FCM서버의 요청 결과 회신 속도가 최대 초당 10,000회이기 때문에 그 이상 요청을 보내는 것이 의미가 없다. 해당 결과는 2020년 기준 래셔널아울 서버 구현방법과 FCM 서버의 반응속도를 기반으로 한 결과이다.

 

 또한 FCM은 한 번에 1000단말앱에 멀티캐스트로 푸시를 지원한다. 래셔널아울에서는 100단말앱을 대상으로 초당 1만회 커스텀 푸시 발신 API를 호출하여 초당 100만 푸시 발신 테스트가 가능함을 확인하였다. 그러나 초당 100만 푸시를 발신할 경우 트래킹 서버 1대의 알림전달 트래킹 처리한도 10만을 초과하여 10대의 트래킹 서버를 클러스터링 구조로 만들어 처리해야 한다. 그러나 현실적으로 초당 10만 푸시 처리속도도 오버스펙이다. 만약 초당 10만 이상을 원하는 곳이 있다면 별도로 요청하시기 바란다.

APNS 서버와의 통신속도

현재 래셔널아울은 APNS 서버에  초당 최대 3,000회 푸시요청을 보낸다. 왜냐면 APNS서버의 요청 결과 회신 속도가 최대 초당 3,000회이기 때문에 그 이상 요청을 보내는 것이 의미가 없다. 해당 결과는 2020년 기준 래셔널아울 서버 구현방법과 APNS 서버의 반응속도를 기반으로 한 결과이다.

래셔널아울 커스텀 푸시 성능 제대로 활용하기 팁

 래셔널아울 커스텀 푸시 성능을 제대로 활용하는 핵심은 앱서버가 푸시알림 발신시 대상 단말앱이 10만을 초과하지 않는 한도 내에서 초당 최대 1만 커스텀푸시 발신 API를 호출하는 것이다. 자세한 설명은 아래와 같다.

1. 초당 푸시 알림 대상 단말앱 대상 10만 이내

  래셔널아울 트래킹 서버 한 대가 처리가능한 푸시알림 전달여부 트래킹 속도가 초당 10만 건이다. 만약 그 이상을 원한다면 트래킹 서버를 클러스터링으로 확장해야 한다.

 

2. 초당 최대 1만 커스텀 푸시 발신 API 호출 (래셔널아울 앱서버 라이브러리 이용시)

 래셔널아울을 이용하여 앱서버 개발시 커스텀 푸시 발신 API인 sendMulticastCustomPush()/ sendBroadcastCustomPush()/ sendGroupCustomPush() 초당 호출 횟수를 최대 1만회로 하는 것이 가장 효율적이다. 이는 FCM 서버의 요청결과 응답 최대속도를 맞춘 것이어서 초당 1만 회 이상 호출하더라도 성능향상은 없다.

 

그리고 커스텀 푸시 발신 API 호출 시 다음의 경우가 있다.

- sendBroadcastCustomPush() 호출시

 단말앱 사용자가 10만 이상의 경우 전체 알림발신할 경우 API호출 후 1초 뒤에 다음 커스텀푸시 발신 API를 호출한다.

- sendGroupCustomPush() 호출시

 단말 그룹에 10만 이상의 단말앱이 포함된 단말그룹에 알림발신할 경우 1초 뒤에 다음 커스텀푸시 발신 API를 호출한다.

- sendMulticastCustomPush() 호출시

 멀티캐스트는 한번에 대상 단말이 한대에서 최대 2000단말앱에 커스텀 푸시를 발신한다. 초당 10만 단말앱을 초과하지 않는 한도에서 초당 최대 1만 sendMulticastCustomPush API를 호출한다.

 

3. 초당 최대 1만 커스텀 푸시 발신 API 호출 (래셔널아울 REST API 이용시)

 래셔널아울 앱서버 라이브러리에서 제공하는 커스텀푸시 발신 API 호출 속도는 거의 제로인데 반해 REST API의 커스텀 푸시 발신 API 호출시 약 15미리초의 시간이 소요된다. 따라서 앱서버 한 세션에서 초당 70회의 커스텀 푸시 발신 API 호출이 가능하여 초당 1만회 커스텀 푸시 API를 호출하기 위해서는 약 140개의 세션에서 동시에 커스텀 푸시 API를 호출해야 한다.

 

 

 

 

댓글