오늘은 저희 Project의 주요 기능 Architecture를 정리했습니다
Chat
Axios 란?
node.js와 브라우저를 위한 Promise 기반 HTTP 클라이언트
1. sendbird API

✅ 제공하는 기능 중 쓸 수 있는 것
-
실시간 채팅
: Sendbird는 실시간 채팅을 지원하여 사용자 간의 실시간 메시지 교환을 가능하게 합니다. 개발자는 API를 통해 사용자를 채널에 추가하고 메시지를 전송하고 수신할 수 있습니다.
-
푸시 알림
: Sendbird는 푸시 알림을 지원하여 앱 백그라운드 상태에서도 새로운 메시지가 도착했음을 사용자에게 알릴 수 있습니다.
-
사용자 관리
: Sendbird는 사용자 관리를 위한 기능을 제공합니다. 개발자는 사용자를 생성, 삭제, 차단 등을 관리할 수 있으며, 사용자의 프로필 정보를 설정할 수도 있습니다.
-
확장성
: Sendbird는 수평 확장이 가능하도록 설계되어 있습니다. 사용자 수나 메시지 트래픽이 증가해도 안정적으로 운영할 수 있습니다.
✅ 사용 기술 → 정한 기술 스택에 모두 적용 가능
✅ DB 선택 시 고려사항
🔗 참고 문서
Alarm
push alarm 2가지 종류
✅GCM
모바일 푸시 알림을 제공하는 서비스.
-
GCM은 Google Cloud Messaging의 약자입니다
-
GCM은 이전에 사용되던 Google의 클라우드 메시징 서비스입니다
-
현재는 FCM으로 대체되었으며, 새로운 앱에서는 FCM을 사용하는 것이 권장됩니다.
-
GCM은 안드로이드와 iOS 플랫폼을 대상으로 하는 푸시 알림을 지원했습니다
.
✅FCM
GCM에 비해 더 발전된 서비스
- FCM은 Firebase Cloud Messaging의 약자입니다
- FCM은 GCM을 대체한 최신 서비스로, 더 많은 기능과 개선된 성능을 제공합니다.
- FCM은 Firebase 플랫폼과의 강력한 통합을 제공하므로 앱 개발과 관리를 더욱 용이하게 합니다.
- FCM은 다양한 기기 및 플랫폼에 대한 푸시 알림을 제공합니다. 안드로이드, iOS, 웹 및 서버 애플리케이션을 대상으로 하는 푸시 알림을 통합적으로 관리할 수 있습니다.
- FCM은 대규모 확장이 가능하며, 안정성과 성능 면에서 뛰어난 결과를 보여줍니다.
- GCM은 현재 더 이상 새로운 앱에 사용되지 않으며, 기존 GCM 앱은 FCM으로 마이그레이션하는 것이 권장됩니다.
FCM은 GCM에 비해 더 발전된 서비스로서 Firebase 플랫폼과의 강력한 통합과 뛰어난 성능을 제공합니다. 따라서 새로운 앱 개발이나 기존 GCM 앱의 업그레이드를 고려할 때, FCM을 사용하는 것이 좋은 선택입니다
✅차이점
- 구독 로직 : FCM이 GCM 보다 간편하다. GCM은 직접 구현하지만 FCM은 개발자가 직접 구현할 필요가 없다.
- FCM은 특정 타겟층에 푸시 할 수 있다.
- 구글이 FCM을 밀고 있어, 이미 GCM은 사장된 분위기다.
- GCM은 FCM의 부분집합이라고 생각하면 편하다.
결론적으로 FCM을 사용하는게 좋다!
FCM의 메시지를 보내는 과정
✅과정

