
Создание аналога Firebase на open-source компонентах
MarkovM 3 минуты назад Создание аналога Firebase на open-source компонентах Сложный 12 мин 2 Блог компании Amvera Искусственный интеллект Веб-разработка * Базы данных * Программирование * Туториал Мы уже разобрались с...
Anthropic — What company has the best second artificial intelligence model at the end of June?
Вот важная новость с фронта ИИ: MarkovM 3 минуты назад Создание аналога Firebase на open-source компонентах Сложный 12 мин 2 Блог компании Amvera Искусственный интеллект Веб-разработка * Базы данных * Программирование * Туториал Мы уже разобрались с тем, что такое BaaS, почему появились Firebase и Supabase, чем они отличаются от обычного backend и можно ли самому собрать что-то похожее. Как я и говорил в прошлой статье, сегодня мы наконец попробуем самостоятельно собрать альтернативу Firebase с Realtime исключительно на open-source компонентах! Но важная оговорка: мы не будем делать полный клон Firebase с его тонной функционала, но мы соберем минимальную рабочую альтернативу, которую уже можно подключить к frontend через SDK и использовать почти как Firebase.
По итогам статьи у нас будет:Авторизация;База данных;CRUD;Безопасность на уровне строк (RLS, пользователи могут получать/изменять только собственные строки);Realtime обновления;Собственный JS SDK. Подключение и работа на фронтенде будет выглядеть примерно так:const ourBaas = createBaasClient({ apiUrl: " realtimeUrl: "wss://<название-проекта>. <имя-пользователя>.
Технические детали
io/realtime", keycloak: { url: " realm: "ourbaas", clientId: "ourbaas-web", }, }) await ourBaas. init() await ourBaas. login() // Авторизация = await ourBaas.
get() // Получение данных await ourBaas. insert({title: "Какой-то текст"}). single() // Ввод данных (INSERT) ourBaas.
on("INSERT", payload => { console. log("Новое сообщение:", payload. subscribe() // Подписка на обновления Это все - лишь учебная Firebase-подобная система, а не полный клон Firebase.
Отраслевые последствия
Что будем использовать для создания функционального аналога FirebaseДля своей альтернативы Firebase я взял такой стек:PostgreSQL - основная база данных с RLS;Keycloak - авторизация;PostgREST - REST API поверх PostgreSQL;Realtime через LISTEN/NOTIFY в PostgreSQL;JavaScript SDK и небольшой Realtime-сервис. Как это будет работатьПользователь логинится через Keycloak (допустим, какая-то кнопка на фронте вызывает await ourBaas. login()), после чего Keycloak возвращает специальный JWT токен.
Этот токен мы куда-то сохраняем и впоследствии используем для общения с PostgREST. Фактически мы этот токен просто подставляем в Authorization заголовок. PostgREST, получая запрос от нас с JWT токеном, этот токен “проверяет” и если все окей - ходит в PostgreSQL как авторизованный пользователь, при этом передавая дальше JWT.
В PostgreSQL мы настроим RLS Policy (политику безопасности на уровне строк), которая будет проверять JWT токен, доставать оттуда UUID и возвращать только те строки, которые безоговорочно принадлежат именно этому UUID. Получается, безопасность будет не в SDK, не в нашем коде, а в самой базе данных.
Событие, по словам экспертов, усилит конкуренцию в сфере ИИ.




