알림 구현하기 2 : 완전 쉽게 알아보는 FCM

이돈이면 official·2023년 8월 21일
0
post-thumbnail
post-custom-banner

작성자: 우아한테크코스 5기 여우

이돈이면 프로젝트에서
애플리케이션에 알림을 보낼 방법으로 어떤 게 있을 까 고민하다,

우테코 캠퍼스에서 제일 똑똑한 크루 중 한 사람인 홍실이 추천해준
Firebase Cloud Messaging, FCM에 대해 알게 되었습니다.

알림 기능을 함께 구현하게 된 안드로이드 파트너 코비도
FCM을 사용해본 경험이 있다고 하는데요!

이 FCM이란 무엇일까요?


Firebase Cloud Messaging

FCM 공식 소개영상

FCM을 한 줄로 소개한다면
’무료로 메시지를 보낼 수 있는 교차 플랫폼 메시징 클라우드 서버’ 라고 할 수 있습니다.

오 씻! 알쏭달쏭한 단어가 잔뜩 나왔군요.
어려운 단어만 골라내 조금 더 자세히 알아보면서
FCM의 특징을 살펴보도록 합시다.

교차 플랫폼

당연한 이야기이지만 전자기기는 제조사별로 운영체제가 다르고(Android, IOS),
전자기기에 푸시 알림을 보내는 방법 또한 운영체제별로 다릅니다.

예를 들어 Android 기기에 푸시 알림을 보낼 때는 GCM(Google Cloud Messaging)을,
IOS 기기에 푸시 알림을 보낼 때는 APNS(Apple Push Notification Service)를 사용해야 합니다.

만약 화웨이 계열의 전자기기도 지원하겠다고 한다면
이를 지원하는 도구를 또 익혀서 개발해야겠죠?

하지만 FCM은
애플리케이션에서 FCM을 이용해 알림 기능을 개발해두기만 하면
GCM이나 APNS같은 디바이스별 실제 알림 발송 방법은
FCM에서 알아서 작업해 알림을 발송해 줍니다!

(현재 화웨이는 정치적 이유로 FCM 서비스에서 제외됐습니다)

이렇게 디바이스의 종류와 관계없이 알림 메시징 서비스를 지원한다는 의미로
교차 플랫폼 메시징 클라우드 서버’라고 부르는 것입니다.

이러한 특징은 꼭

우리의 서비스는 FCM이라는 인터페이스에만 의존하고
구체적인 구현체들이 FCM을 호환하게 만듦으로써,
변경에는 닫혀있고 확장에는 열려있게 만드는
객체지향의 OCP, DIP를 떠올리게 하네요!

오 씻 이 와중에도 객체지향을 떠올리다니
이제 개발자 다 된 것 같아요 으하하

죄송합니다


클라우드 서버

알림 구현하기 1 포스팅에서 이벤트 기반 폴링(Event-Based Polling)의 다양한 사례를 살펴보았는데,
Long Polling, Web Socket 그리고 SSE는 한 가지 공통된 단점을 가지고 있었습니다.

바로 클라이언트와 서버가 연결을 유지하는 동안
서버의 자원을 지속해서 소모한다는 것.

이는 클라이언트가 알림 정보를 받기 위해
서버와 직접 연결하기 때문에 발생하는 문제점이라고 볼 수 있는데요.

FCM에서는 이 문제점을 해결하기 위해
클라이언트와 서버 사이에 메시지 전송 전용 클라우드 서버를 하나 두고,
클라이언트는 본체 서버가 아닌 이 클라우드 서버와 연결을 유지하면서 알림을 받을 수 있도록 도와줍니다.

‘잉 근데 결국 클라우드 서버랑 본체 서버랑 연결돼 있을거자나요..
가운데 한 다리 더 낀 것뿐이지 똑같은 거 아니냐! 크크루삥뽕’

놀랍게도 그렇지 않습니다.

애플리케이션 서버에서는
알림 발송이 필요한 그 순간에만
FCM 서버로 요청을 딱 보내고 응답도 즉시 받는
무상태(Stateless) 상호작용
을 하게 돼요!

이러한 방식은 클라이언트와 서버 양쪽에게 성능 이점을 가져다 줍니다.

애플리케이션 서버로서는
클라이언트와 서버가 연결을 유지하지 않고도
실시간 단방향 알림 발송이 가능해졌기 때문에
이벤트 발생 폴링 시스템의 고질적인 단점이었던
서버 자원 고갈 문제를 멋지게 해결할 수 있게 되었고요,

클라이언트(주로 디바이스) 입장에서는
우리가 만든 웹 애플리케이션과 연결을 유지하는 것이 아니라
다양한 최적화 기능을 제공하는 FCM 클라우드 서버와 연결하기 때문에
비교적 적은 배터리와 네트워크 사용만으로도 알림을 수신할 수 있다는 장점이 생겼습니다.

아주 멋있군요 빠이어베이스~~


이렇게 해서
이돈이면 팀에서 알림 기능 구현을 위해 도입한 FCM이
어떤 특징을 가졌는지 학습해 보았습니다.

큰 기업인 Firebase에서 알찬 공식문서를 제공해 주기도 하고,
FCM를 이용한 알림 구현 방법이 다양한 기술 블로그에 소개되어 있으므로
비교적 낮은 학습곡선을 가지고 있다는 장점 또한 가지고 있어요.

웹 소켓 등을 직접 만들면서 학습하는 것도 좋지만

만약 프로젝트 일정상 빠르게 알림 기능을 구현해야 할 때에는
적극적으로 FCM을 사용해보는 것도 괜찮은 선택이다~

profile
이돈이면 기술 블로그입니다 🫶🏻
post-custom-banner

0개의 댓글