로컬에서는 잘 되는데 ☘️

Firebase란?

by youngjun._.

 

 

모바일 서버를 개발하기 위해서는 인증, 데이터베이스, 푸시 알람, 스토리지, API 등 모든 것을 개발해야 한다.
하지만 모바일 서버는 이런 모든 것을 구성하는데 구성하는 범위가 매번 새로운 앱들과 차이 나지 않기 때문에 리눅스를 설치하고, FTP를 설치하고, 데이터베이스를 설치하고, 노드 서버나 스프링 서버를 올리고, 방화벽을 올리고, 도메인을 구입하는 등 반복적인 작업을 앱 개발할 때마다 하는 것은 시간낭비!

FireBase는 이 모든 플랫폼을 프로젝트 구축 시 자동적으로 만들어 준다.

또한 서버를 구축하기 위해서 리눅스 명령어를 알 필요도 없으며 도메인을 구입할 필요도 없고 개발하는 동안에는 서버를 구입할 필요도 없다!

 

Firebase란?

  • Firebase는 14년도에 구글에서 인수한 모바일, 웹 애플리케이션 개발 플랫폼
  • 16년도부터 구글에서 서비스를 대폭 강화한 BaaS(Backend as a Service)
  • 백엔드 기능을 클라우드 서비스 형태로 제공하기 때문에 서버리스 애플리케이션 개발 가능
  • 앱 개발자가 앱 개발(프런트엔드)에만 전념할 수 있음!

 

어떤 서비스를 제공할까?

크게 앱 개발, 앱 품질 향상, 비즈니스 성장 도모 3가지의 기능을 제공한다.

1. 앱 개발

 

1.1 Colud Firestore : 

클라우드에 호스팅 되는 NoSQL 데이터베이스를 사용해서 글로벌 규모의 데이터를 저장하고 사용자와 기기 간에 동기화할 수 있습니다. Cloud Firestore는 효율적인 데이터 쿼리와 실시간 동기화 및 오프라인 지원을 제공

 

1.2 ML Kit : 

앱에 강력한 머신러닝 기능을 구현할 수 있도록 도와줌.

 

1.3 Cloud 함수 : 

서버를 직접 관리하거나 확장할 필요 없이 맞춤 백엔드 코드로 앱을 확장

 

1.4 인증 : 

이메일 및 비밀번호, 타사 제공업체(예: Google 또는 Facebook), 기존 계정 시스템 직접 사용 등의 다양한 인증 방법을 제공합니다.

 

1.5 호스팅 : 

최신형 웹 앱을 위해 맞춤 제작된 도구로 웹 호스팅을 단순화

 

1.6 Cloud Storage : 

Google의 규모를 활용한 강력하고 단순하며 경제적인 객체 스토리지에 이미지, 오디오, 동영상 등의 사용자 제작 콘텐츠를 저장하고 공유할 수 있습니다.

 

1.7 실시간 데이터베이스 : 

클라이언트 간에 동기화된 상태를 실시간으로 요구하는 모바일 앱을 위한 효율적이고 대기 시간이 짧은 솔루션, 새 프로젝트를 시작하는 경우 실시간 DB 대신 Cloud Firestore를 구글에선 권장하고 있음

 

2. 앱 품질 향상

 

2.1 Crashlytics

다량의 비정상 종료를 관리 가능한 문제 목록으로 바꾸어 문제 해결 시간을 줄일 수 있습니다.

 

2.2 성능 모니터링

사용자의 기기에서 발생하는 앱 성능 문제를 진단

 

2.3 Test Lab

Google이 호스팅 하는 가상 기기 및 실제 기기에서 앱에 대해 자동 테스트 및 커스텀 테스트를 실행

 

3. 비즈니스 성장 도모

 

3.1 인앱 메시지

사용자가 앱 내에서 의미 있는 행동을 완료하도록 장려하는 타겟팅 메시지와 상황별 메시지를 이용하여 활성 사용자의 참여를 유도하고 장려

 

3.2 Google 애널리틱스

단일 대시보드에서 사용자 기여도와 행동을 분석하여 제품 로드맵에 대한 의사결정의 근거로 활용

 

3.3 예측

Google의 머신러닝을 활용하여 앱 제거 또는 지출(또는 다른 전환 이벤트 완료) 가능성이 높은 사용자 세그먼트를 파악

 

3.4 클라우드 메시징

Android, iOS, 웹 등의 플랫폼을 넘나들며 사용자에게 메시지와 알림을 무료로 보냄

 

3.5 원격 구성

각 사용자에게 앱이 표시되는 방식을 맞춤 설정할 수 있습니다.

 

3.6 동적 링크

모바일 성장을 보다 정확히 이해하는 데 필요한 기여도 추적 기능을 제공

 

