brunch

You can make anything
by writing

C.S.Lewis

by 세컨드스페이스 Feb 15. 2019

소규모 스타트업이 Firebase를 써야 하는 이유

돈 있으면 굳이??

구글 Firebase는 사이트에 들어가면 가장 먼저 보이는 "Firebase helps mobile app teams succeed"라는 카피에서 의미하는 것과 같이 모바일 앱을 만드는데 필요한 여러 가지 기능을 갖추고 있는 클라우드 서비스입니다. 그러나 기능들을 자세히 살펴보면 앱뿐만 아니라 웹 서비스를 구축하는데도 필요한 기능들이 많습니다. (어차피 웹이나 앱이나 데이터 가져와서 보여주는 건 매한가지니까요.) 자세한 설명은 Firebase 사이트에서 읽어보시는 것이 좋습니다만, 귀찮다면 일단 아래로 내려가시면 됩니다.


왜 소규모 스타트업에서?

소규모 스타트업의 경우 풀 스택 개발자가 있는 경우가 많으며, 서버 인프라 관리부터 서버단&클라이언트 개발까지 1-2인이 진행하는 경우가 많습니다. (제가 많이 해봤는데 너무 힘듭니다 ㅠㅠ) 실제 서비스를 개발하기 위해서는 많은 인프라와 개발인력이 투자되어야 하는데 우리 같은 소규모 스타트업에서는 머나먼 딴 나라 이야기죠.  또한 초기 서비스란 자고로 핵심기능을 중심으로 사용자 피드백을 빠르게 반영할 수 있어야 합니다. 1-2인의 풀 스택 개발자로 서버 세팅을 끝내고 서버단 개발하고 클라이언트 단을 개발하여 어찌어찌 서비스를 오픈했으나, 사용자 피드백을 반영하려 하니 서버 구조를 변경해야 하는 경우가 발생할 경우 빠른 대응은 당연히 불가능한 일입니다.


Firebase를 이용할 경우 서버 인프라를 고민할 필요가 없습니다. Database, Storage, Auth, Analytics까지 제공해주기 때문입니다. 기본적으로 서비스를 구축하기 위한 서버 인프라 구축, 서버단 세팅 등을 고민하지 않고 클라이언트 단의 작업만 진행하여 서비스를 제작할 수 있습니다. 훌륭한 서비스를 만드는 것이 목표가 아닌 사용자에게 선보이고 평가를 받는 것이 목표라면 Firebase를 사용하지 않을 이유가 없습니다.



그래서 무슨 기능이 있다는 건데?

자, 이제부터 Firebase의 기능 하나하나를 설명하면서 왜 소규모 스타트업에서 사용하면 좋은 것인지 설명해보도록 하겠습니다. 우선은 아래 링크에 들어가셔서 Firebase의 가격 책정을 한번 읽어 보고 오시면 좋습니다. Firebase는 가격 책정 면에서도 소규모 스타트업에게 좋습니다. Flame 요금제는 월 $25밖에 안 하며 이는 우리가 원하는 목표를 달성하기 위해서는 비싼 가격이 아닙니다.

(서비스 운영을 위한 글이므로 기능의 사용법은 작성하지 않겠습니다.)


Firebase 가격 책정


1. Firestore - "글로벌 앱을 위해 구축된 NoSQL 데이터베이스"


말 그대로 NOSQL 데이터베이스를 지원해줍니다. 기존에 Realtime Database 도 여전히 지원이 됩니다만, Reatime Database는 서버 확장이 자동적으로 지원되지 않기 때문에 이를 위해서는 Database를 추가적으로 생성해야 합니다. Firestore는 작년까지는 Beta 버전이라 사용하기에 불안감이 있었습니다만, 최근 정식버전으로 출시가 되었습니다. (마음 편히 사용해도 된다는 것이지요) 서버 확장도 알아서 진행되기 때문에 사용자가 많아질 경우 서버 확장에 대한 걱정을 놓을 수 있다는 점이 아주 좋습니다. 저장공간은 무료 1GB로 많진 않지만 우리의 목표를 생각하면 그렇게 적은 양도 아닙니다.


