www.machinelearningmastery.ru

Машинное обучение, нейронные сети, искусственный интеллект
Header decor

Home
Занимательная история, выдающиеся люди, малоизвестные факты, находки, открытия, фальсификации. Присоединяйся!

Создание платформы публикации вакансий с помощью FaunaDB и Apollo

Дата публикации Oct 3, 2019

TalentHubначался как небольшой проект выходного дня и превратился в полноценную платформу публикации вакансий с открытым исходным кодом. Идея возникла из простой проблемы, с которой столкнулись мои друзья, когда они искали работу, а именно необходимость в чистой, интуитивно понятной доске объявлений о работе с поддержкой местоположения. В будущем мы планируем также включить функции отслеживания кандидатов.

В конечном счете, миссия состоит в том, чтобы создать единую платформу с открытым исходным кодом для работодателей и работников, чтобы помочь им решить задачи по подбору персонала и поиску талантов.

Вы можете просмотреть приложение в производствеВот, Код TalentHub на 100% открыт на Github; Вы можете просмотреть этоВот,

Стек TalentHub

TalentHub используетApollo Serverв качестве тонкого промежуточного программного обеспечения между FaunaDB и Apollo Client. Основной причиной наличия уровня промежуточного программного обеспечения была безопасность и больший контроль над распознавателями. Он скрывает аутентификационные токены, которые в противном случае могли бы существовать в клиенте, и обеспечивает большую гибкость в распознавателях, таких как хеширование паролей и генерация токенов.

Почему TalentHub выбрал FaunaDB

Давайте начнем с необходимости. Изначально у TalentHub был собственный сервер, который я написал на Ruby on Rails. Первоначально он был размещен на Heroku, и я также попробовал DigitalOcean. Однако поддерживать серверную часть, уровни цен и управление производительностью стало довольно обременительно. В конце концов мне стало ясно, что наличие собственного сервера замедляет цикл поставки продукта и мешает доставке новых функций так быстро, как мне бы хотелось.

Поэтому я начал искать поставщиков баз данных как услуг (DBaaS). В качестве бонуса я хотел, чтобы у него был API-интерфейс GraphQL, чтобы я мог повторно использовать множество компонентов во внешнем интерфейсе.

Услуги, с которыми я столкнулся после некоторого исследования, были:

  • Firebase
  • graph.cool
  • FaunaDB
  • Scaphoid.io

Я отказался от Firebase из-за инцидента с Parse (я имею в виду, когда он был закрыт). Я чувствовал, что не было никакой гарантии, что у Firebase не будет той же участи. Точно так же Scaphold.io был приобретен Amazon. Кроме того, я люблю экспериментировать с новыми технологиями (ранние пользователи) и помогать командам делать что-то новое.

Итак, в конце дня мне оставалось выбирать между graph.cool и FaunaDB. Хотя graph.cool выглядит круто (как они также заявляют в своих именах) и имеет много сторонников, сообщений в блогах и примерах, я предпочел архитектуру, сообщество и сообщество FaunaDB.стратегия ценообразования, В частности, серверная природа FaunaDB и гарантированные глобальные транзакции привлекательны с архитектурной точки зрения.

Другим фактором принятия решений было то, что FaunaDB имеет удобный для пользователяИнтерфейс GraphQLс визуальной панелью управления ключами, базами данных и проверкой работоспособности. Также стоит отметить, что FaunaDB имеет приятный и чистый CLI. Также было довольно легко настроить и начать использовать систему.

Наконец, я обнаружил, что сообщество вокруг FaunaDB просто потрясающее. Это все еще мало, но я уверен, что вы не получите такой же уровень поддержки и ухода нигде. Это было определенно то, что я учел при выборе услуги. Я бы порекомендовал присоединиться к FaunaDBСообщество Slackоставаться в курсе и задавать любые вопросы, которые у вас есть.

Итак, я бы сказал, что дружественный CLI, нативная поддержка GraphQL, приятное сообщество и разумные цены были основными пунктами продажи FaunaDB.

Что дальше для TalentHub и FaunaDB?

Хотя я был очень доволен FaunaDB, есть несколько функций, которые я хотел бы увидеть в будущем. Например, список включает в себя такие вещи, как:

  • Детальные уровни разрешений для ключей доступа:
    В какой-то момент мне пришлось делиться ключами доступа FaunaDB во внешнем интерфейсе, и мне было необходимо помешать пользователям получить контроль над БД. Поэтому я хотел увидеть одну гибкую систему ABAC. Я узнал, что команда Фауны недавно добавила эту функцию в версии 2.7 в ответ на запросы сообщества.
  • Гибкая фильтрация полей:
    Опять же, мне нужно было выполнить нечеткое сопоставление некоторых полей из базы данных. Сейчас это невозможно сделать, поэтому я закончил фильтрацией на стороне клиента.
  • Больше контроля над определителями полей в интерфейсе GraphQL:
    Иногда может потребоваться применить значение поля в мутации или иметь условный запрос, который сейчас недостижим. Возможным обходным путем здесь может быть написание тонкого промежуточного программного обеспечения в видеФункция Netlifyэто будет высасывать необработанные данные из FaunaDB, обрабатывать их и выплевывать клиенту.

Пример такого промежуточного программного обеспечения может выглядеть следующим образом: import {ApolloServer} из «apollo-server-lambda»

import { GraphQLClient } from 'graphql-request'
import { typeDefs } from './utils/schema'
import { customQuery } from './utils/queries'

const client = new GraphQLClient(process.env.FAUNADB_API, {
headers: {
authorization: `Bearer ${process.env.FAUNADB_KEY}`,
}
})

const resolvers = {
Query: {
customQuery: async () => {
const response = await client.request(customQuery)
return response.customQuery
}
}
}

const server = new ApolloServer({
typeDefs,
resolvers
})

exports.handler = server.createHandler()

Этот фрагмент кода использует ApolloServer для создания интерфейса GraphQL поверх Fauna. Очевидным недостатком здесь является то, что это замедлит отклик и добавит ненужные циклы ко времени отклика.

Вывод

На ранних стадиях стартапа, когда вам все еще нужно проверить свою гипотезу о соответствии продукта / рынка, вы хотите доставить продукт как можно быстрее. В идеале вам нужно будет потратить 0 минут на вещи, которые не приносят прямой выгоды клиенту, такие как настройка и поддержка внутренней инфраструктуры.

Конечно, вы можете создать сервер на своем любимом языке и в фреймворке, но он может быстро стать трудоемким и дорогостоящим для его обслуживания. Вы можете утверждать, что со временем это окупится, и вы будете иметь больше контроля над ним. Согласен, но это не ваша цель прямо сейчас. Вам необходимо доставить продукт как можно быстрее с минимальными усилиями. Тебе нужно быть стройным. Вы должны быть проворным.

Вот гдеFaunaDB имеет смыслмне. С этим сервисом я могу полностью подготовиться к работе с базой данных как услуга менее чем за час, в то время как для контейнера и самостоятельного размещения моих собственных данных и серверной части потребовался бы день или два, плюс головные боли поддержания этого.

FaunaDB позволил мне построить свой сервис, не беспокоясь об инфраструктуре данных и обо всех эксплуатационных нагрузках, которые исторически связаны с этим.


Автор:Тигран Териан
Дата: 26 сентября 2019 г.
Первоначально опубликовано на
https://fauna.com,

Оригинальная статья

Footer decor

© www.machinelearningmastery.ru | Ссылки на оригиналы и авторов сохранены. | map