React Twitter Clone (1)

choidy180·2일 전
1

React_Twiiter_Clone

목록 보기
1/8

Firebase는 무엇인가

훌륭한 백엔드 기능들을 포괄하고 그 기능들은 제공해주는 것

1. NOSQL 데이터베이스를 지원합니다.

기존의 리얼타임 데이터베이스도 지원하지만, 리얼타임 데이터 베이스는 서버 확장이 자동적으로 지원되지 않아서 데이터베이스를 추가적으로 생성해줘야 합니다. Firebase는 사용자가 많아질 경우 서버 확장도 알아서 진행하기 때문에 사용자가 많아질 경우 서버 확장에 대한 걱정을 놓을 수 있습니다. 저장공간은 1GB이지만 소규모 프로젝트에서는 문제되지 않습니다.

그리고 Firebase는 바로 소켓으로 연결되어 실시간 서비스 구축이 용이하다는 점입니다. 기존의 리얼타임 데이터베이스에서 사용하던 기능 그대로 사용 가능하고 리얼타임 데이터베이스의 경우 실시간 접속수의 상한이 존재했으나, Firestore에서는 제한이 사라졌습니다. 채팅처럼 사용자들끼리 실시간으로 데이터를 공유해야 한다면 아주 좋으며 NOSQL인 만큼 서버구조를 미리 만들어 놓지않고 바로 클라이언트 개발진행과 동시에 바로바로 구조를 만들거나 변경할 수도 있습니다.

다만 Firebase는 다중 칼럼 검색이 불가능하고, 정렬 색인도 따로 지정해야하며 서버를 구축하는 것보다 반응 속도도 느립니다.
다양한 조건으로 검색을 하거나, 빅 데이터를 저장해야하는 서비스를 생각중이라면 좋은 선택지가 아닙니다.

2. Storage - 사용자의 사진 및 동영상 저장

Storage는 모든 서비스에서 Database 만큼 필요한 서비스입니다. 사진 & 동영상, 기타 문서등을 모두 업로드할 수 있습니다.
기본적으로 5GB를 제공해주고 호스팅 서비스나 클라우드 서버를 이용할 때 용량이 그리 크지 않아서 적지않은 양입니다.
100MB 이상의 대용량 파일을 저장할 생각이라면 Storage 서버를 구성하는 것이 좋습니다

Firebase는 클라이언트 단에서 바로 파일을 올리기 쉽습니다. 파일 업로드 개발을 위해서는 서버단의 개발이 끝난 후에 클라이언트 단과 맞춰야 하고 그 과정에서 파일을 DB와 Storage중 어디에 저장할 것 인지도 결정해야 하지만, Storage를 이용하면 업로드만 해주면됩니다. 서버에 어떤 식으로 저장될 것인지는 Firebase가 알아서 해줄 것입니다.

3. Authentication - 모든 플렛폼에서 쉽게 로그인

인증 부분은 확실히 편리하며, 이메일 / 비밀번호 반식부터 전화, SNS로그인, 익명으로 로그인의 모든 방식을 지원합니다.
이메일 인증/비밀번호 재설정/이메일 주소 변경/SMS 인증 등을 Firebase에서 기본적으로 제공해줍니다.

그리고 인증과 Firestore, Storage 등의 보안 규칙과 연동하여 해당 인증을 받은 사용자만이 Firestore, Storage에 접근할 수 있도록 할 수 있어 보안도 쉽게 작성할 수 있습니다. Console에서 손쉽게 유저 리스트를 확인할 수 있어서 간단한 유저 관리는 Console에서 처리할 수 있으나, 서비스를 관리하기 위한 용도로 쓰기에는 충분하지 않습니다. 가능하면 관리 기능을 따로 만들어서 관리하는게 좋습니다.

4. Hosting

호스팅은 기본적은 프런트 앤드 기반의 웹 소스를 올릴 수 있는 서비스입니다. 앱 소개 페이지나 SPA WEB을 운영할 예정이라면 호스팅 업체에서 서비스를 받는 것보다 훌륭합니다. Firebase Hosting은 기본적으로 CDN에 등록이 되기 때문에 어느 나라에서 접속을 하더라도 속도 이슈를 생각하지 않아도 되는 것이 장점입니다. 글로벌 서비스를 오픈하거나 특정 지역 마케팅에서 이점을 가질 수 있습니다.

또한 CLI 배포로 서버를 올릴 수 있어서 따로 FTP에 접속한다거나 하지 않아도 손쉽게 배포가 가능합니다. 배포된 버전 관리도 한눈에 볼 수 있습니다.

최근 Git 저장소들에서 Pipeline기능을 제공하고 있습니다. 도메인 연결도 가능하여 실 서비스 운영에도 사용가능 합니다.

5. Firebase Cloud Messaging(FCM) - 모든 기기에 메시지 전송

앱개발에 있어 아주 중요한 Push Notification을 쉽게 제작할 수 있는 시스템 입니다. IOS는 푸시 인증서를 등록해야 하고 (1년마다 갱신, 인증키 등록 편함) 안드로이드는 별도의 절차 없이 바로 등록해 사용할 수 있습니다. 안드로이드는 FCM, IOS는 APNS를 이용하여 발송하는 것이 기본이었으나 FCM을 통해 손쉽게 푸시를 발송 할 수 있고 푸시메시지를 예약하거나 글로벌 서비스를 서비스한다면 현지 시간대에 맞춰서도 전송가능 합니다.

6. Cloud Functions

혹시라도 서버단에서 처리해야 하는 작업이 있는 경우 Functions을 사용할 수있습니다. 기본적으로 REST API를 제작할 수도 있으며, 각종 Firebase 서비스와 백그라운드 트리거로 연동됩니다. 데이터베이스를 제어하거나 사진/동영상을 변환하거나 특정 데이터가 처리됐을 때 푸시를 전송한다거나 하는 작업을 실행할 수 있습니다.

다만 실제 개발 시에 소스 테스트가 조금 불편삽니다. 배포에 시간이 소요되고 로그 확인까지도 오래걸리기 때문입니다. Firebase Emulator를 이용하여 로컬에서 테스트 해볼 수 있으나 생각보다 설정이 귀찮습니다.

또한 Functions의 백그라운드 트리거는 최대 10초 정도의 딜레이가 발생하고 실시간 서비스에서는 매우 긴 시간이기 떄문에 빠른 응답이 요구되는 서비스에서는 추천하지 않습니다. 1~3초이내에 보통 처리되나 10초까지 딜레이가 발생할 수도 있습니다.



Firebase를 이용하면 손 쉽게 서비스를 개발할 수 있지만 장-단점이 명확하므로 만드려는 서비스가 Firebase와 잘 맞는지 확인하고 개발하는 것이 좋습니다.

profile
Student in web development

0개의 댓글