PHP подкаст #12

JIT в PHP8, JWT для SSO, кривые оптимизации Zend VM, рамбл ток о фрилансе.

Скачать mp3 (33Мб)

Еще немного про производительность интерпретатора PHP.  Уже гоняют бэнчмарки на экспериментальной ветке https://github.com/zendtech/php-src. 7ая версия стала прорывом в нескольких смыслах. 7.1 несколько быстрее 7 за счет оптимизации opcache расширения. А JIT/PHP8 потенциально еще удвоит производительность интерпретатора. Лучше один раз увидеть результаты бэнчмарка. Надеюсь, что в PHP8 добавят pthread как core extension.

На недавней Symfony-конфереции Фабьен Потенсье анонсировал грядущий выход нового продукта Symfony Flex. Что-то вроде “Make Symfony Great Again”. На реддите есть коротенький тред, в котором один из участников объяснил свое понимание Flex: обертка вокруг composer, упрощающая менеджмент бандлов/зависимостей. Посмотрим, что за зверь. Обещают релиз на начало 2017, т.е. ждать осталось недолго.

Только вышла Symfony 3.2, но это не означает, что цикл разработки фреймворка остановился и в 3.3 — выйдет в конце мая 2017 — в Security компонент добавлена JSON-аутентификация. Вместо привычной формы с логином и паролем мы должны отправить POST-запрос на определенный конфигом endpoint с JSON’ом на борту. В этом JSON должна быть указана пара login/password. Это нововведение упростит реализацию JWT-решений и может пригодиться для SSO. В ответ на такой JSON может прийти JWT, передаваемый серверу при каждом реквесте в заголовке.

Выложили два видео с прошедшего митапа комьюнити ThinkPHP. Тарас Омельяненко выступил с докладом по их подходам к разработке большого приложения на PHP. В большей степени доклад посвящен циклу разработки и сопутствующим ему инструментам: Swagger, git (flow), Jenkins CI, Docker, Ansible, балансировка нагрузки и т.д. Одна мысль показалась наиболее ценной — предложить клиенту комплексное решение, в котором уже есть все от документации и спецификаций API до CI. На первых порах это может быть реализовано просто, но вы задаете тон последующей разработке. С определенного момента по другому уже делать продукт не получается. Читать далее PHP подкаст #12

PHP подкаст #2

Важное замечание! В подкасте я сказал, что EventDispatcher компонент реализует Oberserver паттерн. Это не так. EventDispatcher компонент реализует Mediator паттерн.

План выпуска:

СКАЧАТЬ mp3 (44Мб)

Павел Савельев из Lamoda об опыте внедрения Silex/Symfony

Прелюдия о размере компании. 3500+ сотрудников и 7 этажей в здании. Что-то вроде этого. ZF2 + Silex для менеджмента тикетов и работы call-центра. Другой компонент также на ZF2 + Silex позволяет организовать эффективную доставку. Студия на ZF2. Doctrine и Monolog были отмечены в стеке. Холивар Angular vs React.

Ильяс Салихов из RetailCRM о построение SaaS-сервисов

Ильяс рассказал о достаточно частных проблемах и решениях. Больше про БД и DevOps как мне показалось.

Разбили клиентов по базам и по DIC и получили с ростом клиентской базы рост контейнеров, каждый из которых нужно создавать при разогреве кеша.

Было решено сделать один контейнер с динамическими параметрами, т.е. добавить возможность в конструктор контейнера передавать аргументы. Было рассказано как собирается сам контейнер.

Вторая проблема, с которой они столкнулись: шардинг и распределение баз по серверам.

Был упомянут pgbouncer — это прокси к PostgreSQL, которых “держит” соединение. Ильяс упомнянул, что время запросов сократилось в 2-10 раз.

В результате стали упираться в максимальное количество одновременных соединений (max connection) и решили разбить базы по схемам. Не лучший подход, т.к. планировщик выполнения запроса анализирует в PostgreSQL все таблицы всех схем. Решили на одном сервере запускать несколько БД, с ограниченным количеством схем.

Долго происходят миграции, поэтому доработали механизм деплоя.

Не хватило в обзоре архитектурной картинки и стека.

Алексей Медведев из Alpari: Symfony Workflow компонент

Я уже успел попользоваться этим компонентом и вполне им доволен. Что такое Workflow и что такое система управления Workflow? Были упомянуты сети Петри — двудольный ориентированный мультиграф. Вершины, ребра, токены. Workflow-сеть — частный случай сети Петри. В Symfony Workflow вы можете с помощью YAML сконфигурировать граф. Я это делал в своей небольшой задаче вручную. Состояние субъекта определяется сущностью, т.е. значениями аттрибутов этой сущности.

Алексей рассказал об особенностях их WorkflowExtensionsBundle. Особенности: шедулинг (отложенное выполнение transition’a), блокировка переходов с помощью ExpressionLanguage.

Шедулинг реализуется https://github.com/schmittjoh/JMSJobQueueBundle.

Руслан Ханов из Яндекса о Symfony как о микрофреймворке.

Symfony используется в Яндексе. В яндекс доставке. Не знал до этого о существовании такого сервиса. Исторический обзор того как жили при symfony1. Насколько я помню, что название фреймворка писалось с маленькой буквы. Руслан концептуально сравнил микро и макро фреймворки. MicroKernel не нужен!

Марко Пиветта (Ocramius) о проектах с большим горизонтом существования

Замечательный доклад. Марко работает в консалтинговой компании и знает о чем говорит :). Доклад может быть особо полезен для тех, кто пишет публичный код. Абстрактный и о лучших практиках проектирования софта.

Defencive coding по аналогии с defencive driving, т.е. вождением, когда вы допускаете, что другие участники дорожного движения также могут ошибаться. Нужно писать софт так, чтобы те, кто ошибаются понимали в чем их ошибка и делать софт работоспособным даже при условии ошибок пользователя. Читать далее PHP подкаст #2