@graphql_ru
GraphQL — русскоговорящее сообщество

Общаемся на темы, посвященные GraphQL и опыту его использования. Проблемы. Новости. Решения. Вам могут быть полезны: @apollo_ru, @react_js, @vuejs_ru Рекомендуем сразу отключить уведомления, чтобы пребывание в чате было полезным и комфортным.

352 members

Архив канала @graphql_ru 27 июля 2018 г.

05:18:00 ДП
User 56456060
User 224769697
Павел, перелогинтесь :D
Рад что Рома тоже за генерацию схем из моделей.

Prisma хорошо подходит для небольших проектов/стартапов. 

Мнение: c GraphQL CMS они через пару лет порвут Wordpress. Но если ваш продукт гораздо сложнее чем сильно накрученный вордпресс с плагинами, то призму не рекомендую.
06:41:14 ДП
User 56456060
Буду выступать на HolyJS 2018 Moscow (24-25 ноября 2018 г.)

Предварительные тезисы:

- А НАФИГА НУЖНО ЧТО-ТО МЕНЯТЬ?
-- Что такое GraphQL?
-- Swagger vs GraphQL
-- рассматрим MVC парадигму в рамках GraphQL
- ЭКОСИСТЕМА
-- запускаем сервер на NodeJS, что нужно поставить чтоб заработала схема
-- пишем простенькую схему
-- query - stateless
-- mutation - stateless, расширенное получение данных после мутации
-- subscribtion - statefull
- АВТОРИЗАЦИЯ
-- JWT, cookie
-- почему я использую три токена (user, account, admin)
-- примитивный ACL на уровне схемы
- ПРОИЗВОДИТЕЛЬНОСТЬ
-- как отправлять файлы, и нужно ли это вообще делать через GraphQL?
-- уменьшаем кол-во запросов через DataLoader (avoiding N+1 problem)
- БЕЗОПАСНОСТЬ
-- дырки, отдаем данные которые нельзя отдавать
-- прикручиваем QueryCost (Denial of Service attacks)
-- готовим схему для PRODUCTION
- ДРУГОЕ
-- генерация схем из моделей
-- тестирование схем
-- документация
-- версионирование
-- генерим две схемы для админов и для клиентов
-- фронетнедеры писающие кипятком
- КЕЙСЫ
-- кривые схемы
-- оборачивания кучу микросервисов в одну схему
-- оборачивание REST API
-- эволюционная миграция со старого биллинга на новый
06:42:28 ДП
User 56456060
Целевая аудитория: бэкендеры на nodejs.

Что еще вы бы хотели узнать? И про что еще рекомендуете мне рассказать?

Спасибо.
06:53:27 ДП
User 135278254
круто!
06:53:44 ДП
User 231283641
кто то делал поиск на react-native+apollo с инфинити скроллом?
08:22:48 ДП
User 144022504
User 56456060
Буду выступать на HolyJS 2018 Moscow (24-25 ноября 2018 г.)

Предварительные тезисы:

- А НАФИГА НУЖНО ЧТО-ТО МЕНЯТЬ?
-- Что такое GraphQL?
-- Swagger vs GraphQL
-- рассматрим MVC парадигму в рамках GraphQL
- ЭКОСИСТЕМА
-- запускаем сервер на NodeJS, что нужно поставить чтоб заработала схема
-- пишем простенькую схему
-- query - stateless
-- mutation - stateless, расширенное получение данных после мутации
-- subscribtion - statefull
- АВТОРИЗАЦИЯ
-- JWT, cookie
-- почему я использую три токена (user, account, admin)
-- примитивный ACL на уровне схемы
- ПРОИЗВОДИТЕЛЬНОСТЬ
-- как отправлять файлы, и нужно ли это вообще делать через GraphQL?
-- уменьшаем кол-во запросов через DataLoader (avoiding N+1 problem)
- БЕЗОПАСНОСТЬ
-- дырки, отдаем данные которые нельзя отдавать
-- прикручиваем QueryCost (Denial of Service attacks)
-- готовим схему для PRODUCTION
- ДРУГОЕ
-- генерация схем из моделей
-- тестирование схем
-- документация
-- версионирование
-- генерим две схемы для админов и для клиентов
-- фронетнедеры писающие кипятком
- КЕЙСЫ
-- кривые схемы
-- оборачивания кучу микросервисов в одну схему
-- оборачивание REST API
-- эволюционная миграция со старого биллинга на новый
что-то про подписки ни слова или на больших и очень больших проектах они не нужны?
08:23:44 ДП
User 144022504
User 56456060
Рад что Рома тоже за генерацию схем из моделей.

