В этой репке мои статьи и презентации про GraphQL
PS. Куча орфографических и грамматических ошибок — это норма для меня. Я вас предупредил, так что крепитесь. Но вы можете помочь исправить ошибку – нажмите кнопочку "Редактировать" и отправьте Пулл Реквест с правками. Спасибо.
Статьи
GraphQL
- GraphQL-типы
- GraphQL-схема
- Способы построения GraphQL-схем
- GraphQL-сервер
- Аутентификация и Авторизация
- Работа с файлами
- i18n — интернационализация в GraphQL
- Как работать с ошибками в GraphQL?
- DataLoader - правильно решаем проблему N+1 запросов
- PRO: Дизайн GraphQL-схем — делаем АПИ удобным, избегаем боль и страдания 🌶🌶🌶
- GraphQL на фронтенде
- Почему в graphql есть проблема с N+1
- Что такое Node Interface?
Другое
- GraphQL or No-GraphQL [EN] – хорошая статья про плюсы и минусы GraphQL
- Swagger — прошлый век
- Redux - бойлерплейт
- Разница в подходах
graphql-compose
иPrisma
Предстоящие выступления (в планах)
- 18 апреля 2022, Online, HolyJS
Прошедшие мероприятия
- 2 ноября 2021, Online, HolyJS
- 25 сентября 2021, Online, 404fest
- 12 июля 2021, Online, Podlodka Frontend Crew, сезон #2
- 20-23 апреля 2021, Online, HolyJS
- 4 апреля 2021, Online, Podlodka Backend Crew, сезон #1
- 25-28 ноября 2020, Online, HolyJS
- 24 июня 2020, Санкт-Петербург, HolyJS онлайн
- 19 мая 2020, Онлайн, Тяжелое утро с HolyJS #2
- 29 февраля 2020, Москва, Я❤️Фронтенд
- 7 декабря 2019, Краснодар, GDG Krasnodar DevFest 2019
- 8-9 ноября 2019, Москва, HolyJS
- 5-6 октября 2019, Харьков, KharkivJS
- 24 августа, Санкт-Петербург, TechTrain
- 29 июня 2019, Алматы, AlmatyJS
- 15 июня 2019, Нур-Султан, AstanaJS
- 28 мая 2019, Москва, Сколково, BackendConf (РИТ++)
- 27 мая 2019, Москва, Сколково, FrontendConf (РИТ++)
- 24 мая 2019, Санкт-Петербург, HolyJS
- 12 мая 2019, Киев, Запись стрима на YouTube: Рассвет GraphQL, Zlit Tech, InLight Studio
- 11 мая 2019, Киев, Workshop Apollo-client с фрагментами и статическим анализом, Wix Office (фото
- 23 марта 2019, Минск, воркшоп в ивент-пространстве SPACE (фото, repo)
- 16 февраля 2019, Нижний Новгород, GraphQL митап с Mera.ru
- 26 января 2019, Санкт-Петербург, GraphQL workshop – сервер, клиент и статические анализ (repo)
- 24 января 2019, Санкт-Петербург, GraphQL митап в Wrike
- 27 ноября 2018, Москва, Moscow GraphQL Meetup
- 24 ноября 2018, Москва, HolyJS 2018
Видео моих выступлений
В каких проектах стоит использовать GraphQL, а в каких нет?, 12 июля 2021, Podlodka Frontend Crew, сезон #2
GraphQL это инструмент, а не серебряная пуля. И каждый инструмент удобен под свою категорию задач.
GraphQL нужен, если:
- модели постоянно развиваются и количество полей растет;
- есть взаимодействие между бэкендом и фронтендом, у которого предполагается стейт-менеджер;
- нужна статическая типизация на фронтенде согласно серверной схеме данных;
- если много разных entity (models), между ними много связей и клиенту нужны их агрегации (а-ля LEFT JOIN) и желательно за один http-запрос.
GraphQL не нужен, если:
- ведется работа с файлами или другими бинарными данными;
- аутентификация, oidc и/или oauth2;
- CRDT и многопользовательское редактирование;
- есть активное межсерверное взаимодействие, требовательное к скорости, памяти и/или трафику.
Продолжительность 92 минуты.
Круглый стол: Особенности протоколов, 4 апреля 2021, Podlodka Backend Crew, сезон #1
Обсуждаем применимость протоколов JSON-RPC, GraphQL, gRPC. Их сильные и слабые стороны.
Продолжительность 87 минут.
Революция в микрофронтендах, module federation, Webpack 5, HolyJS 2020, Online
Рассказываю про module federation в Webpack 5, про новую технологию для индустрии микрофронтендов. Она позволяет заимпортировать в свое приложение любой внешний модуль/компонент из где-то на другом сервере задеплоенного отдельно собранного webpack'ом приложения. Простыми словами для бизнеса – разные команды разрабатывают куски приложений и их деплоят по отдельности, а конечная сборка приложения происходит в браузере пользователя. Ссылка на презентацию.
Продолжительность 73 минуты.
Оборачиваем существующее REST API в GraphQL (методология за 1000000 рублей), HolyJS 2020, Online
А реально обернуть REST API в GraphQL? И как сделать R&D для этой технологии? Обычно обкатку технологии принято делать на TodoMVC – я так и поступил. Разобрал в докладе Entity, реляций между типами (провел аналогию с LEFT JOIN), решил проблемы N+1, QueryCost и Аутентификации. И посчитал, сколько времени уйдет на разработку такой GraphQL-прокси. Ссылка на презентацию.
Продолжительность 74 минуты.
ApolloClient 3 — прощаемся с Redux, REST API и Relay (Я 💛 Фронтенд 2020, Moscow 2020)
В докладе речь идет о текущих болячках REST API и Redux; как с GraphQL совершенно на новый уровень поднимается Developer Experience у разработчиков; что нового и хорошего появилось в ApolloClient 3. Ссылка на презентацию.
Продолжительность 49 минут.
GraphQL и как его боготворит академическая среда (HolyJS Moscow 2019)
в академической среде стали появляться «серые» научные работы, которые уж больно круто описывают возможности GraphQL: "We'll show that GraphQL can reduce the size of the JSON documents returned by REST APIs in 94% (in number of fields) and in 99% (in number of bytes), both median results". GraphQL конечно хорош, но не настолько. Ссылка на презентацию.
Продолжительность 11 минут.
GraphQL-фрагменты на клиенте: История появления, ошибки использования (HolyJS Moscow 2019)
В докладе будут разобраны следующие подходы: JSON Models (тяжелый ручной труд), Type Models (похоже на генерацию моделей из Swagger), Response Models (подход ApolloClient), Fragment Models (подход Relay). Спикер также поделится частыми ошибками фронтендеров, которые совершаются при работе с GraphQL-фрагментами. Ссылка на презентацию. Feedback (chart, отзывы).
Продолжительность 60 минут.
GraphQL: фрагментная модель на клиенте (KharkivJSx10)
В языке GraphQL запросов присутствуют фрагменты, но далеко не все понимают зачем именно они нужны. Фейсбук работает с GraphQL на клиентах с так называемой фрагментной моделью, которая помогает масштабироваться и предотвращать ошибки ещё на этапе разработки. Что это за зверь, будем разбираться вместе. Ссылка на презентацию.
Продолжительность 57 минут.
Формируем картину GraphQL-мира (TechTrain 2019)
Доклад нацелен на новичков и скептиков, как бэкендеров, так и фронтендеров. Описываю и показываю, что такое GraphQL простыми словами. Рассказываю из каких частей состоит GraphQL-сервер. За что он отвечает, а что придется реализовывать бэкендеру самостоятельно. Показываю несколько способов как можно запросить данные с GraphQL-сервера. Рассказываю зачем нужны навёрнутые GraphQL-клиенты. Как они позволяют без ошибок формировать GraphQL-запросы на этапе разработки. Как позволяют слать запросы на сервер, кешировать ответы и работать с данными. Ссылка на презентацию.
Продолжительность 45 минут.
Дизайн GraphQL-схем — строим схемы правильно (версия 2) (Backend Conf 2019, РИТ++)
GraphQL-схема может обернуться головой болью и кучей дополнительного кода для разработчиков. Поэтому, чем удобнее схема, тем быстрее, легче и с меньшим количеством ошибок будут разработаны ваши клиентские приложения. Данные правила позволяют выработать конвенцию для ваших бэкенд разработчиков. Ссылка на презентацию.
Продолжительность 49 минут.
ApolloClient или Relay с фрагментами, «волосатый» GraphQL (HolyJS Piter 2019)
Сравниваю архитектуру ApolloClient и Relay. Разбираю фрагментный подход, при котором запросы собираются снизу вверх. Объясняю что хороший GraphQL – это «волосатый» GraphQL у которого много связей. А если мало связей, то это уже RestQL и с ним практически невозможно использовать фрагментный подход. Ссылка на презентацию.
Фидбэк по выступлению: chart, отзывы.
Продолжительность 58 минут.
5 подходов построения GraphQL-схем (Kyiv 2019, Zlit Tech)
Разберем, что такое GraphQL-сервер и из каких частей он состоит. Подробно остановимся на описании GraphQL-схемы. Рассмотрим 5 подходов построения схем с помощью: graphql, graphql-tools, graphql-compose, type-graphql, nexus. Сравним подходы между собой, поймем сильные и слабые стороны каждого из них. Cтатья и код позволяют выработать конвенцию для ваших бэкенд разработчиков. Ссылка на презентацию.
Продолжительность 49 минут.
Дизайн и паттерны проектирования GraphQL-схем (Piter GraphQL Meetup 2019, Wrike)
Рассказываю о правилах которые необходимо использовать при построении GraphQL-схем. Объясняю ситуации в которых они позволяют избежать переделку схем в будущем. Данные правила позволяют выработать конвенцию для ваших бэкенд разработчиков. Ссылка на презентацию.
Продолжительность 52 минуты.
Строим GraphQL-сервер (HolyJS Moscow 2018)
Рассказываю о том из каких пакетов состоит GraphQL-сервер, какие способы построения схемы в NodeJS существуют в 2018 году. Детально разбираю как организовать Авторизации и как правильно использовать DataLoader (чтоб решить N+1 Problem). Доклад был хорошо оценен (chart, отзывы), т.к. в нем затронуты и раскрыты самые основные проблемы GraphQL. Ссылка на презентацию.
Как работать с ошибками в GraphQL (GraphQL Moscow Meetup at Rambler 2018)
Рассказываю подробно о том как в GraphQL работать с ошибками. И как можно накрутить Union-типы для того чтобы возвращать пользовательские ошибки. Видео начинается с 28 минуты.
Как работать с интернационализацией (i18n) в GraphQL (GraphQL Moscow Meetup at Rambler 2018)
Рассказываю о том как максимально удобно для фронтендеров прикрутить интернационализацию в вашем GraphQL апи. Доклад начинается с 1:59:00.
GraphQL — заключаем выгодный контракт между сервером и клиентом (HolyJS Moscow 2017)
Введение в GraphQL. Разбираем статический анализ с GraphQL на клиентской стороне, проблемы GraphQL.
React, Relay и GraphQL — вполне себе нормальный компонентный подход (FrontTalks, Yekaterinburg 2016)
Введение в GraphQL, в компонентный подход и Relay.
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки (FrontendFellows, Almaty 2016)
Мой самый первый доклад. Рекомендую пропустить первые 10 минут бла-бла-бла.
Переводы
GraphQL: The Documentary (Русская версия)
В рамках HolyJS 2019 Moscow участвовал в переводе фильма.
Ли Байрон, Дэн Шафер и Ник Шрок (создатели GraphQL) и другие известные участники сообщества #GraphQL, "GraphQL: The Documentary" рассказывает историю возникновения GraphQL, его влияния на всю индустрию веб-разработки и на таких технологических гигантов как Facebook, Twitter, Airbnb и Github.