Записи с меткой «Архитектура»
Наш прошлый большой митап удался и пришло время продолжить. Вчера организовал трансляцию и выступил с докладом на очередном митапе сообщества LivePHP. Почему переработки – зло. Как выстрелить себе в ногу при обновлении ОС, сломать индексы и ограничения БД и почему во всем виноват юникод. Почему во многих языках програмиирования есть множественное наследование интерфейсов, но нет множественного наследования реализации.
В комментариях и чатах к предыдущим стримам часто попадалось предложение о том, что было бы интересно посмотреть или послушать что-нибудь на тему безопасной разработки web-приложений. Как про написание безопасного кода, так и про защиту сетей, виртуальных машин и Docker-контейнеров.
В статьях и стримах мы стараемся делать код таким, чтобы его было удобнее разрабатывать и поддерживать. При этом мы часто упоминаем некоторые принципы из SOLID и паттерны из GRASP как что-то само собой разумеющееся. Эти аббревиатуры у всех на слуху. Но на практике оказывается, что многие пытаются их вызубрить без понимания зачем они нужны и для чего они придумывались. А потом безуспешно пытаются применить их у себя и получают не тот результат, который хотели.
Наш позапрошлый большой митап удался и пришло время продолжить. Сегодня организую трансляцию и выступлю с докладом на четвёртом митапе сообщества LivePHP в Санкт-Петербурге. Докладчики расскажут про новую IDE и про код, а я выступлю с опытным философским докладом о том, почему меняются и как растут проекты.
На сайте скринкастов начинаем программирование доменной модели через практику Event Storming проекта аукциона. Но помимо этого будет крайне полезно рассмотреть примеры из разных предметных областей. Для этого мы проведём большой практический стрим про разделение кода на модули и микросервисы.
Продолжаем беспощадный цикл статей про работу с зависимостями. После знакомства с сущностямии сервисами и рассмотрения основных способов внедрения зависимостей сегодня мы применим всё это на практике. И выберем что, куда и когда нам будет более удобно внедрять.
Спонтанно выступил с докладом и заодно технически организовал трансляцию третьего митапа сообщества BeerPHP SPb. Понял, что проведение трансляции тренирует стрессоустойчивость, так как почти всё, что могло пойти с техникой не так, пошло не так. Но получилось отлично.
В наших проектах мы активно используем контейнер внедрения зависимостей. При этом мы им часто пользуемся спонтанно, не особо объясняя принципы, которыми руководствуемся. Многие статьи часто только перечисляют способы внедрения, но не говорят об их плюсах и минусах. Поэтому в этом цикле статей мы сравним эти способы и выберем, какие удобнее использовать в разных ситуациях.
Провели ленивый импровизированный стрим на общеполезные темы. Чем неудобен в разработке процедурный код и код без разделения. Какие сложности предметной области обнаруживаются при анализе бизнеса. Про сходства и различия фреймворков. Про использование интерфейсов и классов провайдеров для конфигурирования приложения и для организации гибкой модульности.
Мы с вами сочинили много кода в проектах, где мы активно пользуемся контейнером внедрения зависимостей. Многие статьи рассматривают только внедрение сервис-контейнера, но не рассказывают о практиках написания самих сервисов. Об этом мы подробно расскажем в следующей части. Но перед этим нужно договориться об используемой в будущем терминологии и определиться с понятием сервиса. Поэтому сегодня рассмотрим, чем сервисы отличаются от других вещей в программном коде.