우연한 기회에 Firebase를 접하게 되었다.
Firebase라는 이름은 클라우드 서비스의 하나로 이전부터 알고 있었지만, 실제로 사용은 처음 하는 것이다.
비전공자이고, 웹페이지에 대해 거의 문맹에 가까운 입장이지만, 호기심에 이 Firebase를 배워보려 마음을 먹었기에 공부하는 내용을 정리해 두려고 한다.
1. Firebase는 무엇일까?
우선 Firebase는 구글에서 만든 프로그램의 일종으로, 인터넷을 이용한 서비스를 쉽게 만들 수 있도록 필요한 기능을 제공하는 도구 (Solution)이다.
한마디로 웹서비스를 만드는 데 필요한 여러 도구를 이미 마치 레고 블록처럼 모듈화시켜 준비해 두고, 각 사용자가 필요에 따라 각각의 기능을 복잡한 코드를 만들지 않더라도 간단히 몇 줄의 코드로 불러서 사용할 수 있게 해주는 효용을 제공한다.
참고로, Firebase 콘솔에서는 Firebase에 대해 다음과 같이 다소 전문적인 단어인 컨테이너라는 용어로 소개하고 있는데, 컨테이너는 외부 환경에 영향을 받지 않고 간단하게 사용할 수 있는 모듈화된 기능 또는 프로그을 의미한다.
이 때문에, 기본적인 웹페이지 운영을 가능하게 할 뿐 아니라, 모바일용 앱도 쉽게 만들 수 있게 해준다.
특히 웹페이지에 정적인 내용만을 보여주는 것이 아니라, 상황에 따라 DB 운용 및 이 DB의 검색 및 자료 불러오기 등을 지원하는 DBMS의 역할을 제공한다. 아마도 이 때문에 이름에 base라는 단어가 들어있는 게 아닌가 싶다. 문자나 숫자 데이터 외에, 사진 등과 같은 파일 형태의 데이터도 내장된 storage 기능을 이용하여 DB의 일부분으로 저장 및 불러오기 등의 기능도 제공한다.
구글의 Firebase 소개 페이지는 Firebase를 다음과 같이 소개하고 있다.
2. Firebase로 할 수 있는 것들
Firebase는 생각보다 많은 다양한 기능들을 제공한다.
이들 중 피부에 와닿는 것들을 중심으로 중요한 것들을 소개한다.
1) 웹 호스팅 서버의 역할을 한다.
Firebase를 이용하면, 별도의 웹호스팅 서버가 없더라도, 사용자가 만든 웹페이지 HTML 만으로 간단히 웹호스팅을 할 수가 있다. 즉 자신이 만든 홈페이지를 인터넷에 게시할 수가 있다.
인터넷에 게시하는 방법도 매우 쉽다. 이후 설명하겠지만 사용자가 에디터의 명령장에서 Firebase deploy 명령을 입력하는 것만으로 인터넷 게시가 완료된다. (프로젝트당 최대 36개 까지의 사이트를 지원)
또한 원하는 경우, 자신이 별도로 구입한 자신만의 도메인(커스톰 도메인)을 이렇게 게시한 웹페이지에 연결할 수도 있다. 도메인은 각자 자신이 원하는 곳에서 구입한 후, 자유롭게 연결하여 사용하면 된다.
2) 모바일용 앱을 쉽게 만들 수 있도록 앱 호스팅을 제공한다.
위에서 만든 웹페이지를 모바일에서도 접속할 수 있기는 하지만, 별도의 앱으로 만들 수도 있다. 다만 이 부분은 실제 요금이 부과되는 요금제부터 사용이 가능하다.
3) 서버 없이도 Cloud 기반의 Database를 만들 수 있다.
Firebase는 Cloud 기반의 DB 시스템인 Firestore Database를 제공하는데, 이를 이용하면, 자체적인 서버를 갖추지 않아도, 비교적 간단한 코드 몇 줄로 인터넷 웹페이지에서 구현되는 NoSQL DB를 만들 수가 있다.
즉, 이를 이용하면 웹페이지에 대한 지식이 많지 않은 경우라도, 쉽게 웹페이지에서 구현되는 DB를 만들 수 있다. DB에 기록된 데이터들은 검색을 할 수도, 다시 불러와 웹페이지에 게시할 수도 있다. 당연하게도 일부 데이터의 수정이나, 삭제, 편집 등도 가능하다.
또한 사진이나, 음악, 동영상 등의 자료들도 DB에 저장되는 데이터의 일부로 저장할 수 있다.(실제로는 PC에서 단독으로 사용되는 Stand-alone 방식에서처럼, 이런 파일들은 별도 공간에 저장하고, 해당 위치에 대한 정보를 DB 내에 저장하는 방식을 사용한다.)
4) 파일 저장을 위한 Storage 기능도 제공한다.
Firebase는 사진이나, 음악, 동영상 등의 파일들을 저장하기 위한 Storage 기능을 기본적으로 제공한다. 웹에서 사용할 다양한 파일들을 여기에 저장했다가, 웹페이지에서 불러서 사용할 수 있고, DB의 일부로 사진 등을 사용할 수가 있게 해준다.
5) IOT 용도로 주로 사용되는 Realtime Database 서버도 지원한다.
Firebase는 위에 소개한 Firestore Database 외에, Real-time DataBase 설루션도 제공한다.
이 설루션은 주로 IOT 센서처럼 연속적으로 발생하는 실시간 데이터값을 저장하고, 처리하는데 적합한 것으로 알려져 있다.
6) 보안 및 인증 문제 해결
Firebase는 자체적으로 사용자에 대한 인증 기능을 제공해 준다.
10여 줄 이내의 짧은 코드로 새로운 가입자의 처리 및 로그인 등의 문제를 해결해 준다.
7) 앱 내에서의 메시지 기능
Firebase를 이용하여 개발된 앱을 사용하는 여러 사용자들에게 필요시, 메시지를 보낼 수 있는 기능을 제공한다. 이를 이용하면, 앱 내에서 공지사항 통지 및 채팅 기능 등의 구현이 가능하다고 한다.
7) 웹 서비스 분석 및 관리 기능
Firebase 내에는 웹서비스에 대한 사용자 분석하는 등의 서비스 분석 및 관리 기능을 제공한다고 한다.
8) Function 및 확장(Extension) 기능
위에서 소개한 기본 기능들 외에, 여러 가지 레고 블록처럼 기능을 모듈화해서 추가로 사용 가능한 확장 기능으로 제공하고 있다.

