ћерион Ќетворкс

8 минут чтени€

Firebase - это платформа дл€ разработки приложений, запущенна€ в 2012 году и двум€ годами позже приобретенна€ Google. »значально Firebase задумывалась как база данных дл€ приложений реального времени, но Google увидел ее потенциал и решил добавить к ней дополнительные сервисы.

¬ насто€щее врем€ Firebase представл€ет собой систему BaaS (Backend as as Service) дл€ упрощени€ создани€ веб-приложений и мобильных приложений с 18 службами. —реди компаний, использующих услуги BaaS Firebase, - Accenture, Alibaba Travels, Stack, Twitch и Instacart, а также более 2300 других.


ѕреимущества использовани€ Firebase

ѕервой из услуг, предлагаемых Firebase, была база данных в реальном времени, и она остаетс€ одной из самых привлекательных. Real-time базы данных Firebase размещаютс€ в облаке, хран€т данные в формате JSON и синхронизируютс€ в реальном времени с каждым подключенным к ним клиентом. Ќезависимо от того, используете ли вы iOS SDK, Android SDK или JavaScript SDK, все приложени€, подключенные к Realtime базе данных Firebase, совместно используют один экземпл€р базы данных, всегда работают с последними данными.

Cloud Firestore - еще один интересный сервис Firebase. Ёто NoSQL база данных документов, предназначенна€ дл€ облегчени€ хранени€, синхронизации и выполнени€ запросов дл€ мобильных и веб-приложений в глобальном масштабе. —оздание иерархий дл€ хранени€ св€занных данных и запросов дл€ получени€ данных позвол€ет полностью реализовать потенциал Cloud Firestore. ¬ свою очередь, запросы масштабируютс€ в зависимости от размера результатов, а не от размера набора данных. Ёто позвол€ет приложени€м масштабироватьс€ с самого начала, не дожида€сь момента, когда запрашиваемые ресурсы превыс€т имеющиес€.

¬ дополнение к вышеупом€нутым службам баз данных Firebase также предлагает услуги хостинга, хранилища файлов, функции (в стиле AWS Lambda) и многое другое.


—оздание API

API-интерфейсы - это способ предоставлени€ услуг дл€ использовани€ вашими собственными или сторонними приложени€ми. Firebase позвол€ет предоставл€ть настраиваемые службы, которые, в свою очередь, используют собственные службы Firebase, без необходимости настраивать серверную часть дл€ этих служб. ¬ы можете, например, предложить доступ к базе данных Firebase в реальном времени дл€ сторонних приложений дл€ запроса информации, собираемой промышленными датчиками.

ѕервым шагом в создании API в Firebase €вл€етс€ доступ к консоли Firebase и добавление проекта, нажав Ђƒобавить проектї (Add project) и присвоив название новому проекту. Google предоставит вам возможность включить Google Analytics дл€ вашего нового проекта. –екомендуетс€ прин€ть эту рекомендацию, так как вы получите такие преимущества, как A/B-тестирование и широкий спектр статистических отчетов относительно вашего API.

ѕосле создани€ проекта вы сможете выбрать службы Firebase, которые будет использовать ваш API. „тобы проиллюстрировать эту задачу, мы разберЄм, как использовать службу базы данных Firebase Realtime.


Ќастройка базы данных реального времени в Firebase

Ќа панели навигации слева в разделе Ђ–азработкаї (Develop) щелкните ЂRealtime Databaseї. —права по€витс€ кнопка ЂCreate Databaseї. Ќажмите на нее, чтобы создать свою первую базу данных в Firebase.

Realtime Database

«атем вам нужно будет выбрать один из нескольких вариантов географического местоположени€ дл€ вашей новой базы данных. ¬ыберите тот, который ближе всего к вашим пользовател€м. Ёто важный аспект дл€ минимизации задержки вашего API, особенно дл€ приложений реального времени.

ћестоположение

—ледующим шагом €вл€етс€ настройка основных правил безопасности дл€ вашей базы данных. ¬ы можете выбрать заблокированный режим, а затем назначить права доступа по мере необходимости или выбрать тестовый режим, который разрешает все операции чтени€ и записи.

Ѕезопасность

ƒл€ начала, чтобы не усложн€ть свою жизнь настройками безопасности, можно выбрать тестовый режим. ј правила безопасности можете настроить позже.

 ак только вы закончите настройку своей базы данных, соответствующий API также будет добавлен в разделе API and Services в консоли Google Cloud Platform.


ѕрограммирование Firebase API

Ќа данный момент у вас уже есть основные элементы вашего проекта, настроенные в консоли Firebase. —ледующим шагом будет написание кода API. ƒл€ этого вам нужно будет инициализировать хостинг и функции Firebase на вашем локальном компьютере. ¬ы можете установить firebase-tools с помощью npm:

npm install -g firebase-tools

«атем вы можете войти в firebase и инициализировать свой проект с помощью следующих команд:

firebase login firebase init

ќтобразитс€ экран приветстви€, в котором Firebase укажет папку папке, в которой будет хранитьс€ ваш проект, и по€витс€ меню параметров.

ћеню параметров