Prisma хорошо подходит для небольших проектов/стартапов. 

Мнение: c GraphQL CMS они через пару лет порвут Wordpress. Но если ваш продукт гораздо сложнее чем сильно накрученный вордпресс с плагинами, то призму не рекомендую.
у Призмы подписки из коробки
08:34:54 ДП
User 144022504
также можно юзать не всю призму, а только сервер от нее https://github.com/prismagraphql/graphql-yoga#graphql-yoga
построеный на express/apollo-server
там тоже с подписками все ок и нет выдуманых проблем с загрузкой файлов через GraphQL
github.com/prisma/graphql-yoga
🧘 Fully-featured GraphQL Server with focus on easy setup, performance & great developer experience - prisma/graphql-yoga
08:36:44 ДП
User 144022504
и вообще Prisma - это стек технологий, которые можно юзать независимо друг от друга
https://oss.prisma.io/#libraries
08:36:55 ДП
08:40:59 ДП
User 56456060
User 144022504
что-то про подписки ни слова или на больших и очень больших проектах они не нужны?
О! Отличное дополнение.
08:55:30 ДП
User 341172775
@playra да что ж ты везде про призму то? xD
08:56:16 ДП
User 51988441
User 341172775
@playra да что ж ты везде про призму то? xD
он просто весь мир через призму видит)
08:56:39 ДП
User 51988441
@playra, сори не удержался)
08:57:22 ДП
User 51988441
но призма и правда очень хороша!
08:57:43 ДП
User 296063066
User 144022504
и вообще Prisma - это стек технологий, которые можно юзать независимо друг от друга
https://oss.prisma.io/#libraries
Призма это не стэк, это названии компании и основного продукта - ORM к базам данных. А Yoga это другой опен сорс продукт от них - сервер для GraphQL на Node.js
08:59:33 ДП
User 51988441
User 296063066
Призма это не стэк, это названии компании и основного продукта - ORM к базам данных. А Yoga это другой опен сорс продукт от них - сервер для GraphQL на Node.js
ну не совсем, она же генерит тебе graphql end points
09:02:20 ДП
User 56456060
У Prisma подход такой - опиши GraphQL схему и получи БД и сгенерированный бэкенд.
Я же за подход опиши модели и БД, а из них сгенери схему.

Оба подхода имеют свои плюсы и минусы, серебряной пули нет. Надо исходить от задач.
09:04:04 ДП
User 224769697
@nodkz может у тебя уже есть какие нибудь кейсы, когда подход призмы добавит проблем?
просто в теории вроде есть минусы, но пока не слышал чтобы на практике кто то их встречал
09:05:35 ДП
User 56456060
Кейсов, к сожалению нет.  Может кто поделится, будет интересно послушать.
09:09:41 ДП
User 56456060
Под мои задачи, призма вообще никак не ложится в следующих сценариях:
- на одном бэкенде получить несколько апи: для клиентов, для админов и еще одно сервисное
- хранение дополнительной логики в моделях для выполнения всяких страшных операций (когда надо передернуть несколько моделей и в третью что-то записать) по расписанию
09:10:50 ДП
User 56456060
В целом я не считаю что АПИ это центр бэкенда. АПИ это приложение к бэкенду.
09:12:45 ДП
User 296063066
"- на одном бэкенде получить несколько апи: для клиентов, для админов и еще одно сервисное"
Почему не ложится? Это все в 1 схеме, просто разделяется правами между пользователями
09:12:58 ДП
User 77452088
User 56456060
Целевая аудитория: бэкендеры на nodejs.