- 토큰 요청 및 획득
먼저 사용자가 앱을 설치하고 최초 실행시 토큰을 얻기위해 클라우드 서버에 요청을 보내고 토큰을 획득한다.
- 서버에 토큰 저장
획득한 토큰을 서버로 전송하여 서버 db에 저장한다.
이 토큰은 서버가 클라우드에 메시지 전송을 요청할 때 어디로 보내는지 구분하기 위한 용도로 사용된다.
- 토큰을 이용해 메시지 전송 요청
서버에서 클라우드로 메시지 데이터와 함께 토큰을 보내 전송을 요청한다.
- 메시지 전송
클라우드는 요청받은 메시지를 토큰에 해당하는 단말기에 전송한다.
- 리스너를 통해 메시지 수신
앱이 실행중이 아니더라도 리스너를 통해 메시지를 수신할 수 있다.
✅Firebase란?
- 구글(Google)이 소유하고 있는 모바일 애플리케이션 개발 플랫폼
- 앱을 개발하고, 개선하고, 키워갈 수 있는 toolset
- 분석, 인증, 데이터베이스, 구성 설정, 파일 저장, 푸시(push) 메시지 등의 서비스를 제공
QR
React Native와 Nest.js 사용하여 APP 개발할 경우 QR 코드 생성을 위한 라이브러리로는
react-native-qrcode-svg
와 qrcode
추천합니다.
이 두 라이브러리는 각각 React Native와 Nest.js에서 QR 코드를 생성하는 데 유용한 도구
✅클라이언트 측에서 QR 코드 생성
- 앱에서 QR 코드를 사용하는 경우가 많이 있습니다. 예를 들어, 사용자 인증, 링크 공유, 상품 정보 전달 등의 기능에서 QR 코드를 활용할 수 있습니다.
- 클라이언트 측에서 QR 코드를 생성하면 사용자가 앱 내에서 QR 코드를 스캔할 수 있고, 해당 기능을 활용할 수 있습니다.
- 클라이언트에서 QR 코드를 생성하는 것은 사용자 경험을 개선하고 앱의 기능을 확장하는 데 도움을 줄 수 있습니다.
✅서버 측에서 QR 코드 생성
- 서버에서 QR 코드를 생성하는 이유는 주로 동적인 데이터와 관련이 있습니다.
- 예를 들어, 서버에서 생성한 QR 코드에는 사용자 정보, 상품 정보, 이벤트 정보 등을 포함할 수 있습니다.
- 서버에서 QR 코드를 생성하면 클라이언트에게 생성된 QR 코드를 전달하거나, 이미지 파일로 저장하여 클라이언트에서 다운로드할 수 있습니다.
- 이를 통해 서버 측에서 QR 코드를 생성하여 동적인 데이터를 포함한 고유한 QR 코드를 제공할 수 있습니다.
클라이언트와 서버에서 동일한 데이터를 사용하여 QR 코드를 생성한다면, 생성되는 QR 코드는 동일한 내용을 담고 있을 것입니다. QR 코드는 입력된 데이터에 따라 생성되며, 동일한 데이터를 사용하면 동일한 QR 코드가 생성됩니다.
즉, 클라이언트와 서버에서 같은 데이터를 기반으로 QR 코드를 생성한다면, QR 코드 내용은 동일하게 유지됩니다. QR 코드의 생성 방식이 동일하다면, 생성된 이미지도 동일한 형태로 나타날 것입니다.
✅QR코드에 고유번호 포함시키기
- 고유 번호 생성: Nest.js 서버에서 QR 코드와 함께 사용될 고유 번호를 생성합니다. 이는 UUID(Universally Unique Identifier) 또는 다른 방식의 고유 식별자를 사용하여 생성할 수 있습니다. 예를 들어, "uuid" 라이브러리를 사용하여 고유 번호를 생성할 수 있습니다.
- QR 코드 데이터에 고유 번호 포함: QR 코드 데이터에 고유 번호를 포함하여 QR 코드를 생성합니다. QR 코드 데이터에는 URL, 텍스트, 매개변수 등의 다양한 정보를 포함할 수 있습니다. 고유 번호를 QR 코드 데이터에 추가하여 QR 코드 내에 해당 번호를 포함시킵니다.
- QR 코드 이미지 생성: "qrcode" 라이브러리를 사용하여 QR 코드 이미지를 생성합니다. 이 라이브러리는 데이터를 기반으로 QR 코드 이미지를 생성하는 기능을 제공합니다. 따라서, QR 코드 데이터에 포함된 고유 번호를 사용하여 QR 코드 이미지를 생성할 수 있습니다.