FireBase는 2014년도에 구글에서 인수한 모바일, 웹 애플리케이션 개발 플랫폼이다.
FireBase는 이 모든 플랫폼을 프로젝트 구축 시, 자동적으로 만들어 준다. 또한 서버를 구축하기 위해서 리눅스 명령어를 알 필요도 없고, 도메인을 구입할 필요도 없으며 개발하는 동안에는 서버를 구입할 필요도 없다.
FireBase는 백엔드 기능을 클라우드 서비스 형태로 제공하기 때문에 서버리스 애플리케이션 개발이 가능하다.
FireBase 플랫폼으로 프론트엔드 개발자와 백엔드 개발의 경계가 모호해질 것이며, 적은 비용으로 매우 좋은 앱을 만들 수 있을 것이라 기대된다.
앱 개발, 앱 품질 향상, 비즈니스 성장 도모, 3가지의 기능을 제공
Cloud Firestore | 클라우드에 호스팅 되는 NoSQL 데이터베이스를 사용해서 글로벌 규모의 데이터를 저장하고, 사용자와 기기 간에 동기화할 수 있다. Cloud Firestore는 효율적인 데이터 쿼리와 실시간 동기화 및 오프라인 지원을 제공한다. |
---|---|
ML Kit | 앱에 강력한 머신러닝 기능을 구현할 수 있도록 도와준다. |
Cloud 함수 | 서버를 직접 관리하거나 확장할 필요 없이 맞춤 백엔드 코드로 앱을 확장할 수 있다. |
Auth | 이메일 및 비밀번호, 타사 제공업체(예: Google 또는 Facebook), 기존 계정 시스템 직접 사용 등의 다양한 인증 방법을 제공한다. |
Hosting | 최신형 웹 앱을 위해 맞춤 제작된 도구로 웹 호스팅을 단순화한다. |
Cloud Storage | Google의 규모를 활용한 강력하고 단순하며 경제적인 객체 스토리지에 이미지, 오디오, 동영상 등의 사용자 제작 컨텐츠를 저장하고 공유할 수 있다. |
Realtime Database | 클라이어트 간에 동기화된 상태를 실시간으로 요구하는 모바일 앱을 위해서 효율적이고 대기 시간이 짧은 솔루션. 새 프로젝트를 시작하는 경우 실시간 DB 대신에 Cloud Firestore를 구글에서 권장하고 있다. |
Crashlytics | 다량의 비정상 종료를 관리 가능한 문제 목록으로 바꾸어 문제 해결 시간을 줄일 수 있다. |
---|---|
성능 모니터링 | 사용자의 기기에서 발생하는 앱 성능 문제를 진단한다. |
Test Lab | Google이 호스팅 하는 가상 기기 및 실제 기기에서 앱에 대해 자동 테스트 및 커스텀 테스를 실행한다. |
인앱 메시지 | 사용자가 앱 내에서 의미 있는 행동을 완료하도록 장려하는 타겟팅 메시지와 상황별 메시지를 이용하여 활성 사용자의 참여를 유도하고 장려한다. |
---|---|
Google Analytics | 단일 대시보드에서 사용자 기여도와 행동을 분석하여 제품 로드맵에 대한 의사결정의 근거로 활용한다. |
예측 | Google의 머신러닝을 활용하여 앱 제거 또는 지출(또는 다른 전환 이벤트 완료) 가능성이 높은 사용자 세그먼트를 파악한다. |
클라우드 메시징 | Android, iOS, 웹 등의 플랫폼을 넘나들며 사용자에게 메시지와 알림을 무료로 보낸다. |
원격 구성 | 각 사용자에게 앱이 표시되는 방식을 맞춤으로 설정할 수 있다. |
동적 링크 | 모바일 성장을 보다 정확히 이해하는 데 필요한 기여도 추적 기능을 제공한다. |
**Database, Storage, Auth, Analytics까지 제공해주기 때문에 서버 인프라를 고민할 필요가 없다. 필요한 기능만 골라서 쓰면 된다. |
1. 서버 응답 속도의 저하.
예를 들어서, FireBase로 채팅 앱을 만들었는데 메시지가 늦게 간다던가 혹은 FireBase 인증을 성공한 후에 로그인을 하고, 메인화면에서 데이터베이스로 접근할 때, 서버가 응답하는데 시간이 조금 걸리는 경우가 있다. 이것은 FireBase의 고질적인 문제이고, 유료로 전환해도 서버응답이 지연되는 부분은 해결되지 않는다. 그 이유는 서버가 해외에 있기 때문이다. FireBase가 국내에서 많이 쓰인다면 구글이 아시아쪽 서버를 구축해 줄 것이고, 아마 응답 지연이 해결될 것으로 보인다.
2. FireBase의 데이터베이스인 FireStore(신버전 데이터베이스), RealTime Database(구버전 데이터베이스) 모두 쿼리가 굉장히 빈약.
SQL에 익숙한 사람들은 FireBase 데이터베이스를 사용하게 되면 굉장히 당황해 할 것이다. 그 흔한 OR 문으로도 검색되지 않으며, LIKE 문도 존재하지 않아서 비슷한 글자나 데이터를 검색할 수 없다. 그래서 FireBase를 사용하는 사용자들은 이 모든 데이터를 받아와서 안드로이드 기기에서 필터링해주는 방법을 권장하고 있다.
아래 링크로 로그인 후 프로젝트 추가 클릭
Sign in - Google Accounts
프로젝트 이름 지정 후 동의 체크박스에 체크 후 계속 클릭
해당 내용 읽어보고 계속 클릭
애널리틱스 위치(자신의 국가/리전 선택) 선택, 체크박스 동의 후 프로젝트 만들기 클릭
안드로이드 아이콘 버튼을 클릭하여 안드로이드 프로젝트 추가
앱 등록에 필요한 Android 패키지 이름, 앱 닉네임, 디버그 서명 인증서 SHA-1 을 입력 후 앱 등록
💡SHA-1 값 확인하는 방법
## Terminal에서 명령어로 확인 keytool -list -v -alias "키 별칭" -keystore "키 저장소 경로 .jks 확장자까지" ## 명령어 예시 keytool -list -v -alias chatkey -keystore /Users/crystal/AndroidStudioProjects/ChatWar/keystore.jks
💡 앱 서명 방법
앱 인증 받는 방법
google-services.json 파일을 다운로드한다.
다운로드한 파일을 Android studio 프로젝트에서 Project > app폴더에 붙여넣기 한다.
안드로이드 프로젝트에 Firebase SDK 추가하기
프로젝트 수준의 build.gradle(Project:..)
buildscript {
repositories {
// Check that you have the following line (if not, add it):
google() // Google's Maven repository
}
dependencies {
classpath 'com.google.gms:google-services:4.3.10'
}
}
allprojects {
...
repositories {
// Check that you have the following line (if not, add it):
google() // Google's Maven repository
}
}
앱 수준의 build.gradle(App:..)
```kotlin
apply plugin: 'com.google.gms.google-services'
dependencies {
// Import the Firebase BoM
implementation platform('com.google.firebase:firebase-bom:29.3.1')
// Add the dependency for the Firebase SDK for Google Analytics
// When using the BoM, don't specify versions in Firebase dependencies
implementation 'com.google.firebase:firebase-analytics-ktx'
implementation 'com.google.firebase:firebase-auth-ktx'
}
```
plugins {
...
id "com.google.gms.google-services" version "4.3.10" apply false
}
메뉴바 > Android Studio > Preferences > Android SDK > SDK Tools > Google Play services 체크 후 Apply > OK
dependencies {
...
implementation platform('com.google.firebase:firebase-bom:29.3.1')
implementation 'com.google.firebase:firebase-analytics-ktx'
}
apply plugin: 'com.google.gms.google-services'