Разработка аукциона на SlimPHP и ReactJS

Серия скринкастов по разработке интерактивного аукциона с API на микрофреймворке Slim PHP и фронтендом на ReactJS по практикам DDD и DevOps.

Рассмотрим всё от установки до деплоя с использованием Docker для каждой стадии процесса. С WebSocket-интерактивом и очередями на RabbitMQ. С проектированием удобной слабосвязанной доменной модели. С интеграцией сторонних сервисов и платёжных систем. С тюнингом PhpStorm для ускорения разработки. С написанием модульных, интеграционных и приёмочных тестов подходами Test First, TDD и BDD. С рассмотрением практик CI/CD с организацией пайплайнов тестирования и сборки на Jenkins, Gitlab-CI и подобных.

Free19:04
Постановка задачи по разработке будущего проекта и определение используемых подходов. Предполагаемая структура проекта.
Free16:19
Причины выбора микрофреймворка и его отличия от классических фреймворков. Почему мы используем Slim и React.
Free40:49
Чем является Docker и чем не является. Удобство использования Docker для локальной разработки и для продакшена.
Free1:05:31
Подъём девелоперской версии сайта с Docker. Построение сетевой структуры. Сборка образов для продакшена и первый деплой.
Free1:05:37
Автоматизация серверной инфраструктуры. Автоматическая установка Docker и Compose на виртуальную машину через Ansible. Подключение сертификатов Let's Encrypt.
Free1:15:14
Подготовка структуры директорий API. Добавление образа PHP-CLI. Установка Slim Framework. Ускорение установки в Composer.
21:12
Оптимизация Docker-образов для production через использование кеширования и мультистадийный билдинг.
44:17
Установка Xdebug в Docker-образы. Настройка отладки консольных скриптов. Подключение к PhpStorm для отладки веб-скриптов в PHP-FPM.
37:07
Проверка корректности кода с PHPLint. Валидация и корректировка стиля кода с CodeSniffer. Подключение статических анализаторов.
1:13:50
Установка и настройка PHPUnit. Написание Unit-тестов. Создание инфраструктуры функциональных тестов для API. Анализ тестового покрытия.
Free28:54
Моделирование по философии Domain Driven Design. Понятие доменной модели. Исследование предметной области и выделение ограниченных контекстов.
Free30:13
Анализ Use Cases взаимодействия с модулем аутетнификации. Выделение команд Command и запросов Query. Принцип CQS разделения операций.
Free1:01:29
Моделирование юзкейса запроса регистрации по email. Декомпозиция объектов. Абстрактные типы данных. Проработка сущностей и сервисов через Unit-тесты.
Free22:45
Добавление статуса ожидания и активности пользователя. Реализация команды подтверждения регистрации по токену из ссылки в электронном письме.
18:47
Реализация команды регистрации через социальные сети. Именованные конструкторы объектов. Привязка соцсети к текущему профилю.
27:42
Реализация двухшагового восстановления пароля с подтверждением операции по электронной почте. Защита от спама и возможной перегрузки сервера.
25:36
Реализация команды установки нового пароля с проверкой текущего. Инъекция сервисов в метод. Тестирование зависимых объектов. Стабы и моки.
14:23
Написание команды двухшаговой смены email-адреса в кабинете пользователя с подтверждением по ссылке с токеном в письме.
15:02
Добавление роли пользователя. Установка роли по умолчанию при регистрации и смена администратором. Команда удаления неактивного пользователя.
48:28
Подключение базы данных в Docker и конфигурирование через переменными окружения. Обзор Doctrine ORM. Установка и регистрация в DI контейнере.
Free1:07:27
Конфигурирование мэппинга сущностей и агрегатов на таблицы в БД. Создание собственных типов. Работа со вложенными объектами и коллекциями.
1:06:49
Написание и генерирование миграций для автоматизации создания и изменения структуры БД. Использование фикстур для автозаполнения таблиц демонстрационными данными.
52:37
Реализация отправки электронных писем по протоколу SMTP. Подключение эмулятора почтовика для локальной разработки. Подключение шаблонизатора для рендеринга HTML-писем.
57:17
Философия логирования процессов в Docker. Установка Monolog. Вывод логов для функциональных тестов. Подключение сервиса Sentry.IO для уведомлений об ошибках.
52:12
Написание контроллеров регистрации и их функциональное тестирование. Добавление локальных фикстур для тестовых сценариев. Проверка отправки электронных писем.
33:03
Использование посредников middleware для выноса повторяющегося инфраструктурного кода из контроллеров. Очистка ввода и централизованная обработка доменных исключений.
35:03
Добавление предварительной валидации данных команд для красивого отображения ошибок в формате JSON для отображения на фронтенде.
45:45
Добавление мультиязычности к API. Перевод сообщений валидации и доменных ошибок. Автораспознавание заголовка Accept-Language.
47:53
Создание проекта с ReactJS. Подключение и сборка пакетов через NodeJS. Запуск девелоперского сервера с автообновлением UI. Деплой фронтенда через Docker.
41:54
Тестирование JavaScript-кода. Интеграционное и юнит-тестирование компонентов. Проверка синтаксиса и стиля кода для JavaScript и CSS.
1:18:32
Написание E2E-тестов для проверки работы проекта из фронтенда и API. Тестирование интерфейса ReactJS-приложения в браузере в Docker-контейнере.
Free29:08
Философия Continuous Integration, Continuous Delivery и Continuous Deployment. Альтернативный подход разработки программных продуктов.
38:07
Создание персонального приватного реестра образов Docker Registry. Создание поддомена и виртуальной машины. Подключение сторонних хранилищ.
Free29:46
Система тестирования и деплоя со сборочным сервером. Продумывание шагов проверки кода и сборки образов для запуска в CI/CD Pipeline.
33:32
Подготовка проекта к работе в CI/CD Pipeline. Добавление окружения для тестирования рабочих Docker-образов. Создание файла подкачки в Ansible.
Free1:03:20
Установка Jenkins через Docker. Организация сети распределённой сборки. Подготовка виртуальных машин для менеджера и агентов через Ansible.
1:24:44
Построение CI/CD Pipeline для автоматизации тестирования и деплоя в Jenkins. Сбор артефактов и уведомления по электронной почте.
1:23:06
Реализация CI/CD pipeline в сервисе GitHub Actions. Использование GitHub Packages для хранения Docker-образов. Кэширование Docker-слоёв через BuildKit.
1:10:54
Реализация CI/CD Pipeline по автотестированию и автодеплою в GitLab CI. Хранение и кеширование Docker-образов.
Free25:25
Реализация Continuous Deployment. Алгоритм Rolling Updates для бесшовного обновления контейнеров. Использование оркестраторов для деплоя на кластер.
24:17
Инициализация режима Docker Swarm. Автоматическое поднятие кластера из менеджера и машин-воркеров с помощью Ansible.
1:12:00
Перевод проекта с Docker Compose на Docker Swarm для установки на кластер. Организация бесшовного деплоя. Управление размещением сервисов.
Free1:15:32
Обновление пакетов в Composer и Yarn. Семантическое версионирование. Мажорные и минорные обновления. Оптимизация процесса для следования CI/CD.
59:18
Обновление версий Docker-образов Nginx, NodeJS и PostgreSQL. Переход на Composer 2 и XDebug 3. Изменения в Cucumber 7. Кэширование в Psalm 4.
42:28
Интеграция запуска PHPUnit-тестов и инспекций CodeSniffer и Psalm в PhpStorm. Подключение плагинов к Psalm для упрощения кода.
32:54
Решение проблемы Pull Rate Limit сервиса DockerHub. Создание собственного кеширующего прокси для загрузки официальных Docker-образов.
Free1:37:45
Добавление поддержки Feature Toggle для фронтенда на ReactJS и бэкенда на PHP для разработки новой функциональности в стиле CI/CD.
47:51
Ускорение сборочного конвейера в Jenkins. Отслеживание изменений кода фронтенда и бэкенда в текущей сборке. Пропуск шагов если код не затронут.
50:44
Доработка E2E-тестов для работы с асинхронными страницами. Вынесение общего шаблона вёрстки. Установка маршрутизатора и создание страницы для регистрации.
1:30:43
Программирование формы регистрации пользователя в React. Организация взаимодействия фронтенда с API. Работа через CORS-заголовки и через проксирование.
34:57
Перевод API на PHP 8. Сборка расширений из исходников вместо PECL. Добавление типов и упрощение PHPDoc-блоков за счёт перехода от Psalm-аннотаций и удаления повторов.
1:16:35
Переход от классического CodeSniffer к продвинутым стандартам кодирования с PHP CS Fixer. Внедрение практики final or abstract для классов. Интеграция в PhpStorm.
38:25
Способы аутентификации при работе с API. Использование токенов формате JWT в распределённых системах. Спецификация OAuth 2.0 для получения доступа в сторонние сервисы.
21:08
Переход на CS Fixer 3. Переход на PSR-кэш для мета-информации в Doctrine ORM. Обновление Jenkins с компиляцией Python-библиотек с Rust.
1:03:26
Исследование работы и интеграция в PHP-проект компонента League OAuth2 Server. Написание сущностей и репозиториев. Сохранение кодов через Doctrine.
1:10:16
Разработка страницы входа и контроллера для генерации и обновления OAuth-токенов. Добавление Query-модели для выполнения запросов данных из модуля.
Скоро
58 ...