이런 식으로 콘솔에서 데이터를 확인할 수 있습니다.


Firestore의 좋은 점은 바로 소켓으로 연결되어 실시간 서비스를 구축하기 좋다는 점입니다. 기존의 Realtime Database에서 사용하던 기능 그대로 사용 가능하며, Reatime Database의 경우 실시간 접속수가 상한이 있었으나, Firestore에서는 제한이 사라졌습니다. 채팅처럼 사용자끼리 실시간으로 데이터를 공유해야 한다면 아주 좋습니다. 또한 NOSQL인 만큼 서버 구조를 미리 만들어놓을 필요 없이 클라이언트 개발을 진행하면서 바로바로 구조를 만들거나 변경할 수 있습니다.


다만, Firestore도 좋은 점만 있는 것이 아닙니다. 다중 칼럼 검색이 불가능하며, 정렬 색인도 따로 지정해줘야 합니다. 속도적인 측면에서도 서버를 구축하는 것보다 반응 속도가 느립니다. 여러 조건으로 검색을 해야 하거나, 빅 데이터를 저장해야 하는 서비스를 구상 중이시라면 Firestore는 좋은 선택이 아닙니다.


Firestore를 이용한 실시간 논문 검색 시스템


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


Storage는 모든 서비스에서 Database 만큼 필요한 서비스입니다. 사진&동영상, 기타 문서 등을 모두 업로드할 수 있습니다. 기본으로 5GB를 제공해주는데 호스팅 서비스나 클라우드 서버를 이용할 때 용량이 그리 많지 않다는 것을 감안하면 무료 주제에 생각보다 많은 양입니다. 소규모 스타트업에서 고려할 수 있는 Flame 요금제에서는 50GB이므로 용량 문제는 크지 않다고 볼 수 있겠네요. 물론 100Mb가 넘는 대용량 파일들을 저장할 예정이라면 따로 Storage서버를 구성하는 것이 좋겠습니다.


생각보다 적진 않다규요


사실 Storage 공간을 제공한다는 것이 장점이라기보다는 클라이언트 단에서 바로 파일을 올리기 쉽다는 점이 Firebase Storage의 장점입니다. 파일 업로드를 개발하기 위해서는 서버단이 개발을 진행한 후 클라이언트 단과 스펙을 맞추는 작업을 해야 합니다. 파일은 DB에 저장할 것인지 Storage 등에 저장할 것인지도 결정해야 하지만, Storage를 이용하면 업로드만 해주면 됩니다. 서버에 어떤 식으로 저장될 것인지는 Firebase가 알아서 해줄 것입니다.



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

인증 부분은 확실히 편리합니다. 이메일/비밀번호 방식부터 전화, SNS 로그인, 익명으로 로그인 방식을 제공해줍니다. 인증이 편리한 이유는 이메일 인증/비밀번호 재설정/ 이메일 주소 변경/SMS 인증 등을 Firebase에서 기본적으로 제공해줍니다. 로그인/가입 기능은 생각보다 작업량이 많은 기능들입니다. 그러나 Firebase를 이용해서 손쉽게 제작이 가능하다는 점이 아주 훌륭합니다.


이렇게나 많이 제공해준다고요. 물론 국내는 없네??

또한 인증과 Firestore, Storage 등의 보안규칙과 연동하여 해당 인증을 받은 사용자만이 Firestore, Storage에 접근할 수 있도록 할 수 있어 보안도 쉽게 작성할 수 있습니다.

https://firebase.google.com/docs/storage/security/start?hl=ko


Console에서 손쉽게 유저 리스트를 확인해 볼 수 있기 때문에 간단한 유저 관리는 Console에서 처리할 수 있습니다. 다만, 서비스를 관리하기 위한 용도로 쓰기에는 충분하지 않습니다. 가능하면 관리자단을 제작하여 관리하는 것을 추천합니다.


이 정도는 쉽게 가능합니다


4. Hosting

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

https://firebase.google.com/docs/hosting/?authuser=0


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


배포를 진행하라아~


