본문 바로가기

테크놀로지 이야기/직장

Firebase 로 웹사이트 개발하기 [소개 + 장단점] - 1편

2016년 Google IO 컨퍼런스에서 구글이 Firebase 으로 개발 플랫폼으로 발표해서 화제가 되었는데요. 구글은 이미 Google Cloud 와 Google Dev App Engine 이란 클라우드 플랫폼 환경이 있어서 의문을 가진 개발자들도 꽤 있었을것 입니다. 저도 그 중 한명이였구요. Firebase 는 구글 안에서 만들어진 플랫폼이 아니라 2014년에 샀던 개발 플랫폼이라는 사실이 흥미롭습니다. 비슷하게 구글의 라이벌 회사 중 하나인 Facebook 은 Parse 라는 회사를 흡수한적 있는데 얼마 안지나서 페이스북은 Parse 서비스를 정지한다고 발표해서 더 의심이 가죠. 뿐만 아니라 구글 역사를 보면 정지한 서비스나 툴도 한두가지가 아니라 Firebase 도 브레이크가 걸려서 사라질수 있다는 위험성은 언제나 포괄하고 있습니다.


하지만 Firebase 를 써봤는데 들었던 느낌은 '이거 참 괜찮다' 라는 생각뿐이였습니다. 무엇보다 여러가지 서비스를 쉽게 사용할수 있고 이걸 기본으로 빠르게 개발할수 있다는 점은 Salesforce 의 Heroku 나 Google 의 Google App Engine 보다 뛰어나다고 여겨졌습니다. 그럼 Firebase 의 장단점을 같이 찾아 볼까요?


장점 1 : 콘텐츠 전송망 - Content Delivery Network (CDN)


웹 개발자인 저로서 제일 매력적이였던 점은 구글의 Content Delivery Network (CDN) 을 사용해서 엄청난 빠르게 효율적이게 콘텐츠를 보여줄수 있다는 점이였습니다.




https://youtu.be/jsRVHeQd5kU?list=PLl-K7zZEsYLmOF_07IayrTntevxtbUxDL


CDN 에 관해서는 영어로 된 윗 링크를 보시면 알수 있습니다만 간단하게 요약하자면 웹사이트가 켈리포니아 서버에 있는데 서울에 있는 한국인이 이 웹사이트를 접속할려고 하면 상당히 긴 시간이 걸립니다. 이걸 Ping 타임 이라고 하죠. 하지만 CDN 을 사용하면 이 웹사이트가 전 세계 여러곳의 서버에 분산되어 있고 사용자와 가장 가까운 서버와 메치 되서 델리버리 가능하기 때문에 더 빠르게 콘텐츠가 더 빠르게 전달될수 있습니다. 히로쿠 (Heroku) 로 개발했을때는 속도가 느렸는데 이게 Dynamo 라는 개념 때문에 그랬던건지 아니면 CDN 때문인지 다른 이유인지는 아직 파악하지 못했습니다. 그러나 Firebase 가 훨씬 빠르게 느껴졌고 또 효율성 그리고 머신러닝 알고리즘을 어떤 회사보다 중요시 여기는 구글의 CDN 을 사용한다고 하니까 믿음이 가죠. 또 CDN 을 사용하면 절대로 구글의 기술적인 문제로 웹사이트가 다운되는 경우가 거의 불가능합니다. 이걸 '고장 허용 한계 (Fault Tolerant)' 라고도 하는데 아마존 웹 서비스 혹은 구글 클라우드 같은 플랫폼은 99.9x % 거의 이런 Fault Tolerance 를 자랑하죠. 한 서버가 지진이나 재해 같은 불상사로 완전히 땅에 꺼져 버려도 다른 지역에 있는 서버로 여러분의 웹사이트는 문제 없이 정상 가동 된다는거죠. Firebase 도 구글 클라우드를 쓰기 때문에 같은 Fault Tolerant 로 뒷바침 되어 있다고 볼수 있습니다.


장점 2 : 가격 


윗 사진은 2016년 12월 28일에 퍼온 구글 Firebase 의 가격입니다. 밑 링크를 보면 자세히 볼수 있습니다.


