Community

APNs 연동 작업 중

컨스택츠에서 만들고 있는 iOS 앱이 그럭저럭 순조롭게 나아지고 있고, 이제 푸시 알림을 보낼 단계가 되었습니다. 어제부터 본격적으로 Apple Push Notification service(APNs)에 연결하는 방법을 알아보고 있고, 이번 주 중에 연동을 완료하려는데요, 그간 파악한 내용들을 마구 나열해보려고 해요. 푸시 알림이 처음 나왔던 시절에 연동 작업을 해본 기억이 어렴풋이 남아있습니다. 다음 커뮤니케이션 다니던 시절에 마이피플 프로젝트를 시작하게 된 데모였습니다. 그 라테 시절에는 안드로이드에는 아직 알림 서비스가 있지도 않을 때였습니다. 그 오래 전에 해본 거니, 지금은 아주 새로이 공부하는 기분입니다. 몇몇 부분은 기억이 좀 나는 것 같기도 합니다만, 제 기억력이 그렇게 좋을리 없으니, 아마도 "기억 나는 것 같다"는 착각일 겁니다. ㅎ ## HTTP/2 프로토콜 ## 암튼, 오랜만에 보니 눈에 띄는 점은 일단 프로토콜이 HTTP/2로 바뀐 것 같다는 점입니다. 그 시절에는 아마 HTTP/2가 없거나, 거의 쓰이지 않았던 것 같은데요, 이제는 그래도 쓸만한 환경인 거 같습니다. 저희 쓰는 하스켈에도 HTTP/2 라이브러리가 있을 정도면, 충분히 널리 쓰인다고 봐도 될 것 같습니다. APNs 같이 대형 트래픽을 받는 입장에서는 HTTP/2가 필수적인 선택이겠죠. 아, 문득 이 하스켈용 HTTP/2 라이브러리가 탄탄할지 걱정이 앞섭니다만, 괜한 걱정이기를 바래봅니다. ## 토큰 인증 방식 추가 ## 또, 오래전에는 TLS 연결을 하면서 클라이언트 인증서를 이용해서 인증 처리를 했었는데, 이제는, 그 인증방식에 더불어 JWT로 인증 토큰을 만들어서 쓰는 방식이 추가된 것으로 확인했습니다. 이 인증 토큰은 20분에서 60분 사이에 한 번 갱신을 해서 써야 한다고 명시돼 있습니다. ## CLI 툴은 뭘 쓸까? ## 저는 터미널에서 HTTP 요청 테스트를 할 때, HTTPie라는 툴을 즐겨 썼었는데, 아쉽게도 이 툴은 HTTP/2를 아직 지원하지 않는 것 같습니다. (플러그인을 따로 설치하면 되는 것 같긴 한데, 기본적으로는 미지원 상태인가 봅니다.) 조금 찾아보니, curl은 http/2 프로토콜을 지원하는 것 같은데, curl이 내부적으로 nghttp2라는 라이브러리를 써서 구현했고, 이 라이브러리를 개발하는 쪽에서 CLI 툴도 만들어 놓은 것 같아서, 차라리 그 nghttp라는 새로운 CLI 툴을 써서 실험해볼까 하고 있습니다. ## APNs 인증서 ## 일단 오래 전에 썼던 방식이 그나마 익숙할 것 같아서, 클라이언트 인증서를 이용해서 접근해보기로 했습니다. macOS의 키체인에 OpenSSL이 쓰는 x509포맷으로 내보내기 기능이 있어서, pem파일 포맷으로 저장했고, 이걸 써서 연결하면 될 것 같습니다. 새로운 방식인 토큰 기반 인증을 쓰면, 한 회사의 여러 앱을 쓰면서도 같은 토큰으로 인증 처리를 할 수 있다고 합니다. 기존 클라이언트 인증서 방식으로는, 각각의 APNs 연결을 관리해야 하고요. ## 스타트업 실감 ## 푸시 알림을 애플 푸시 서버에 붙어서 직접 발송을 해보려니, 새삼 제가 스타트업에서 일하고 있다는 실감이 납니다. 이런 일은 다른 팀에서, 아니면 최소한 다른 누군가가 연동해 준 상황에서 내부 API를 써서 간단히 보냈음직한 일인데요, 직접하자니 신기하기도 하고, 재밌기도 하고 합니다. 나이들어서도 계속 개발 일을 했으면 좋겠다는 생각이 있었는데, 어느덧 그런 상황(?)이 되었다는 점도 즐겁(?)고요. --- 그럼 이번 주, 또 몰입해 개발해서, 연동 작업을 잘 해보겠습니다.

알림

알림이 없습니다