Сегодня суббота, а значит пора надевать шляпу мейтейнера bitrix24-php-sdk
Сегодня больше про мои ожидания к продукту который *SDK:
- хороший DX (Developer Experience), если вы считаете себя девелопером, то критикуйте ветку 2.x
- хорошая документация - надо писать, да, с примерами
- производительность: влияние на клиентский код должно быть минимальным, а продукт должен предоставлять возможность ворочать большими объёмами данных, иначе зачем нам эта машинерия вся
- работать на современном стеке технологий. Все мы не любим копаться в копролитах, поэтому стараемся использовать новые подходы и фичи языка, современные низкоуровневые библиотеки для сетевого взаимодействия.
- надёжной - тесты, тесты, разные сценарии использования в комьюнити и обратная связь.
Сейчас я делаю подсистему для удобной работы с batch-запросами, дальше все рассуждения и бенчмарки буду уже в канал в телеграм складывать.
(вы находитесь тут)
Домен для пользовательской документации по sdk тоже планирую зарегить.
Сегодня больше про мои ожидания к продукту который *SDK:
- хороший DX (Developer Experience), если вы считаете себя девелопером, то критикуйте ветку 2.x
- хорошая документация - надо писать, да, с примерами
- производительность: влияние на клиентский код должно быть минимальным, а продукт должен предоставлять возможность ворочать большими объёмами данных, иначе зачем нам эта машинерия вся
- работать на современном стеке технологий. Все мы не любим копаться в копролитах, поэтому стараемся использовать новые подходы и фичи языка, современные низкоуровневые библиотеки для сетевого взаимодействия.
- надёжной - тесты, тесты, разные сценарии использования в комьюнити и обратная связь.
Сейчас я делаю подсистему для удобной работы с batch-запросами, дальше все рассуждения и бенчмарки буду уже в канал в телеграм складывать.
(вы находитесь тут)
Домен для пользовательской документации по sdk тоже планирую зарегить.
В рамках работы с batch-запросами в документацию добавлена страница с замерами времени работы в зависимости от:
— сортировка, подсчёт количества элементов в выборке;
— сортировка, без подсчёта количества элементов в выборке;
— сортировка по умолчанию, подсчёт количества элементов в выборке;
— сортировка по умолчанию, без подсчёта количества элементов в выборке;
Тесты проводились на портале где было создано 100к контактов.
TL;DR;
1. По возможности старайтесь избегать выборки всех данных по сущности.
2. Сортировка данных при больших выборках тоже слишком дорогая операция
3. В roadmap SDK будет добавлена задача на поддержку batch-запросов в режиме «отключенный подсчёт количества» элементов, сейчас там указано not implemented.
Вся статья → https://amp.gs/oei3
— сортировка, подсчёт количества элементов в выборке;
— сортировка, без подсчёта количества элементов в выборке;
— сортировка по умолчанию, подсчёт количества элементов в выборке;
— сортировка по умолчанию, без подсчёта количества элементов в выборке;
Тесты проводились на портале где было создано 100к контактов.
TL;DR;
1. По возможности старайтесь избегать выборки всех данных по сущности.
2. Сортировка данных при больших выборках тоже слишком дорогая операция
3. В roadmap SDK будет добавлена задача на поддержку batch-запросов в режиме «отключенный подсчёт количества» элементов, сейчас там указано not implemented.
Вся статья → https://amp.gs/oei3
👍1
Была очередная суббота, я немного покомитил в #BITRIX24PHPSDK
что нового с 14 декабря:
— я заболел ковидом, повалялся в больнице и выписался с 30% поражением лёгких, сейчас потихоньку восстанавливаюсь;
— до болезни получилось обстоятельно поговорить с Валентин Удальцов (https://t.iss.one/vudaltsov/) по поводу подходов к проектированию новой версии SDK, рекомендую. Пожалуй, лучшая трата 6к рублей за консультацию.
— изменений в само SDK приехало много, как и обещал я стараюсь во второй версии гораздо больше внимания уделять DX — developer experience. Описание изменений в самой доке тут https://amp.gs/MRII
Кратко:
— результаты API-вызовов иммутабельные и полностью аннотированные в формате phpstan
— все API-методы аннотированны и предоставляют автокомплит (нарежу видосы и гифки в ближайшх субботних подходах).
— результаты CRUD-операций стали типизированы и получили свой синтаксический сахар
— т.к. #Bitrix24 порой в ответах заставляет меня удивляться, то в папка tests теперь содержит и интеграционные тесты. Да, подпихни свой вебхух и смотри, как отвечает конкретный портал.
— батч-запросы тоже унифицирую по сервисам и типизирую, они стали ещё лаконичнее
Ближайший чекпоинт — это полное покрытие сервисами для scope CRM, на нём соберу большую часть граблей, дальше будет уже механическая работа по добавлению остальных 38(?) скоупов.
https://amp.gs/MRIT — вторая версия про которую идёт речь
что нового с 14 декабря:
— я заболел ковидом, повалялся в больнице и выписался с 30% поражением лёгких, сейчас потихоньку восстанавливаюсь;
— до болезни получилось обстоятельно поговорить с Валентин Удальцов (https://t.iss.one/vudaltsov/) по поводу подходов к проектированию новой версии SDK, рекомендую. Пожалуй, лучшая трата 6к рублей за консультацию.
— изменений в само SDK приехало много, как и обещал я стараюсь во второй версии гораздо больше внимания уделять DX — developer experience. Описание изменений в самой доке тут https://amp.gs/MRII
Кратко:
— результаты API-вызовов иммутабельные и полностью аннотированные в формате phpstan
— все API-методы аннотированны и предоставляют автокомплит (нарежу видосы и гифки в ближайшх субботних подходах).
— результаты CRUD-операций стали типизированы и получили свой синтаксический сахар
— т.к. #Bitrix24 порой в ответах заставляет меня удивляться, то в папка tests теперь содержит и интеграционные тесты. Да, подпихни свой вебхух и смотри, как отвечает конкретный портал.
— батч-запросы тоже унифицирую по сервисам и типизирую, они стали ещё лаконичнее
Ближайший чекпоинт — это полное покрытие сервисами для scope CRM, на нём соберу большую часть граблей, дальше будет уже механическая работа по добавлению остальных 38(?) скоупов.
https://amp.gs/MRIT — вторая версия про которую идёт речь
Telegram
Валентин Удальцов
Автор канала Пых @phpyh. Делаю Пых.конф — новую PHP конференцию для всех 19 сентября в Конгресс-центре ЦМТ!
#bitrix24phpsdk новости от 30.01.2021
Ветка 2.0 приводится в порядок, стал писать осмысленный чейнджлог:
https://github.com/mesilov/bitrix24-php-sdk/tree/2.x
Следующая точка приложения усилий — документация для разработчиков, сейчас вроде всё очевидно, но вопросы в личных сообщениях намекают, что документацию нужно писать)
Ветка 2.0 приводится в порядок, стал писать осмысленный чейнджлог:
https://github.com/mesilov/bitrix24-php-sdk/tree/2.x
remove Travis CI and migrate to Github Actions
add unit-tests in independent GitHub action
add phpstan checks in independent GitHub action
add in scope «CRM» Contacts service and integration test
add in scope «CRM» Contacts batch service and integration test
add in scope «CRM» Products service and integration test
add in scope «CRM» Settings service and integration test
add in scope «CRM» DealCategoryStage service and integration test
add in scope «CRM» DealProductRows service and integration test
add in scope «CRM» DealContact service and integration test
add in scope «IM» IM service and integration test
add in default scope «Main» default service
Следующая точка приложения усилий — документация для разработчиков, сейчас вроде всё очевидно, но вопросы в личных сообщениях намекают, что документацию нужно писать)
GitHub
GitHub - mesilov/bitrix24-php-sdk at 2.x
A powerful PHP library for the Bitrix24 REST API. Contribute to mesilov/bitrix24-php-sdk development by creating an account on GitHub.
Привет, я снова выхожу на связь (*・ω・)ノ
Две новости:
1. Текущая кодовая база в ветке 0.x замораживается и будет жить в ветке релизов 1.x, возможностей поддерживать её у меня нет, если нужно — открывайте MR. В своих проектах можно зафиксировать тег 1.0.0 и у вас уже ничего не изменится.
2. 💥 В мастер будет влита текущая ветка 2.x с полной потерей обратной совместимости. Релизы по ней будут идти с альфа префиксами.
Если у вас старый проект, то можно жить на ветке 1.x и планировать миграцию на 2.x, гайд по миграции я положу в документацию.
Новые проекты лучше сразу стартовать на 2.x 🙂
Две новости:
1. Текущая кодовая база в ветке 0.x замораживается и будет жить в ветке релизов 1.x, возможностей поддерживать её у меня нет, если нужно — открывайте MR. В своих проектах можно зафиксировать тег 1.0.0 и у вас уже ничего не изменится.
2. 💥 В мастер будет влита текущая ветка 2.x с полной потерей обратной совместимости. Релизы по ней будут идти с альфа префиксами.
Если у вас старый проект, то можно жить на ветке 1.x и планировать миграцию на 2.x, гайд по миграции я положу в документацию.
Новые проекты лучше сразу стартовать на 2.x 🙂
Привет, у нас сборка
Добавили
— метод
— для скоупа «CRM» добавлен сервис по работе с пользовательскими полями сущности
— для скоупа «CRM» добавлен сервис по работе с пользовательскими полями сущности
— для объекта
— для объекта
Удалили
— старый код, который относился к кодовой базе веток 0.x и 1.x
Изменения
Мы начинаем двигаться 🐌 в сторону более строгой типизации возвращаемых результатов.
—
—
— добавлены интеграционные тесты на все поддерживаемые на текущий момент сервисы, для их запуска почитайте доку и подставьте входящий вебхук от тестового портала.
— в сборку релиза добавлены шаги запуска интеграционных тестов и статического анализа силами phpstan, пусть работают роботы.
Из-за объёма кодовой базы работа предстоит большая, поэтому в каждом релизе будем постепенно добавлтяь новые объекты типа
https://amp.gs/jYskW
2.0-alpha.5
и 300 ⭐ 🍾 на GitHubДобавили
— метод
countByFilter
подсчёт количества элементов по фильтру.— для скоупа «CRM» добавлен сервис по работе с пользовательскими полями сущности
Deal
и интеграционные тесты.— для скоупа «CRM» добавлен сервис по работе с пользовательскими полями сущности
Contact
и интеграционные тесты.— для объекта
ContactItemResult
добавлен метод getUserfieldByFieldName
. — для объекта
DealItemResult
добавлен метод getUserfieldByFieldName
. Удалили
— старый код, который относился к кодовой базе веток 0.x и 1.x
Изменения
Мы начинаем двигаться 🐌 в сторону более строгой типизации возвращаемых результатов.
—
ContactItemResult
теперь возвращает ожидаемые типы данных: DateTimeInterface, int, boolean и т.д.—
DealItemResult
теперь возвращает ожидаемые типы данных: DateTimeInterface, int, boolean и т.д.— добавлены интеграционные тесты на все поддерживаемые на текущий момент сервисы, для их запуска почитайте доку и подставьте входящий вебхук от тестового портала.
— в сборку релиза добавлены шаги запуска интеграционных тестов и статического анализа силами phpstan, пусть работают роботы.
Из-за объёма кодовой базы работа предстоит большая, поэтому в каждом релизе будем постепенно добавлтяь новые объекты типа
*Result
https://amp.gs/jYskW
🚀 Новый релиз bitrix24-php-sdk 2.0-alpha.6
Добавлено
— интеграционные тесты запускаются в GitHub Actions pipeline 🎉, пока для ветки
— для разработчиков REST-API Битрикс24 сделана ручка
— в batch добавлен метод
— в
— в
— добавлен сервис
— добавлен интегрфейc
— для скоупа «CRM» добавлен метод пакетного удаления сделок
— добавлен
Изменено
— компоненты Symfony обновлены до 5.4
— psr/log ожидается версий от 1 до 3.
Полный список изменений
Добавлено
— интеграционные тесты запускаются в GitHub Actions pipeline 🎉, пока для ветки
dev
.— для разработчиков REST-API Битрикс24 сделана ручка
vendor-check.yml
которая позволяет запускать интеграционные тесты после релиза новой версии на тестовый NFR-портал. Так будут проверять, что при релизе новой версии Битрикс24 соблюдается контракт на API.— в batch добавлен метод
getTraversableList
который по умолчанию не использует подсчёт количества элементов, на больших объёмах данных получили x2 прироста к скорости выборки данных и довольного модератора в маркетплейсе, т.к. снизится нагрузка на порталы.— в
CoreBuilder
добавили Credentials.— в
Batch::deleteEntityItems
добавлен метод для пакетного удаления элементов.— добавлен сервис
BulkItemsReader
который содержит в себе стратегии получения данных для приложений заточенных на экспорт данных. Сейчас там только «наивная» стратегия использующая батч-запросы без подсчёта количества элементов, есть большой задел по оптимизации скорости выборки данных за счёт мультиплексирования запросов.— добавлен интегрфейc
Core\Contracts\DeletedItemResultInterface
c результатом удалёния сущности.— для скоупа «CRM» добавлен метод пакетного удаления сделок
Services\CRM\Deal\Service\Batch:delete batch delete deals
.— добавлен
NetworkTimingsParser
для разбора и проброса структур данных curl_info в логи для отладки.Изменено
— компоненты Symfony обновлены до 5.4
— psr/log ожидается версий от 1 до 3.
Полный список изменений
👍1
https://github.com/mesilov/bitrix24-php-sdk/issues/273 – список задач на следующую сборку, если есть дополнительные требования или уточнения, то пишите сразу в нужную задачу.
GitHub
собрать релиз bitrix24-php-sdk v2.0-alpha.7 · Issue #273 · mesilov/bitrix24-php-sdk
Разработка ✅ унификация batch-операций #268 ✅ #280 ✅ #282 ✅ #283 ✅ #285 ✅ #274 ✅ #275 ✅ #292 #292 ✅ fix bug UnknownScopeCodeException - in refresh token response #295 ✅ add application level events...
У Битрикс24 наблюдаются проблемы в работе rest-api, ребята в курсе проблемы и занимаются её решением.
Если у вас в sdk включены логи, то проверьте дисковое пространство и успокойте клиентов.
Для критически важных интеграций после восстановления работы не забудьте пропихнуть данные, если алгоритм обмена не имеет встроенной защиты от подобных ситуаций.
Если у вас в sdk включены логи, то проверьте дисковое пространство и успокойте клиентов.
Для критически важных интеграций после восстановления работы не забудьте пропихнуть данные, если алгоритм обмена не имеет встроенной защиты от подобных ситуаций.