아파치, 엔진X, 윈도우서버를 통해 자체 서버를 설치해보기도 하고, conoha, heroku와 같은 가상서버, VPS의 느림을 경험해봤다. 이후 AWS클라우드 서버를 사용하다 요금폭탄을 맞아보기도 하고, 국내 클라우드 서버, 파스타?까지 기웃거려 봤지만 결국 최종 선택은 "파이어베이스"였다.
1 『왜 파이어베이스일까?』
경제학에서는 '부익부 빈익빈'과 관련된 유명한 '설탕 인간' 실험이 있다. 설탕인간 실험에서는 초기의 작은 차이가 설탕 보유량의 격차를 점차 심화시킨다. 그리고 설탕 보유량의 격차가 점점 겉잡을 수 없을 정도로 커진다. 결국 게임(실험)을 진행할수록 소수의 설탕을 보유한 사람들은 그마저도 모두 빼앗긴다. 이는 상위 20%가 전체 80%를 차지한다는 파레토의 법칙과 일맥상통한다.
실제 생활에서도 파레토의 법칙을 경험할 수 있다. 옷이 많더라도 가장 마음에 드는 옷은 3~4벌 정도이며, 자주 가는 웹사이트의 누적시간이 전체 웹서핑의 80%를 차지한다.
2 『클라우드 서버의 미래는?』
웹 세계를 파레토의 법칙에 적용해보자. 구글의 크롬 브라우저는 전세계 검색엔진의 60%를 차지하고 있다. 안드로이드 폰의 점유율은 75%가 넘는다. 유투브는 모바일 동영상 앱 중에서 85~88%의 점유율을 갖고 있다. 이 모든 압도적인 점유율은 구글의 검색엔진에서 시작됐다.
현재(2019년 12월) 구글의 검색엔진이 확보한 시장 점유율은 세계 기준으로 86.7%다. 2위 Bing(6.06%), 3위 야후(3.38%), 4위 바이두(1.03%)와 차이는 10배 이상이다. 거의 압도적인 파레토의 법칙이 적용되고 있는 셈이다. 구글의 힘이 압도하지 못한 웹&모바일 영역은 개인 블로그(워드프레스)와 SNS(페이스북,트위터,인스타)밖에 없다.
구글은 SNS분야에서 손을 털고, GCP와 파이어베이스란 클라우드 서버에 집중하고 있다. 그 이유는 클라우드 서버에 전세계 개발자들이 확보한 데이터가 쌓이게되면, 그 자체로 머신러닝의 영양분이 되기 때문이다. 그럼에도 불구하고 개발자 입장에서 파이어베이스는 상당히 매력적이다. 클릭과 복사-붙이기 몇번 튕기면 웹앱부터 모바일 앱까지 간단하게 만들수 있고, 검색엔진과 웹 광고시장을 독점한 애널리틱스, 애드센스까지 원큐에 해결되기 때문이다.
전세계 웹 광고시장의 80%는 구글이 독점하는 상황에서 개발자들과 콘텐츠 제작자들은 시키지 않더라도 구글 클라우드 서버를 선택할 가능성이 높다. 페이스북은 구글의 광고시장 독점을 깨뜨리기 위해서 가상화폐 도입을 서둘렀다. 하지만 기축통화의 견제와 각종 국가의 규제정책으로 시작도 하기힘든 상황이다.
위의 설탕인간 실험에서 살아남는 방법은 다음 2가지였다.
1. 설탕 보유량이 가장 많은 곳에 정착하기
2. 다른 게임판으로 떠나기
2가지 방법의 공통점은 '이동'이다. 설탕의 80%를 확보한 곳으로 이동하든지 완전 다른 게임판으로 이동하는 방법이다. 여기서 가장 최악의 방법은 20% 미만의 설탕이 있는 곳에서 경쟁을 펼치는 선택이다. 기존의 서버가 있다면 계속 운영해야겠지만 만일 새로 뭔가를 시작한다면, 파이어베이스로 이동하는 게 향후 관리면에서 분명 좋을듯하다.
3 『파이어베이스 시작하기』
파이어베이스를 시작해보자. 파이어베이스가 제공하는 기능을 크게보면 다음 4가지다.
FireStore : 클라우드 데이터베이스
Realtime Database : 클라우드 데이터베이스
Authentication : 인증 서비스
Functions : DB기능 설정
위의 4가지 서비스 중에서 헷갈리는 부분은 Firestore와 Realtime Database다. 인증과 함수는 확실하게 구분되는데, 파이어스토어와 실시간 데이터베이스는 모두 클라우드 DB다. 게다가 쿼리문조차 버전에 따라 달라졌기 때문에 혼란함을 느낄 수 있다.
결론적으로 Realtime Database는 실시간 버스노선 시스템과 같이 데이터가 증가하지 않고, 지속적으로 업데이트되는 서비스에 사용한다. 반대로 Firestore는 데이터가 쌓여가는 일반적인 DB 서비스에 사용하면 된다. 그래서 realtime database는 한개의 json객체 속에 모든 데이터가 기록되고, Firestore는 Collection속에 Document가 '키:값'형태로 쌓여간다.
파이어베이스 CDN정리하기
파이어베이스 홈페이지에 접속해보면 CDN관련 글이 있는데, 정확히 버전이 어디까지 출시되었는지 찾기 힘들때가 많다. 현재 파이어베이스 버전은 아래 링크에 나와있다.
https://firebase.google.com/support/release-notes/js
우측 상단을 체크하면 최신 release 소식을 알 수 있다.
4 firebase CDN
firestore를 이용하기 위해서는 firebase-app.js, firebase-firestore.js 2개의 파일경로가 필요하다. 아래 링크에 접속하면, firestore와 관련된 최신버전의 CDN을 찾을 수 있다. 현재(2019년 12월 6일) Firestore같은 경우, ver 7.5.0까지 출시됐다.
<script src="https://www.gstatic.com/firebasejs/7.5.0/firebase.js"></script>
<script src="https://www.gstatic.com/firebasejs/7.5.0/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/7.5.0/firebase-auth.js"></script>
<script src="https://www.gstatic.com/firebasejs/7.5.0/firebase-firestore.js"></script>
<script src="https://www.gstatic.com/firebasejs/7.5.0/firebase-database.js"></script>
<script src="https://www.gstatic.com/firebasejs/7.5.0/firebase-storage.js"></script>
<script src="https://www.gstatic.com/firebasejs/7.5.0/firebase-functions.js"></script>
파이어베이스의 모든 기능을 사용하고자 한다면 상단에 CDN을 넣어준다. 단, firebase-functions기능을 사용하지 않는다면, 코드가 많은 firebase.js 메인코어를 삭제하고, firebase-app.js만 링크로 사용하는 방법이 효율적이다.
5 파이어베이스 DB선택
파이어베이스에서 DB는 리얼타임 DB, 클라우드 firestore, 클라우드 storage 이렇게 3가지가 있다. 처음에 가장 혼란스러운 부분은 리얼타임과 클라우드 firestore의 차이점인데, 위에서 설명했듯이 실시간으로 데이터를 받는 서비스의 경우 리얼타임 DB가 적당하고, 사용자의 DB를 지속적으로 관리해야하는 경우에는 firestore를 사용해야한다.
firebase-storage같은 경우, 대용량 파일을 저장하는 저장소(서버에서 하드디스크)역할을 한다. 따라서 storage는 DB를 사용한다면 거의 자동으로 연결시켜줘야하고, 리얼타임DB와 firestore 중에서 어떤 DB를 사용할 지 결정하면 된다. 간단한 실시간 데이터 연동어플일 경우 리얼타임DB가 유리하고, 커뮤니티 사이트처럼 고객정보를 관리하는 수준이라면 firestore를 사용하는 편이 효율적이다.
*참고 : 파이어베이스 비용구조
'웹개발 자료실 > Firebase 개발 Code' 카테고리의 다른 글
Firebase『Auth 회원가입, 이메일 인증,』 (10) | 2019.12.27 |
---|---|
Firebase『Firestore 쿼리문』 (0) | 2019.12.12 |
파이어베이스 인증(4) 구글 인증하기 & DB보안설정 (0) | 2019.09.24 |
파이어베이스 인증(3) 로그인 & 아웃 설정하기 (0) | 2019.09.23 |
파이어베이스 인증(2) 이메일 회원가입 완성하기 (0) | 2019.09.21 |
댓글