최근 Git 저장소들에서 Pipeline 기능을 제공하고 있습니다. 저희는 저장소에 소스가 업데이트되면 자동으로 Firebase Hosting에 배포를 하도록 세팅해두었습니다. 따로 배포 작업을 진행하지 않아도 되므로 개발 시간을 단축시킬 수 있다는 장점이 또 있습니다. 배포 자동화는 그리 어렵지 않으니 차후 Bitbucket과 Firebase를 이용한 자동 배포에 관한 글을 작성해보도록 하겠습니다. 또한 당연한 이야기겠지만 도메인 연결도 가능하므로 실 서비스를 운영하는데 전혀 무리가 없습니다.



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

앱 개발에 있어 아주 중요한 Push Notification을 쉽게 제작할 수 있는 시스템입니다. IOS는 푸시 인증서를 등록해야 하며(1년마다 갱신, 인증키를 등록하는 것이 편리합니다) 안드로이드는 별도의 등록 절차 없이 바로 사용할 수 있습니다. 안드로이드는 기본적으로 FCM을 이용해서 보내는 것이 가장 안정적이었습니다. IOS의 경우 APNS(Apple Push Notification Service)를 이용하여 발송을 하는 것이 기본이었고 APNS를 이용하여 보내는 라이브러리가 많이 나오기도 했습니다만, 이제는 FCM을 통하여 손쉽게 푸시를 발송할 수 있습니다.


발송 리스트


또한 푸시 메시지를 예약하거나 글로벌 서비스라면 현지 시간대에 맞춰서 전송할 수 있습니다. A/B테스트와 함께 사용하면 여러 버전의 알림 메시지를 발송하여 어떤 메시지가 가장 효과적인 지도 체크할 수 있으니 서비스 분석에도 도움이 됩니다.



5. Cloud Functions

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

https://firebase.google.com/docs/functions/?authuser=0


요런 기능이 있습니다.


다만, 조금 불편한 점은 실제 개발 시에 소스 테스트를 하기에 불편하다는 점이 있습니다. 배포되는 데까지는 어느 정도 시간이 걸리고, 로그를 확인하기까지도 시간이 좀 걸리기 때문입니다. 물론 이 부분은 Firebase Emulator를 이용하여 로컬에서 테스트를 해볼 수 있으나 생각보다 설정이 귀찮습니다.


또한 Functions의 백그라운드 트리거는 최대 10초 정도의 딜레이가 있을 수가 있습니다. 실시간 서비스에서는 매우 긴 시간이기 때문에 빠른 응답이 필요한 서비스라면 추천드리지는 않습니다. 테스트 결과 보통 1-3초 이내로 거의 처리가 되기는 합니다만, 10초까지 딜레이가 발생할 수도 있습니다.


등록된 Function들과 보고서





우리가 만들려는 서비스의 규모에서는 위의 5가지만 사용해도 쓸만한 서비스를 제작할 수 있습니다. 물론 Firebase에는 위의 기능뿐 아니라 Analytics, Crashlytics, Test Lab, Performance 등의 운영과 관련된 서비스도 많습니다. 개발 이후에는 해당 기능들을 함께 사용하는 것이 서비스 행보에 도움이 될 것입니다.


Firebaes를 이용하면 손쉽게 서비스를 개발할 수 있다는 장점에 대해서 설명을 드렸습니다. 그러나, Firebase가 좋은 서비스인 것은 분명 하지만 장-단점이 명확하게 있는 서비스이므로 제작하려는 서비스가 Firebase와 궁합이 잘 맞는지 판단한 후에 개발을 시작하는 것이 좋습니다. 궁합이 잘 맞는다면? 지금 당장 Firebase를 이용하여 빠르게 서비스를 제작해보시면 됩니다.





오픈 슬랙 채널에서 소통해요!

잡담 / 개발 문화 / 일하는 방식 / 정보 공유 / 채용 문의 / 프로젝트 문의 등 어떠한 소통도 환영합니다 :)


오픈 슬랙 채널에 참여하기⬇️

https://join.slack.com/t/secondspace-open/shared_invite/zt-19q85dgid-6TCjbezQs4TTafBwT4BxAQ







written by. 세컨드스페이스 Developer.a

https://secondspace.kr


매거진의 이전글 '을'을 위한 보험에 대해 아시나요? 매출채권보험
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari