Firebase는 현재 구글이 서비스하고있는 모바일 및 웹 애플리케이션 개발 플랫폼이다.
여러분들이 정말 간단한 기능들로만 이루어진 어플리케이션을 만든다고 해보자.
당장에 생각나는 개발에 필요한 작업들은 우선 UI / UX 즉, 프론트엔드 작업과
서버통신과 DB를 다루는 백엔드 작업이 있을것이다.
프로젝트 규모가 커지면 당연히 프론트엔드 개발자와 백엔드 개발자를 따로 나눠 작업을 진행할것이다.
양쪽 모두의 작업을 알고있을 필요는 없다.
하지만 소규모 프로젝트라면, 개발자가 부족하니 어쩔수 없이 1~2명의 개발자가 양쪽 모두의 작업을 해야 한다.
심지어 서버를 관리하기위한 관리자 페이지까지 만들어야 하니 배보다 배꼽이 더 커지게 된다.
이때 Firebase는 백엔드에 대한 지식이 없어도 백엔드 기능을 클라우드 형태로 제공해주어 다룰 수 있게 해준다.
DB와 서버를 구축하기 위해서 필요했던 불필요한 로드들을 모두 생략할 수 있다.
관리자페이지는 Firebase에서 제공하는 Console로 대체된다.

다시 말해, 프로젝트 진행에 있어서 엄청나게 시간을 단축시킬 수 있다. 심지어 무료이다.
또한 소규모가 아니더라도, 어느 회사의 개발 부서에서 서비스 기획안을 제출할 때 ,
서비스의 기본적인 틀을 보여줘야하므로 일단 Firebase를 이용해 간이로 작업한 후,
의견 및 평가를 듣고 본격적인 백엔드 개발에 착수할 수 있다.
그럼 Firebase는 어떤 기능들을 제공하길래 인기가 많을까?
Firebase가 제공하는 기능들

상단 분류로 앱 빌드, 앱 품질 향상, 비즈니스 성장 도모가 있다.
주로 사용되는 기능들을 기준으로 소개해보겠다.
앱 빌드
- Cloud Firestore
클라우드에 호스팅되는 실시간 데이터베이스(Realtime-Database)로 NoSql형식의 DB를 제공한다.

코드 한줄이면 서버에있는 데이터를 실시간으로 받아와 다룰 수 있고, 변경된 데이터는 자동으로
서버와 실시간으로 동기화되어 저장된다.
기존 데이터베이스의 CRUD기능을 완벽히 지원한다.
하나 재밌는점은, 자체적으로 어플리케이션에서 많이 사용되는 데이터를 캐싱하기 때문에,
사용자가 오프라인일때도 실시간처럼 동작할 수 있다는 점이다.
오프라인일때 바뀐 데이터를 로컬에 저장해놓았다가 온라인 연결이 되면 다시 클라우드에 동기화한다.
이거 하나만으로 우리가 필요했던 백엔드 대부분의 기능을 무료로 구현할 수 있다.
Firestore는 밑에있는 실시간 데이터베이스의 상위호환 버젼이다.
- ML Kit
이 포스트를 작성하면서 알게된 기능이다. 이런게 있는지도 몰랐는데
머신러닝개발자를 위한 기능이다. docs에는 머신러닝에 대한 지식이 없어도 사용할 수 있다는데
나중에 개인 프로젝트에 한번 써봐야겠다.
- Cloud Functions
js나 ts 함수 자체를 서버에 올릴 수 있는 서버리스 프레임워크이다.
서비스의 업데이트를 하려면 업데이트된 apk나 ios를 스토어에 올려서한다.
사용자는 어플리케이션을 업데이트하려면 스토어에 들어가서 업데이트 버튼을 눌러줘야 한다.
하지만 사소한 업데이트 내용이라면, Functions를 이용해 스토어에 들어가지 않고도 서버에 있는 코드를 실행시켜
업데이트를 진행 할 수 있다.
위의 예시말고도 다른 예시들이 많겠지만, AWS보다 더 간편하고 가볍다고 할 수 있다.
마찬가지로 웹에 대한 지식이 거의 없어 아직은 사용해보지 못했다.
- 인증
Authentication은 정말 편리한 기능이다. 기존 백엔드단에서 Auth를 구현하려면, Token, OAuth등
개발자가 직접 구현하고 설정해줘야했었다.
하지만 Firebase Authentication을 이용하면 Google, Facebook, Apple, Twitter, Github, Guest등 다양한 로그인 방식을
모두 사용할 수 있다.

