Firebase는 2012년에 출시되어 2년 후 Google에 인수된 애플리케이션 개발 플랫폼입니다. 처음에는 Firebase를 실시간 애플리케이션을 위한 데이터베이스로만 생각했지만 Google은 그 잠재력을 보고 여기에 추가 서비스를 추가하기로 결정했습니다.
현재 Firebase는 웹 및 모바일 애플리케이션 생성을 용이하게 하는 18개의 서비스가 있는 BaaS(backend as a service) 시스템입니다. Firebase의 BaaS 서비스를 사용하는 회사 중에는 Accenture, Alibaba Travels, Stack, Twitch, Instacart 등 2,300개 이상의 기업이 있습니다.
목차
Firebase 사용의 이점
Firebase가 제공한 첫 번째 서비스는 실시간 데이터베이스였으며 여전히 가장 큰 장점 중 하나입니다. Firebase 실시간 데이터베이스는 클라우드에서 호스팅되며 JSON 형식으로 데이터를 저장하고 연결된 모든 클라이언트와 실시간으로 동기화합니다. iOS SDK, Android SDK 또는 JavaScript SDK를 사용하는지 여부에 관계없이 Firebase 실시간 데이터베이스에 연결된 모든 애플리케이션은 데이터베이스의 하나의 인스턴스를 공유하고 항상 최신 데이터로 최신 상태를 유지합니다.
Cloud Firestore는 또 다른 흥미로운 Firebase 서비스입니다. 글로벌 규모의 모바일 및 웹 앱에 대한 데이터 저장, 동기화 및 쿼리를 용이하게 하도록 설계된 NoSQL 문서 데이터베이스입니다. 관련 데이터를 저장하기 위한 계층 구조와 데이터 검색을 위한 표현 쿼리를 생성하면 Cloud Firestore의 모든 잠재력을 실현할 수 있습니다. 결과적으로 쿼리는 데이터 세트 크기가 아닌 결과 크기를 기반으로 확장됩니다. 이를 통해 애플리케이션이 용량을 초과해야 하는 순간까지 기다리지 않고 처음부터 확장할 수 있습니다.
앞서 언급한 데이터베이스 서비스 외에도 Firebase는 호스팅 서비스, 파일 스토리지, 기능(AWS Lambda 스타일) 등을 제공합니다.
API 생성
API는 자체 또는 타사 앱이 사용할 서비스를 제공하는 방법입니다. Firebase를 사용하면 해당 서비스에 대한 백엔드를 설정하는 번거로움 없이 Firebase 자체 서비스를 사용하는 맞춤형 서비스를 제공할 수 있습니다. 예를 들어, 산업용 센서에서 수집한 정보를 쿼리하기 위해 타사 애플리케이션에 Firebase 실시간 데이터베이스에 대한 액세스를 제공할 수 있습니다.
Firebase에서 API를 만드는 첫 번째 단계는 Firebase 콘솔 “프로젝트 추가”를 클릭하고 새 프로젝트에 이름을 지정하여 프로젝트를 추가합니다. Google은 새 프로젝트에 대해 Google Analytics를 활성화할 수 있는 옵션을 제공합니다. API에서 A/B 테스트 및 다양한 통계 보고서와 같은 이점을 얻을 수 있으므로 이 권장 사항을 수락하는 것이 좋습니다.
프로젝트를 만든 후에는 API에서 사용할 Firebase 서비스를 선택할 수 있습니다. 이 작업을 설명하기 위해 Firebase 실시간 데이터베이스 서비스를 사용하는 방법을 살펴보겠습니다.
Firebase에서 실시간 데이터베이스 설정
왼쪽 탐색 모음의 개발 섹션 내에서 실시간 데이터베이스를 클릭합니다. 오른쪽에 “데이터베이스 생성” 버튼이 나타납니다. Firebase에서 첫 번째 데이터베이스를 만들려면 클릭하세요.
다음으로 새 데이터베이스에 대한 여러 지리적 위치 옵션 중에서 선택해야 합니다. 사용자와 가장 가까운 것을 선택하십시오. 이는 특히 실시간 앱에서 API의 지연 시간을 최소화하는 중요한 측면입니다.
다음 단계는 데이터베이스에 대한 기본 보안 규칙을 구성하는 것입니다. 잠금 모드를 선택한 다음 필요에 따라 액세스 권한을 할당하거나 모든 읽기 및 쓰기를 활성화하는 테스트 모드를 선택할 수 있습니다.
처음에 보안 설정을 복잡하게 하지 않으려면 테스트 모드 옵션으로 시작할 수 있습니다. 나중에 언제든지 규칙을 만들어 보안 구성을 더 세분화할 수 있습니다.
데이터베이스 구성을 마치면 해당 API가 Google Cloud Platform의 개인 콘솔 API 및 서비스 섹션에서도 활성화됩니다.
Firebase API 프로그래밍
이 시점에서 이미 Firebase 콘솔에 구성된 프로젝트의 기본 요소가 있습니다. 다음 단계는 API 코드를 작성하는 것입니다. 그렇게 하려면 로컬 컴퓨터에서 Firebase 호스팅 및 기능을 초기화해야 합니다. npm을 사용하여 firebase-tools를 설치할 수 있습니다.
npm install -g firebase-tools
그런 다음 Firebase에 로그인하고 다음 명령어로 프로젝트를 초기화할 수 있습니다.
firebase login firebase init
Firebase가 프로젝트를 초기화할 폴더를 알려주는 시작 화면이 표시되고 옵션 메뉴가 나타납니다.
해당 메뉴에서 기능 및 호스팅을 선택합니다(호스팅 옵션을 사용하면 개발할 API에 대한 사용자 지정 URL을 가질 수 있음). 그런 다음 이전에 만든 Firebase 앱 목록에서 선택한 다음 사용할 언어를 선택해야 합니다. 웹 API를 개발하기 위해 JavaScript를 선택할 수 있습니다.
패키지 종속성을 사용하려면 functions 폴더 안에 npm을 사용하여 설치하십시오. 그런 다음 함수에 대한 코드 작성을 시작할 수 있습니다. 필요한 다른 패키지와 함께 firebase-functions 및 firebase-admin 패키지를 포함하는 것을 잊지 마십시오.
import * as functions from 'firebase-functions'; import * as admin from 'firebase-admin';
실시간 데이터베이스를 사용하려면 JavaScript SDK를 초기화할 때 해당 URL을 지정해야 합니다. URL은 Firebase 콘솔의 실시간 데이터베이스 섹션에 있습니다. 다음과 같은 형식으로 인식할 수 있습니다.
https://<database-name>.<region>.firebasedatabase.app
다음 스니펫을 사용하여 프로젝트의 구성 객체에 해당하는 데이터를 교체하여 SDK를 초기화할 수 있습니다.
var config = { apiKey: "apiKey", authDomain: "projectId.firebaseapp.com", databaseURL: "https://databaseName.firebaseio.com", storageBucket: "bucket.appspot.com" }; firebase.initializeApp(config); var database = firebase.database();
API 함수의 코드를 작성했으면 배포할 차례입니다. 그러나 그렇게 하기 전에 프로젝트 구성에 따라 수정된 다음 줄을 추가하여 firebase.json에서 몇 가지를 변경해야 합니다.
"rewrites": [ { "source": "/api/v1/**", "function": "webApi" } ]
다음 단계는 배포입니다. 처음으로 전체 배포를 수행해야 하는 경우 다음 명령을 실행합니다.
firebase deploy
후속 배포에서는 –only functions 매개변수를 사용하여 기능만 배포할 수 있습니다.
배포 명령을 실행한 후 Firebase CLI는 웹 애플리케이션에서 API를 호출하는 데 사용할 수 있는 터미널에 함수의 HTTP 엔드포인트 URL을 표시합니다. URL에는 프로젝트 ID와 HTTP 함수에 대한 지역이 포함됩니다. 예를 들어 다음 URL은 itemid=1을 매개변수로 전달하여 항목 쿼리 함수를 호출하는 데 사용할 수 있습니다.
https://us-central1-apiproject-8753c.cloudfunctions.net/itemQuery?itemid=1
기능을 실행하려면 브라우저에서 해당 매개변수가 있는 URL을 엽니다.
프로덕션 환경에 배포하려면 Firebase 가격 페이지에서 읽을 수 있는 것처럼 사용한 만큼만 지불하는 Firebase Blaze 요금제를 구독해야 합니다. 매월 말에 사용량에 대한 요금이 청구되는 사후 청구 서비스입니다.
Blaze 구독이 없는 경우 배포 명령에 API URL이 표시되지 않습니다. 대신 런타임 환경에 배포하려면 Blaze 플랜에 가입해야 한다는 메시지가 표시됩니다. 이 경우에도 Firebase 로컬 에뮬레이션 제품군을 사용하여 Firebase 프로덕션 환경에 배포하는 대신 로컬 시스템에서 애플리케이션을 빌드하고 테스트할 수 있습니다. 로컬 테스트는 각 테스트 실행에서 계정에 요금이 발생할 수 있으므로 애플리케이션 개발 중 불필요한 비용을 방지하는 데 유용합니다.
로컬 테스트 및 프로토타이핑
로컬 에뮬레이터 제품군 도구는 로컬 컴퓨터에서 앱을 테스트하는 데 쉽고 유용한 프로토타입을 만드는 통합 사용자 인터페이스를 제공합니다.
Emulator Suite 사용자 인터페이스를 사용하여 데이터베이스 디자인, Cloud Functions 워크플로를 테스트하고 백엔드 서비스의 성능을 분석하고 보안 규칙의 변경 사항을 평가하는 등의 작업을 수행할 수 있습니다. API 기능을 프로덕션 환경으로 보내기 전에 테스트하는 것은 기본적으로 안전한 샌드박스입니다.
기능을 에뮬레이트하거나 로컬에서 애플리케이션을 테스트하려면 firebase emulators:start를 실행하세요. Firestore Emulator를 사용하려면 Java가 설치되어 있어야 합니다. 없으시다면 아래에서 설치하시면 됩니다 여기.
Firestore Emulator를 호출하면 명령이 브라우저에서 Emulator Suite 사용자 인터페이스를 열 수 있는 URL을 반환합니다. 기본적으로 이 URL은 localhost:4000이지만 컴퓨터마다 다를 수 있습니다.
또한 HTTP 기능에 대한 전체 URL을 얻을 수 있습니다. 이 URL은 다음과 유사합니다.
http://localhost:5001/apiproject-8753c/us-central1/itemQuery
프로젝트 이름, 함수 이름만 갖고 로컬 시스템에서 다른 포트 번호를 가질 수도 있습니다.
기능을 테스트하려면 에뮬레이터에서 반환된 URL을 복사하고 필요한 매개변수(예: ?itemid=1)를 추가한 다음 브라우저의 새 탭에 입력합니다. API 실행 결과는 Emulator Suite UI에 표시됩니다.
로그 탭에서 itemQuery() 함수가 실행되었음을 나타내는 새 로그를 볼 수 있습니다. 함수가 Firestore 데이터베이스에 새 데이터를 생성하는 경우 Firestore 탭에 표시됩니다.
API에 대한 노출 확대
개발한 API가 대중화되기를 원한다면 Firebase도 도움이 될 수 있습니다. 애플리케이션을 더 빠르게 구축할 수 있기 때문에 백엔드 서비스를 시작하고 실행하는 데 많은 노력을 기울일 뿐만 아니라 제품 포지셔닝을 도와줍니다. 어떻게 그게 가능합니까? Firebase와 연결된 앱이 다른 애플리케이션보다 검색 순위에서 더 우수하기 때문입니다.
또한 Firebase의 앱 인덱싱 API를 고려하십시오. 이 도구는 앱 링크의 검색 순위를 높이고 사용자가 원하는 콘텐츠를 찾도록 도와줍니다. 또한 관심 있는 사용자가 클릭 한 번으로 앱의 사용자가 될 수 있도록 앱의 홈페이지 버튼 뒤에 설치 버튼을 배치합니다.
결론적으로 Firebase는 API 개발 속도를 획기적으로 높이는 백엔드 서비스를 제공할 뿐만 아니라 API가 실행되어 세상에 노출되면 이를 홍보하고 수익을 창출하는 데 도움이 되는 백엔드 서비스를 제공합니다.