모바일 서버 개발을 위해서는 인증, 데이터베이스, 푸시 알람, 스토리지, API 등 모든것을 개발해야 했습니다. 

 

하지만 이러한 모바일 서버 구성 범위는 새로 개발하는 앱들과 큰 차이가 나지 않기 때문에 Linux, FTP, 데이터베이스 등을 설치하고 노드나 스프링 서버를 올리고 방화벽을 구축하는 등의 반복적인 일련의 과정들을 앱 개발시 매번 수행하는 것은 비효율적입니다. 

 

오늘 소개할 파이어 베이스(FireBase)는 이러한 개발 플랫폼을 프로젝트 구축 시 자동으로 생성해줍니다. 따라서 서버 구축을 위해 Linux 명령어를 알 필요도 없으며 도메인을 구입할 필요도 없습니다!

 

파이어베이스에 대해 조금 더 자세히 알아볼까요?

 

1. 파이어베이스란?

 

파이어베이스는 2011년 파이어베이스사가 개발하고 2014년 구글에 인수된 모바일 및 웹 애플리케이션 개발 플랫폼이며, 구글 애널리틱스와 구글 패브릭에서 제공하는 기능들을 포함한 다양한 기능들을 제공합니다! 

 

한 마디로 파이어 베이스는 운영체제에 상관없이 앱을 만들수 있도록 해주는 개발 Tool이라고 할 수 있습니다. 

구글 드라이브와 애널리틱스를 적용해서 어떤 기기에서나 개발할 수 있는 환경을 만들어 주고, 사용자들의 이용횟수, 광고 효과, 문제 발생 빈도 등을 알려줘서 개발자들이 쉽게 활용할 수 있도록 지원합니다. 

 

파이어베이스는 이렇듯 앱 개발 기간을 단축시켜주고, 앱 개발 난이도를 낮춰줌으로써 개발 방식을 효율적으로 개선해줍니다.


 

2. 파이어베이스 개발 기능

 

파이어 베이스의 개발 기능은 크게 인증 / 실시간 데이터베이스 / 클라우드 파이어스토어 / 저장소, 호스팅 크게 5가지로 분류됩니다. 

 

[인증]

 

개발 기능 중 인증 기능은 사용자가 로그인, 회원가입 등을 할 때 보다 쉽고 편리하게 할 수 있도록 돕는 기능입니다. 페이스북, 트위터, Github의 SDK(소프트웨어 개발 기트)를 사용할 필요 없이 파이어 베이스의 인증 기능을 이용한 SSO(통합 인증)을 지원하는 서비스를 통해 사용자는 로그인을 활동을 쉽게 할 수 있습니다.

 

*SSO(Single Sign On)란?


단 한번의 인증 절차만으로도 여러 앱에 접속이 가능한 인증 방식입니다. SSO 사용시 다수의 계정이 불필요한 이유는 IOP(Identity Provider)를 통해 서비스 인증 정보를 관리함으로써 하나의 계정으로 다수의 서비스가 이용이 가능하기 때문입니다. 

 

[실시간 데이터베이스]

 

파이어베이스는 NoSql 클라우드 데이터베이스에 JSON 형태로 데이터를 저장하고 클라이언트에 실시간으로 동기화 합니다.

 

*
NOSQL(Not Only Sql)이란?

 

RDBMS 형태의 관계형 데이터 베이스가 아닌 고성능 비관계형 데이터베이스를 설명하는데 사용되는 용어입니다. 배포 용이성, 확장 가능성, 고가용성 및 우수한 복원력으로 널리 인정받고 있습니다.

일반적인 HTTP 요청이 아닌 동기화를 하기때문에 데이터가 바뀔때마다 수 밀리 초 안에 업데이트를 수신할 수 있습니다.
특히 기기가 오프라인 상태일때도 로컬에 데이터를 저장하며, 기기가 온라인 상태가 되면 오프라인일때 발생한 로컬 데이터와 원격 데이터를 동기화 하여 충돌없이 안정적으로 데이터 사용이 가능합니다.


 

-NOSQL의 장점

앱에서 데이터베이스 사용을 위한 별도의 서버 구성이 필요 없고 

그에 관련된 서버 개발자에 대한 비용을 절약할 수 있습니다. 

 

[클라우드 파이어스토어-신버전 데이터베이스]

파이어베이스 및 구글 클라우드 플랫폼의 모바일, 웹, 서버 개발에 사용되는 유연하고 확장 가능한 데이터베이스입니다.

 

[스토리지(저장소)]

 

파이어베이스의 저장소는 사용자가 제작한 이미지, 오디오, 동영상 등의 컨텐츠를 저장하고 필요에 따라 저장된 콘텐츠를 제공하기 위해 만들어졌습니다.

 

-파이어 베이스 저장소의 장점

 1) 견고한 작업이 가능합니다. 

     :다운로드/업로드가 중지되었을때 중단된 위치부터 다시 시작

 2) 강력한 보안을 유지합니다.  

     :파이어 베이스 인증과 통합하여 파이어 베이스 저장소에 대한 접근 제어 가능

 3) 높은 확장성을 가지고 있습니다. 

     :앱 사용자가 급격히 늘더라도 엑사바이트급까지 쉽게 확장 가능

 

[호스팅]