Что еще вы бы хотели узнать? И про что еще рекомендуете мне рассказать?

Спасибо.
узкие места по производительности в apollo-graphql на реакте
09:13:27 ДП
User 77452088
как например декорирование множества компонентов или часто обновляющийся кэш
09:13:46 ДП
User 77452088
или это за рамками темы уже?
09:14:06 ДП
User 213453025
User 56456060
Под мои задачи, призма вообще никак не ложится в следующих сценариях:
- на одном бэкенде получить несколько апи: для клиентов, для админов и еще одно сервисное
- хранение дополнительной логики в моделях для выполнения всяких страшных операций (когда надо передернуть несколько моделей и в третью что-то записать) по расписанию
Это все решается на уровне сервера а не орм
09:14:29 ДП
User 296063066
User 213453025
Это все решается на уровне сервера а не орм
+1
09:16:16 ДП
User 56456060
Орм может хранить некую бизнес логику модели. Мне нужно дернуть несколько таких методов, что-то просчитать и потом записать. Как раз в ОРМ удобно положить эту логику.
09:16:50 ДП
User 56456060
Скорее всего у нас с вами разное понимание, что такое ORM. Она вроде тоже на сервере 😅
09:22:56 ДП
User 56456060
User 77452088
или это за рамками темы уже?
Да, уйдет за рамки. По производительности все меняется, сегодня тормозит, а завтра уже починят. Последний косяк с год назад находили в аполло. Сейчас вроде все тихо.

Если клиент делает 10 запросов в секунду и обновляет 50 компонентов, то точно будет все ок. А вот если 1 запрос и передергивает 100к компонентов, то у вас точно проблемы возникнут. Вобщем все очень специфично, и сильно зависит от приложения.
09:25:37 ДП
User 213453025
User 56456060
Орм может хранить некую бизнес логику модели. Мне нужно дернуть несколько таких методов, что-то просчитать и потом записать. Как раз в ОРМ удобно положить эту логику.
Все равно не вижу проблемы, юзаешь призму как квери билдер и генератор схемы. Бизнес логика отдельно
09:26:06 ДП
User 213453025
Есть конкретный пример где это неудобно?
09:28:02 ДП
User 56456060
Прилетел callback с платежного шлюза. Надо провести транзакцию, оплатить заказ и отправить пару писем.
09:28:50 ДП
User 56456060
Думаю проведение транзакций лучше не палить в АПИ. Понятно что его можно прикрыть, но все равно не удобно.
09:29:51 ДП
User 56456060
Но у каждой "хозяйке на кухне" свои правила могут быть.
09:30:57 ДП
User 213453025
Есть на сервере мутация Handle Transaction, внутри которой логика которая юзает разные мутации призмы.
09:31:26 ДП
User 56456060
Плюс трабла с тестами - я тупо не представляю как их там писать.
09:31:48 ДП
User 213453025
Так же как бы юзала методы обычной орм или кверибилдер.
09:32:22 ДП
User 213453025
User 56456060
Плюс трабла с тестами - я тупо не представляю как их там писать.
Призму не нужно тестировать, тестируют бизнес-логику
09:33:18 ДП
User 56456060
))) еще бы я призму тестировал
09:34:35 ДП
User 144022504
User 51988441
@playra, сори не удержался)
😜
09:35:43 ДП
User 144022504
User 296063066
Призма это не стэк, это названии компании и основного продукта - ORM к базам данных. А Yoga это другой опен сорс продукт от них - сервер для GraphQL на Node.js
у нее под капотом все перечисленые продукты(технологии, сервисы)
09:36:59 ДП
User 213453025
User 56456060
))) еще бы я призму тестировал
Так в чем проблема? Тестируешь как любой другой грфкл-сервер
09:38:49 ДП
User 56456060
Я уж лучше модельки по отдельности затестирую. А потом начну из них варить апи.