https://firebase.google.com/pricing/


저정도면 보다시피 개발할때는 아무런 돈이 들지 않는다고 볼수 있습니다. 이런점이 Heroku 나 다른 플랫폼보다 나은게 좀더 깔끔하고 가격 대비가 좋은것 같습니다.


장점 3 : 한곳에 다양한 서비스 제공



윗 사진은 제가 파이어 베이스에 구글 어카운트로 로그인 한후 데이타 베이스 스탯을 보는 화면 입니다. 제일 왼쪽을 보면 메뉴가 보이는데 모든 서비스가 한눈에 들어 옵니다. 이런 점은 Heroku, AWS 같은 플랫폼도 비슷하기 때문에 꼭 유일한 장점이라고 보긴 힘들지만 깔끔하고 좀 더 간단하다는 점에서 '좋아요' 를 누루고 싶네요.


장점 4 : 시작할때 슈퍼 간단한 개발 과정



성능. 가격. 다양한 서비스. 이 세가지가 Firebase 의 큰 장점이긴 제일 큰 장점은 역시 Firebase 가 다른 개발 플랫폼보다 쉽다는 점입니다. 데이타베이스는 간단한 JSON 으로 통합 되어 있고 만드는 점이나 구글 어카운트로 바로 로그인 가능한 점, 잘되어 있는 시작 가이드 그리고 여러가지 서비스 사용 지침서. 이런 점들이 Heroku 난 구글의 Google Dev App Engine 보다 훨씬 더 쉽게 되어 있습니다.


이 와 같이 Firebase 의 4가지 장점을 보았는데요. 하지만 Firebase 도 몇가지 단점이 있습니다.


단점 1 : 제한된 서비스


Firebase 의 가장 큰 장점인 심플한 점이 또한 단점이 됩니다. Firebase 가 가장 필요한 기본적인 서비스를 제공하고 있습니다. 구조적 데이타를 저장할때 쓰는 데이타베이스 서비스 (Database), 사진이나 파일 같은 비구조적 데이타를 저장할때 쓰는 객체기반 저장 장치 서비스 (Storage) , 보안에 필요한 공증 서비스 (Authentication), 웹사이트 개발에 쓰는 호스팅 서비스 (Hosting), 방문자 파악에 쓰는 분석 서비스 (Analytics) 등등 여러가지... 하지만 이 역시 더 많은걸 필요한 개발자나 시스템 사용자에겐 제한적일수 있습니다. 그리고 Firebase 는 역시 모바일 플랫폼인 iOS 와 안드로이드에 집중 되어 있기 때문에 웹사이트 개발 용으로 쓰기엔 제한이 있습니다.


단점 2 : 제한된 개발 환경


구글은 아이티 파워 하우스인 만큼 여러가지 자신들만의 개발언어를 만들었는데요. 그중 하나가 AngularJS 입니다. 개발 환경이 자바스크립트 위중인건 장점일수 있지만 Java J2EE, C# .NET, Python Djagon 등등 다른 환경에 익숙한 개발자들은 불편함을 느낄수 있습니다. 물론 꼭 AngularJS 를 써야 하는건 아니고 ReactJS, Polymer, KnockoutJS 혹은 그냥 플레인 자바스크립트 (Javascript Vanilla) 를 쓸수 있지만...


단점 3 : 부족한 참고 자료와 개발 가이드

 Firebase 가 Google IO 에서 발표된 기간을 고려하면 Firebase 는 상당히 잘 다큐멘트 되어 있습니다. 특히 쉽게 시작하기에는 문제가 없는편이죠. 그러나 역시 아직 좀 더 깊게 파고 들면 들수록 필요한 사용법은 부족하고 또한 개발자들의 커뮤니티 (Community) 도 부족한 편입니다. 하지만 이점은 시간이 흐르고 Firebase 개발자가 점점 많아지면 많이 발전할거라고 기대되는 부분입니다.


오늘은 Firebase 에 대해서 간략하게 그리고 장단점에 대해서 알아보았습니다. 다음에는 Firebase 의 사용 방법 그리고 개발 하는 방법에 대해서 이야기 하겠습니다. 다음 시간 까지 안녕 ~