Firebase 란?
구글이 소유하고 있는 모바일 애플리케이션 개발 플랫폼
Firebase로 어떤 종류의 앱을 만들면 좋을까?
앱의 종류에는 사실항 제한이 없다. Firebase를 사용할 수 있는 플랫폼에만 제한이 있을 뿐이다.
Firebase의 SDK(softward Development Kit, 소프트웨어 개발 키트)가 주로 염두에 두고 있는 대상은
iOS, Android, Web 기반이지만, Flutter, Unity, C++ 환경에 대한 지원도 점점 늘려가고 있다고 한다.
백엔드 구성요소들이 필요하다면, 다양한 언어들로 이용할 수 있는 관리자용 SDK(admin SDK)도 존재한다.
많은 SDK들 중 Firebase Ui라는 라이브러리(IOS, Android, Web 용)가 있는데, 이 SDK에서는
Firebase를 개발 과정에서 쉽게 활용할 수 있는 유틸리티를 제공한다.
또한, Angular 플랫폼을 함께 사용하기 위해서 웹 SDK를 wrapping해주는 AngularFire라는 프로젝트도 있다.
이들은 모두 open source이며, Firebase는 open source를 좋아한다고 한다.
firebase Products
앱 개발하기(Build better apps)
인증(Authentication) : 사용자 로그인 및 ID 관리
- 보안 로그인 쉽게 구현 가능
클라우드 함수(Cloud Funtions) : 서버 없이 이벤트 위주로 동작하는 백엔드
- 클라우드 함수는 파이어베이스 전체 제품군 중에서도 우리가 실제로 백엔드 코드를 작성할 수 있게 해주는 제품
- 구글의 "serverless"(서버가 필요없는 환경) 인프라 위에서 실행되는 코드를 작성하고 배포할 수 있음
클라우드 파이어스토어(Cloud Firestor) : 클라우드에 호스팅 된 실시간의 비관계형(NoSQL) 데이터베이스
- 데이터베이스가 변경 되었을 때, 데이터들을 "실시간"으로 업데이트 해줌
클라우드 스토리지(Cloud Storage): 대규모로 확장할 수 있는 파일 스토리지
파이어베이스 호스팅(Firebase Hosting): 전 세계를 대상으로 한 웹 호스팅
- HTTP 기반 요청, 응답을 대신 수행하게 할 수 있음.
- 함수를 통해 나오는 응답들을 caching(요청이 많은 정보를 사용자와 가까운 곳에 보관해 놓고, 동일한 요청이 있을 경우 빠르게 결과를 제공하는 것)할 수 있음. RESTful API를 만들 수 있는 훌륭한 방법
머신러닝 키트(ML Kit): 일반적인 머신러닝(ML) 작업을 위한 SDK
실시간 데이터베이스(Realtime Database): 클라우드에 호스팅 된 실시간의 비관계형(NoSQL) 데이터베이스
앱 개선하기 (Improve app quality)
테스트 랩(Test Lab): 클라우드에 호스팅 된 기기에서 다양한 규모로 앱 테스트를 자동화
- 여러 환경에서 테스트해볼 수 있게 하기 위해, 다양한 종류의 가상 IOS, Android 기기 사용 가능
비정상 종료 분석(Crashlytics): 앱이 비정상 종료되는 현상에 대한 명확한 판단과 조치
성능 모니터링(Performance Monitoring): 앱의 성능 이슈와 관련한 통찰력 확보
- HTTP 요청, 실행 시간, API를 사용하는 다른 코드 등을 측정함으로써 앱의 성능과 관련한 이슈에 대해서 사용자의 관점에서 살펴본 통찰력을 제시해줌
앱 성장시키기(Grow your app)
분석(Analytics): 사용자들이 누구이며, 사용자들이 앱을 이용하는 방식을 이해
예측(Predictions): 머신러닝을 적용하고, 분석하여 사용자들의 행동을 예측
- 분석 도구가 수집한 데이터들을 기반으로 앱을 사용하는 사람들 중, 누가 이탈할 가능성이 있는지, 누가 비용을 지출하는지에 대한 예측을 수행
클라우드 메시징(Cloud Messaging): 사용자들에게 메시지와 알림 사항을 전송
- 앱을 사용하는 사람들이나 앱에서 흥미로운 일이 생겼을 때, push 메시지를 전달할 수 있음
인앱 메시징(In-App Messaging): 활성 사용자들에게 타깃 메시지 연결
- 사용자들에게 맞춤화 된 타깃 메시지를 보여줘서 앱의 핵심 기능들을 사용해 볼 수 있또록 도와줌.
Firebase Cloud Messaging (FCM) Vs Firebase In-App Messaging (FIAM)
FCM의 메시지는 제어하는 서버에서 오는 것
FIAM의 메시지는 앱 자체에서 오는 것
둘다 콘솔에서 설정한 것이지만,
FCM이 보내는 메시지는 타이밍이나 관련성이 비교적 적기 때문에
사용자가 관심 있는 것이 아닐수도 있고, 실수로 메시지를 닫아버릴 수도 있다.
FIAM을 이용하면, 분석 도구와 예측 도구가 파악한 정확한 사용자들에게 정확한 시점에 전달된다.
원격 구성(Remote Config): 새로운 버전을 배포하지 않고도 앱의 설정을 빠구고, 변경사항을 모니터링
- 앱을 업그레이드하지 않고도 앱의 동작이나 보이는 모습을 동적으로 변경할 수 있다.
- 다른 유형의 조건을 사용하면, 예측 도구가 찾아낸 "이탈 그룹"이나 "소비 그룹"을 향해서 타깃을 지정할 수 있다.
ex) 프리미엄 서비스 제공, 이용을이 낮은 사용자들에게 인센티브 제공
A/B 테스팅(A/B Testing): 마케팅 방식과 사용 적합성 테스트를 수행해서 가장 좋은 결과가 무엇인지를 확인
- 분석 도구, 원격 구성, 클라우드 메시징 사이의 연동 관계를 더욱 강화시켜줌
- A/B 테스팅을 이용해 일부 사용자들을 대상으로 실험을 진행한 이후에 판단할 수 있음
- 무언가를 변경할 때 아무런 정보도 없이 결정을 내린다면?
동적 링크(Dynamic Link): 네이티브 앱(native app, 플랫폼의 OS에 맞는 언어로 제작된 앱) 컨버전(conversion, 다른 플랫폼에서 사용할 수 있게 변환), 사용자 공유, 마케팅 캠페인 지원
- 딥 링크(deep link, 서비스 내의 하위 페이지로 링크 시키는 것)라는 기존의 개념으로 만들어져 있음
- 앱을 특정한 화면이나 사용자 경험으로 시작하게 만든다는 것
- 동적 링크 클릭 시, 해당 앱이 설치되지 않았다면 적절한 앱 스토어로 사용자를 안내해 설치할 수 있게 하는 것이 좋다.
앱 인덱싱(App Indexing): 구글 검색과 연동하여 사용자들을 유지하는데 도움
핵심 포인트
- Firebase는 구글이 제공하는 모바일 애플리케이션 개발 플랫폼이다.
- 제품들을 모두 사용할 수도, 전혀 사용하지 않을 수도, 일부만 사용할 수도 있다.
- Firebase의 제품들을 활용해서 개발한다면 시간과 비용을 엄청나게 절약할 수 있다.
- 위에서 설명한 모든 특징들은 한 개의 콘솔로 관리하면서 서로 잘 작동하도록 설계가 되어 있다.
출처 - https://medium.com/firebase-developers/what-is-firebase-the-complete-story-abridged-bcc730c5f2c0