파이어베이스는 HTML , CSS, 자바스크립트 등과 같은 정적 콘텐츠를 빠르고 안전하게 호스팅해줍니다. 또한 SSL을 제공하기 때문에 안전하게 컨텐츠를 전송할 수 있으며 전세계 CDN에 캐싱되어 있기때문에 사용자가 어디에 있든지 제한없이 콘텐츠를 빠르게 전송이 가능합니다.

 

 

*호스팅이란
? 인터넷상의 공간을 임대해주는 서비스로 직접 웹 서버를 구축하지 않아도 서버 일부 공간을 임대해서 독자적인 서버를 가진것과 동일한 효과

 

*CDN(Content Delivery Network) : 
네트워크에 동일한 콘텐츠 내용을 복제하여 대규모 인터넷상에 분산시켜 놓은 시스템으로 전세계에 걸쳐 분산배치되면 콘텐츠가 하나일때보다 훨씬 빠르게 접근 가능 

 

*SSL(Secure Socket Layer) : 
월드와이드 웹 브라우저와 웹 서버간에 데이터를 안전하게 주고받기 위한 업계표준 프로토콜

  

 

3. 파이어베이스의 장점

 

1) 인증 시스템을 지원합니다. 

 

인증은 Firebase 에서 로그인을 담당하는 부분입니다. 로그인을 담당하는 부분은 직접 개발할 경우 그 과정이 무척 복잡한데요. 그 이유는 로그인시, 인증된 사용자인지 확인하는 세션처리와 해당 세션으로 데이터베이스/저장소에 접근해도 문제가 없는지 확인하는 보안처리 뿐만 아니라 아이디 찾기, 비밀번호 찾기 및 바꾸기, 이메일 인증 등을 구축해야 합니다. 파이어베이스는 이 모든 것을 지원합니다.

 

2) 파이어베이스는 NoSQl 기반의 3세대 데이터베이스 입니다. 

 

현재 많이 사용되는 Oracle이나, MySQL 같은 관계형 데이터베이스 대신 Document 형식의 빠르고 간편한NoSQL기반의 데이터베이스를 도입했습니다. 또한 파이어베이스는 다른 데이터 베이스 들과 다르게 RTSP(Real Time Stream Protocol)방식의 데이터베이스를 지원하고 있습니다. 

 

*RTSP(Real Time Stream Protocol)는 실시간으로 데이터들을 전송해주는 방식입니다. 이 방식을 사용하면 소켓 기반 서버를 만들어서 통신하는 것 보다 코드 양이 줄게되어 적은 코드로도 원하는 구성을 만들 수 있습니다.


 

3) 원격으로 앱 환경 상태를 구성하는 원격 구성을 지원합니다. 

 

앱의 배경화면 테마나 폰트를 바꾸거나 알림창 등을 노출시킬 때 사용합니다.


 

4) 콘솔을 제공합니다. 

 

콘솔이라는 용어는 쉽게 말해서 서버 관리자 페이지라고 생각하면 됩니다. 앱의 서버를 만들게 되면 API만 구축하는 것이 아닌 리눅스, FTP, MySQL(데이터베이스), Node.JS 서버 혹은 Spring 서버 등의 모든 것을 관리할 수 있는 관리자 페이지가 필요합니다. 파이어베이스는 서버 관리자 페이지라고 할 수 있는 콘솔을 제공하여 앱 서버 관리 차원에서의 편의성을 높여줍니다.


 

5) 사용자들의 앱 사용 정보를 Analytics를 통해 제공합니다. 

 

실시간 접속자부터 오류통계, 사용자 이탈율, 인기 페이지, 반송페이지, 사용시간 등을 추적할 수 있습니다. 이런 데이터들을 수집해서 사용자가 어떤 페이지에서 흥미를 얻고, 어떤 페이지에서 이탈을 하는지 등을 찾아내어 보다 효율적인 마케팅 계획을 수립할 수 있습니다.

 

4. 파이어베이스의 단점

 

1) 파이어 베이스 사용시 서버의 응답속도가 느려지는 문제점이 종종 드러납니다. 

 

국내에서 지금보다 파이어베이스를 활용한 앱 개발 시도가 증가한다면 구글이 아시아 쪽 서버를 새로 구축하여 응답 지연이 해결될 것이라고 보고있습니다.

 

2) FireStore(신버전 데이터베이스)나 RTD(구버전 데이터베이스)의  쿼리 구성이 빈약합니다. 

 

SQL에 익숙한 사람들은 Firebase 데이터베이스를 사용하게 되면 어려움을 느낄 수 있는데요. OR 문으로도 검색해도 결과가 제대로 나오지 않으며 LIKE 문도 존재하지 않아서 비슷한 글자나 데이터를 검색하기에 적합하지 않다고 합니다.​ 

 

(참고자료)

https://beomseok95.tistory.com/106

https://velog.io/@chan33344/1%EC%9E%A5-%EA%B5%AC%EA%B8%80-%ED%8C%8C%EC%9D%B4%EC%9

6%B4%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0

https://realmojo.tistory.com/327

https://ko.wikipedia.org/wiki/%ED%8C%8C%EC%9D%B4%EC%96%B4%EB%B2%A0%EC%9D%B4%EC%8A%A4