Я не против твоего подхода. Просто каждый по своему варит свой бэкенд.
09:41:43 ДП
User 56456060
Prisma хороша на старте, очень быстро и много что сделает за вас. И когда вырастите, смело переедите на свое решение, когда потребуется много чего женить на бэкенде.
09:43:04 ДП
User 213453025
Призма это просто орм
09:43:40 ДП
User 213453025
Тебе или нужна орм, или нет
09:43:53 ДП
User 213453025
Свою писать это такое
09:44:50 ДП
User 213453025
Вопрос только в том устраивает ли тебя качество этой орм
09:44:52 ДП
User 144022504
User 56456060
Prisma хороша на старте, очень быстро и много что сделает за вас. И когда вырастите, смело переедите на свое решение, когда потребуется много чего женить на бэкенде.
Если я буду следовать этой логике, то мне пора счеты вместо калькулятора юзать)
Так и не увидил пруфы, почему на больших проектах неподходит Prisma
09:45:59 ДП
User 99248986
User 144022504
Если я буду следовать этой логике, то мне пора счеты вместо калькулятора юзать)
Так и не увидил пруфы, почему на больших проектах неподходит Prisma
ох, этот человек все про свою телегу с призмой
09:46:28 ДП
User 213453025
Вообще профит призмы вижу только в том что можно шарить типы в схемах бд и апи
09:46:54 ДП
User 213453025
Это прикольно
09:46:55 ДП
User 144022504
User 99248986
ох, этот человек все про свою телегу с призмой
09:47:58 ДП
User 213453025
То что ты базой работаешь через графкл уже на любителя
09:48:01 ДП
User 99248986
User 213453025
Вообще профит призмы вижу только в том что можно шарить типы в схемах бд и апи
если же куча тулз для этого уже
09:48:46 ДП
User 213453025
User 99248986
если же куча тулз для этого уже
Например?
09:50:00 ДП
User 99248986
https://www.graphile.org/postgraphile/usage-schema/
graphile.org/postgraphile/usage-schema
Utilities to build powerful and performant GraphQL APIs
09:50:22 ДП
User 99248986
либы @nodkz для монги
09:51:26 ДП
User 99248986
монгуза точнее, если речь про схему
09:51:50 ДП
User 144022504
User 99248986
либы @nodkz для монги
сидел я на ней, много рутиной однотипной работы и с подписками сложности
09:53:34 ДП
User 213453025
User 99248986
https://www.graphile.org/postgraphile/usage-schema/
graphile.org/postgraphile/usage-schema
Utilities to build powerful and performant GraphQL APIs
И как там энум зашарить в бд и апи?
09:53:52 ДП
User 99248986
User 213453025
И как там энум зашарить в бд и апи?
оно схему генерит
09:54:00 ДП
User 213453025
Ну вот
09:54:04 ДП
User 213453025
Это не то
09:54:43 ДП
User 213453025
Там прикол что ты тот же энум раз написал и он у тебя где хочешь юзается
09:55:04 ДП
User 296063066
User 144022504
у нее под капотом все перечисленые продукты(технологии, сервисы)
Это не под капотом, это независимые продукты
09:55:08 ДП
User 213453025
Хоть в бд хоть в типе апи
09:55:52 ДП
User 99248986
ну так неважно, главное что есть single source of truth, в данном случае схема постгреси
09:55:56 ДП
User 144022504
User 296063066
Это не под капотом, это независимые продукты
… на которых работает Prisma
09:56:35 ДП
User 99248986
User 144022504
… на которых работает Prisma
ну вот можно и юзать их, без ненужного поднятого сервера
09:57:10 ДП
User 119235888
User 99248986
ох, этот человек все про свою телегу с призмой
о! ты всё ещё здесь. так в чем плоха призма то в итоге,
09:57:54 ДП
User 296063066
User 144022504
… на которых работает Prisma
Prisma работает независимо от Yoga, от graphql-bindings и прочих опен сорс продуктов. Но их можно использовать совместно
09:57:59 ДП
User 144022504
User 99248986
ну вот можно и юзать их, без ненужного поднятого сервера
можно, но через cli удобней
10:00:04 ДП
User 144022504
User 296063066
Prisma работает независимо от Yoga, от graphql-bindings и прочих опен сорс продуктов. Но их можно использовать совместно
В том то и профит Призмы, что у нее моножестов сторон и граней)))
10:00:51 ДП
User 213453025
User 99248986
ну так неважно, главное что есть single source of truth, в данном случае схема постгреси
Ну это очень негибкий подход и будут случаи когда ты будешь руками все синхронизировать
10:01:18 ДП
User 213453025
В публичном апи и этой штуковине
10:03:20 ДП
User 77452088
User 56456060
Да, уйдет за рамки. По производительности все меняется, сегодня тормозит, а завтра уже починят. Последний косяк с год назад находили в аполло. Сейчас вроде все тихо.