Database, Storage, Auth, Analytics까지 제공해주기 때문에 서버 인프라를 고민할 필요가 없다.
심지어 필요한 기능만 골라서 쓰면 된다.

 

대표적인 기능, 특징은?

1) 인증 시스템  

 로그인을 담당하는 부분은 직접 서버로 개발할 경우 엄청나게 복잡한데, 그 이유는 인증된 사용자인지 확인하는 세션 처리에서 그 세션으로 데이터베이스, 저장소에 접근해도 문제가 없는지 확인하는 보안 처리, 비밀번호 찾기, 아이디 찾기, 비밀번호 바꾸기, 이메일 인증 등 복잡한 것을 구축해야 한다.

하지만 FireBase는 이 모든 것들을 지원한다!

 

2) NoSQl 기반의 3세대 데이터베이스

 현재 많이 사용되는 오라클이나, MySQL 같은 관계형 데이터베이스보다,  FireBase는 Document 형식의 빠르고 간편한 NoSQL 기반의 데이터베이스를 도입했다.

 또한  FireBase는 다른 데이터 베이스 들과 다르게 RTSP(Real Time Stream Protocol) 방식의 데이터베이스를 지원하고 있다. RTSP는 말 그대로 실시간으로 데이터들을 전송해주는 방식이다. 이 방식을 사용하면 소켓 기반 서버를 만들어서 통신하는 것보다 비약적으로 코드 양이 줄게 되어 코드 몇 줄로도 원하는 구성을 만들 수 있다.

 

 

3) 원격 구성을 지원 

원격 구성이란 원격으로 앱의 환경 상태를 구성하는 것을 말한다.

앱의 배경화면 테마나 폰트를 바꾼다던가, 업데이트창 알림 창을 띄운다던가 앱의 환경을 원격으로 구성할 때 사용하는 기능이다. 

 

4) 콘솔 제공

 콘솔이라는 용어는 쉽게 말해서 서버 관리자 페이지라고 생각하면 된다.

앱의 서버를 만들게 되면 리눅스, FTP, MySQL(데이터베이스), Node.JS 서버 혹은 Spring 서버, 푸시 보내기 API만 구축할 것이 아니라 이 모든 것을 관리할 수 있는 관리자 페이지가 필요합니다. 앱을 만들기 위해서 앱 개발자뿐 아니라 서버 개발자까지 필요하게 된다. 하지만 FireBase는 이 모든 것을 지원한다!

 

5) Analytics 제공

Analytics 단어 그대로 통계를 말하며 정확히는 다수의 사용자가 앱을 어떻게 사용하는지 통계 정보를 가지고 있다.

 앱의 현재 접속자부터 오류 통계,사용자 유지율, 고객들의 앱 업데이트 상태, 사용자들이 특정 페이지에 머문 시간, 이벤트 등을 추적할 수 있다. 이런 데이터들을 수집해서 사용자가 어떤 페이지에서 흥미를 잃었는지, 어떤 페이지가 인기가 많은지 등을 찾아낼 수 있으며 맞춤 마케팅도 할 수 있다.

 

한계점은?

1) Firebase를 많이 사용한 유저들이 하는 말은 서버의 응답속도가 종종 느려진다
 
가령 Firebase로 채팅 앱을 만들었는데 메시지가 늦게 간다던가 혹은 Firebase인증을 성공하고 나서 로그인을 하고 메인화면에서 데이터베이스에 접근할 때 서버가 응답하는데 시간이 조금 걸리는 경우가 있다. 이것은 Firebase의 고질적인 문제이며 유료로 전환해도 서버 응답이 지연되는 부분은 해결되지 않는다. 그 이유는 서버가 해외에 있기 때문에 종종 처리 속도에 지연이 발생된다. Firebase가 국내에서 많이 쓰인다면 구글이 아시아 쪽 서버를 구축해 줄 것이며 

아마 응답 지연이 해결될 것이다.

 

2) Firebase의 데이터베이스인 FireStore(신버전 데이터베이스)나 RealTimeDatabase(구버전 데이터베이스) 모두 쿼리가 약하다

 SQL에 익숙한 사람들은 Firebase 데이터베이스를 사용하게 되면 굉장히 당황해할 것이다.  그 흔한  OR 문으로도 검색되지 않으며 LIKE 문도 존재하지 않아서 비슷한 글자나 데이터를 검색할 수 없다. 그래서 Firebase를 사용하는 사용자들은 이 모든 데이터를 받아와서 안드로이드 기기에서 필터링해주는 방법을 권장하고 있다. 

(여러 조건 검색 또는 빅 데이터를 저장하는 서비스를 구상 중이라 면 Firestore는 좋은 선택이 아니다)

 

 

 

 

 

블로그의 정보

개발하는만두

youngjun._.

활동하기