또한, email이나 SMS을 이용한 비밀번호 찾기, 비밀번호 재설정 sdk도 제공하기 때문에 까다로운 로그인기능을
단순히 Firebase 프로젝트에 인증 기능을 추가하는것만으로 사용할 수 있다.
- Cloud Storage
사진, 동영상등 컨텐츠를 서버 클라우드에 올리고, 서버에서는 API를 이용해 파일에 접근 할 수 있다.
- 실시간 데이터베이스
Firestore의 구 버전으로, Firestore 기능만 알아도 문제 없다.
앱 품질 향상
- crashlytics
원인모를 충돌로 사용자가 앱 다운 현상을 겪었을때, 자동으로 서버로 상세한 로그를 전송해 개발자가 유지보수 하는데
도움을 준다. 또한, 충돌을 겪은 사용자의 수를 통계치로 제공해 분석할 수 있게 도와준다.

- Performance Monitoring
앱의 성능데이터를 추출하고 Firebase Console에서 이를 분석해 성능 문제를 해결 할 수 있다.
- Test Lab
안드로이드는 정말 해상도가 다양하고 기기가 다양해 실제로 이 많은 기기들을 다 테스트 해보기에는 한계가 있다.
Firebase에서 제공하는 Test Lab으로 모든 기기에 어플리케이션을 테스트 해볼 수 있다.
비지니스 성장 도모
- 애널리틱스
Firebase에서 기본적으로 제공하는 event와 개발자가 직접 설정할 수 있는 custom event를 여러 parameter와 함께
앱 실행중에 발생시켜 Firebase Console에서 시각화된 데이터를 제공하고, 이를 분석, 향후 개발 방향을 잡을 수 있다.

데이터 수집과 데이터 시각화를 동시에 도와준다!

다만 조금 아쉬운 점은 기본적인 내용밖에 제공하지 않는다는 점이다.
좀 더 상세하고 세분화된 데이터를 원한다면, Google의 BigQuery와 연동이 필요하다.

Analytics기능은 정말 유용한 기능이기 때문에 따로 포스팅 하겠다.
- 클라우드 메시징
FCM(Firebase Cloude Messaging)은 클라이언트 앱에 푸시 메세지를 보낼 수 있는 기능이다.
사용자 전체, 아니면 특정 사용자에게 보낼 수 있다.
게임을 예로 들자면 12시나 6시 정각에 이벤트성 푸시메세지를 보내 유저에게 재참여를 유도시킬수 있겠다.
- 동적 링크
동적링크는 말그대로 사용자에게 링크를 제공하는것인데, 유저의 플랫폼에 맞춰 링크를 어떤식으로 열지
최적화 할 수 있다.
정리
각 기능들마다 지원하는 플랫폼이 다르니 참고하자.
Firebase가 지원하는 플랫폼은 Android, ios, Unity, Web등이 있다.
Firebase는 정말 다양한 기능을 제공하며 아마존의 AWS와는 달리 대부분 무료로 사용할 수 있다.
물론 세밀한 기능을 원하거나 사용량이 많다면 돈을 지불 해야 하지만
일반적인 소규모 프로젝트에서는 무료기능만으로도 차고 넘친다.
백엔드에 대한 지식이 없어 어떻게 할지 난감하다면(나도 지식이 아예 없다)
지금 당장 Firebase를 사용해보자!
아마 백엔드에 대한 걱정없이 마음껏 프로젝트를 진행할 수 있을것이다.
'etc > Firebase' 카테고리의 다른 글
[Firebase] Firebase 시작하기 (0) | 2021.07.28 |
---|