Если клиент делает 10 запросов в секунду и обновляет 50 компонентов, то точно будет все ок. А вот если 1 запрос и передергивает 100к компонентов, то у вас точно проблемы возникнут. Вобщем все очень специфично, и сильно зависит от приложения.
100к нет, у меня проблемы возникли уже на 500
10:03:30 ДП
User 77452088
серьезные, фпс упал до 0.5
10:04:30 ДП
User 77452088
аналогично с кэшем, когда один запрос >2000 совершался если кэш включен то все начинало работать медленнее в несколько раз, так как аполло внутри себя совершал какой-то поиск по кэшу
10:14:21 ДП
User 56456060
User 77452088
аналогично с кэшем, когда один запрос >2000 совершался если кэш включен то все начинало работать медленнее в несколько раз, так как аполло внутри себя совершал какой-то поиск по кэшу
Тут только поможет "chrome devtools performance" (для гугления туториалов) чтоб реально найти проблему. Может что внутри аполлы тормозит, а вот может и когда аполло передергивает компоненты реакта с новыми данными и начинает тормозить ваш код.
10:14:36 ДП
User 77452088
я уже смотрел, внутри аполло
10:16:13 ДП
User 77452088
поэтому лучший способ это прокидывать свойства вниз по иерархии реакта вручную а графкл подключать к крупным частям только
10:16:31 ДП
User 77452088
ну и кэш отключать для некоторых запросов
10:16:50 ДП
User 77452088
непонятно почему только так происходит и можно ли это исправить
10:19:25 ДП
User 213453025
Вообще конечно хорошо, что на бекенде все больше вариков как время сэкономить. Не пойму только почему на клиенте так тухло.  Я например считаю, что было бы неплохо соптимизировать и не описывать поля в квери руками на клиенте. Вообще не писать графкл на клинте, а генерить при билде. Все так привыкли что даже не пытаются что-то поменять.
10:22:22 ДП
User 213453025
Менять код и лезть в квери каждый раз, кажется лишней работой, где можно что-то улучшить
10:24:22 ДП
User 77452088
просто лень взять и написать на условном питоне скрипт который бы генерил query и mutations
10:24:36 ДП
User 77452088
а потом еще оформлять это в виде npm пакета
10:25:32 ДП
User 213453025
есть как минимум бабель, который уже многие юзают
10:27:18 ДП
User 99248986
User 213453025
Ну это очень негибкий подход и будут случаи когда ты будешь руками все синхронизировать
камон, все автоматизируется легко
10:28:37 ДП
User 213453025
User 99248986
камон, все автоматизируется легко
что именно?
10:28:54 ДП
User 99248986
User 213453025
что именно?
переиспользование типов
10:35:22 ДП
User 213453025
User 99248986
переиспользование типов
каким образом? забирать из аст сгенерированной схемы?
11:32:49 ДП
User 99248986
User 213453025
каким образом? забирать из аст сгенерированной схемы?
Мы кажется про разное
04:47:46 ПП
User 224769697
кто то уже пробовал с графом этот сервис пользовать?
https://github.com/keratin/authn-server
там недавно подвезли интеграции с соц сетями, думаю теперь с в новых проектах не Auth0 пользовать а эту штуку
кто то может меня отговорить или наоборот?) или посоветовать чего?)
github.com/keratin/authn-server
Authentication service that keeps you in control without forcing you to be an expert in web security. - keratin/authn-server