¬ этом меню выберите Functions and Hosting (опци€ Ђ’остингї позволит вам иметь собственный URL-адрес дл€ API). «атем выберите из списка приложение Firebase, которое вы создали ранее, после чего вы должны выбрать €зык дл€ использовани€. ƒл€ разработки веб-API вы можете выбрать JavaScript.

Functions and Hosting

≈сли вы будете использовать зависимости пакетов, установите их с помощью npm внутри папки функций. «атем вы можете начать писать код дл€ своих функций. Ќе забудьте включить пакеты firebase-functions и firebase-admin нар€ду с другими пакетами, которые вам нужны:

import * as functions from 'firebase-functions'; 
import * as admin from 'firebase-admin';

„тобы использовать базу данных в реальном времени, вы должны указать ее URL при инициализации вашего JavaScript SDK. URL-адрес находитс€ в разделе Realtime Database консоли 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 в терминале отобразит URL-адреса HTTP эндпоинтов ваших функций, которые вы можете использовать дл€ вызова ваших API-интерфейсов из веб-приложени€. URL-адрес содержит идентификатор вашего проекта и регион дл€ функции HTTP. Ќапример, следующий URL-адрес можно использовать дл€ вызова функции запроса элемента, передав его itemid = 1 в качестве параметра:

https://us-central1-apiproject-8753c.cloudfunctions.net/itemQuery?itemid=1

„тобы выполнить функцию, откройте URL-адрес с соответствующими параметрами в браузере.

ќбратите внимание, что дл€ развертывани€ в производственной среде требуетс€ подписка на план Firebase Blaze. ƒанный план снимает деньги по мере использовани€, о чем вы можете прочитать на странице цен на Firebase. Ёто услуга выставл€ет счет по факту использовани€, что означает, что вам выставл€етс€ счет за использование в конце каждого мес€ца.

≈сли у вас нет подписки на Blaze, команда развертывани€ не отобразит URL-адрес дл€ API. ¬место этого вы увидите сообщение, информирующее о том, что вы должны подписатьс€ на план Blaze, если вы хотите выполнить развертывание в среде выполнени€. ¬ этом случае вы все равно можете использовать Firebase Local Emulation Suite дл€ создани€ и тестировани€ приложений на локальном компьютере вместо их развертывани€ в производственной среде Firebase. Ћокальное тестирование полезно, чтобы избежать ненужных затрат во врем€ разработки приложени€, поскольку каждый запуск теста может приводить к расходам на вашем счете.


Ћокальное тестирование и прототипирование

»нструмент Local Emulator Suite предлагает интегрированный пользовательский интерфейс, который делает упрощает создание прототипов и тестирование ваших приложений на локальном компьютере.

— помощью пользовательского интерфейса Emulator Suite вы можете тестировать проекты своей базы данных, рабочие процессы облачных функций, анализировать производительность серверных служб и оценивать изменени€ в правилах безопасности и пр. ѕо сути, это безопасна€ песочница дл€ проверки функциональности вашего API перед отправкой в производственную среду.

„тобы эмулировать свои функции или протестировать приложение локально, запустите эмул€торы firebase: start. „тобы использовать эмул€тор Firestore, на компьютере должна быть установлена Java.

ѕри вызове Firestore Emulator, команда вернет URL-адрес, который позволит вам открыть пользовательский интерфейс Emulator Suite в вашем браузере. ѕо умолчанию этот URL-адрес будет localhost: 4000, но он может отличатьс€ на каждой машине.

¬ы также получите полный URL-адрес своей функции HTTP. Ётот URL будет выгл€деть примерно так:

http://localhost:5001/apiproject-8753c/us-central1/itemQuery

“олько он будет иметь им€ вашего проекта, им€ вашей функции, а также может иметь другой номер порта на вашем локальном компьютере.

„тобы протестировать функцию, скопируйте URL-адрес, возвращаемый эмул€тором, добавив все необходимые параметры (например, ?itemid = 1), и откройте в новой вкладке браузера. –езультаты выполнени€ API по€в€тс€ в пользовательском интерфейсе Emulator Suite.

Ќа вкладке ЂLogsї вы увидите новые логи, указывающие, что функци€ itemQuery() была выполнена. ≈сли ваша функци€ генерирует новые данные в базе данных Firestore, вы увидите их на вкладке Firestore.


–асширение возможностей вашего API

≈сли вы хотите, чтобы разрабатываемые вами API стали попул€рными, Firebase может помочь и с этим. Ќе только потому, что это позвол€ет вам быстрее создавать приложение, снима€ много работы по настройке и запуску серверных сервисов, но также помога€ вам в позиционировании вашего продукта.  ак такое возможно? ѕросто потому, что приложени€, св€занные с Firebase, занимают более высокие позиции в поисковом рейтинге, чем другие приложени€.

“акже примите во внимание API индексировани€ приложений Firebase. Ётот инструмент улучшает поисковый рейтинг ссылок приложений и помогает пользовател€м находить желаемый контент. ќн также помещает кнопку "”становить" после кнопки на главной странице вашего приложени€, чтобы заинтересованные пользователи всего за один клик могли пользоватьс€ вашим приложением.

¬ заключение отметим, что Firebase не только предлагает услуги бэкэнда, которые значительно ускор€ют разработку собственного API, но и помогает продвигать его и зарабатывать на этом деньги.


—кидки 50% в Merion Academy

¬ыбрать курс