|
rss_habr
Гексагональная архитектура и DDD на опыте интернет-магазина Спортмастер. Как дела с кодом?Четверг, 19 Января 2023 г. 14:30 (ссылка)
В предыдущих двух постах (раз, два) мы разобрали, какие проблемы решает гексагональная архитектура и как выглядит архитектура у нас в проекте. Теперь давайте посмотрим, как обстоят дела с кодом, который должен поддерживать описанную архитектуру. Как я уже писал, мы взяли из DDD тактические шаблоны. Если какое-то понятие предметной области является уникальным и отличным от всех других объектов в системе, то для его моделирования используется сущность. Такие объекты-сущности могут сильно отличаться своей формой за весь цикл существования. Тем не менее, их всегда можно однозначно идентифицировать и найти по запросу. Для этого используются уникальные идентификаторы. Сущность в коде нашего проекта должна иметь: Читать далееhttps://habr.com/ru/post/711298/?utm_source=habrahabr&utm_medium=rss&utm_campaign=711298
rss_habr
CI, кодстайл и TDD: обзор практик для повышения качества кодаЧетверг, 12 Января 2023 г. 11:01 (ссылка)
Blade Runner 2049, Warner Bros. Pictures Я видел не во сне, а наяву атакующие корабли, пылающие под четырьмя вложенными if-else, и лучи CI с кучей сканирований у ворот Тангейзера, вызывающие лютую боль разработчиков. Меня зовут Максим Морев, и я техлид в Газпромбанке. То, что вы сейчас увидите, выросло из внутреннего стайлгайда, к которому мы пришли через тернии многочисленных код-ревью и разработанных сервисов. Я постарался собрать здесь все основные и просто интересные грабли, которые нам попадались, и показать решения с примерами и обзором возможных трудностей в процессе внедрения. Читать далееhttps://habr.com/ru/post/705970/?utm_source=habrahabr&utm_medium=rss&utm_campaign=705970
rss_habr
Flamingo, Go ahead! или Как реализовать DDD в Go?Вторник, 27 Декабря 2022 г. 17:31 (ссылка)
Наша компания в первую очередь занимается разработкой системного программного обеспечения, драйверов, созданием программно-аппаратных решений. Однако мы также разрабатываем собственные информационные системы для автоматизации наших внутренних бизнес-процессов и задач наших крупных клиентов. При проектировании нового программного решения была поставлена задача выбрать язык и фреймворк. По результатам проведенного исследования был выбран язык Go, как обеспечивающий высокую производительность вместе со скоростью разработки, а также фреймворк Flamingo для реализации принципов Domain Driven Design. Всем, кому интересно узнать, что же за птица такая Flamingo, приглашаю под кат. Концепция предметно-ориентированного проектирования, она же DDD (Domain Driven Design), описанная Эриком Эвансом, активно используется при построении информационных систем для предприятий. Не стоит пересказывать основные принципы DDD, благо, помимо книги самого Эванса, они описаны в большом количестве статей. Нам важно другое. Эти принципы гораздо проще реализовать в своей информационной системе, если они поддерживаются фреймворком. Для .Net, например, есть ASP.NET Boilerplate (https://aspnetboilerplate.com/), полностью реализующая все компоненты DDD – Entity, Value, Repository, Domain Service, Unit of Work и еще много всего. Но мы для одной из своих внутренних информационных систем используем Go. Мы решили использовать фреймворк Flamingo, распространяемый под лицензией MIT. Он разработан немецкой компанией AOE GmbH в 2018 году и к настоящему моменту “дорос” до версии 3.4 и до 331 звезды на Github. Flamingo используется в информационных системах аэропортов Окланда, Франкфурта и Хитроу, а также в T-Mobile. Читать далееhttps://habr.com/ru/post/708030/?utm_source=habrahabr&utm_medium=rss&utm_campaign=708030
rss_habr
Domain Driven Design: модели вместо требованийСреда, 21 Декабря 2022 г. 11:36 (ссылка)
По мере того, как автоматизированные системы не просто заменяли бумажные документы, отражающие текущую деятельность, а брали на себя задачу их обработки, включая задачи по планированию и управлению, возрастала потребность в описании их внутреннего устройства, алгоритмов в виде, понятном для заказчиков и пользователей систем. Описание в виде черного ящика предполагало, что внутри творится магия, придуманная разработчиками. Но эта магия оказывалась вовсе не такой, на которую рассчитывал бизнес. Решение — подход DDD, Domain Driven Design, было предложено Эриком Эвансом в 2003. Но прежде, чем о нем говорить, необходимо немного углубиться в историю развития разработки софта как такового. Читать далее →https://habr.com/ru/post/705958/?utm_source=habrahabr&utm_medium=rss&utm_campaign=705958
rss_habr
Изоляция микросервисов по данным при миграции с монолитаВторник, 20 Декабря 2022 г. 12:30 (ссылка)
Здравствуйте! Меня зовут Дмитрий Моряков, и я ведущий системный аналитик в компании МаксимаТелеком. Теме миграции с монолита на микросервисную архитектуру (здесь и далее — МСА) за последние годы на страницах Хабра было посвящено немало материалов, поэтому я хотел бы сосредоточиться на узких аспектах этого процесса: выделении критической части при реализации пилотного проекта миграции на МСА и реализацию изоляции полученных микросервисов по данным. Читать далее https://habr.com/ru/post/706532/?utm_source=habrahabr&utm_medium=rss&utm_campaign=706532
rss_habr
Декомпозиция систем по ограниченным контекстам DDD — глубокое погружениеПонедельник, 19 Декабря 2022 г. 10:17 (ссылка)
"Отдайте этот функционал в другую системы - он относится к ним" - ворчал мой собеседник. Ему с пылом отвечали: "Так быть не должно. Мы сами должны его сделать!" Спор грозил затянуться до вечера. Ни одна из сторон не могла привести ни одного настоящего аргумента, почему новый функционал нужно поместить в ту или иную автоматизированную систему. Проблема была в том, что никто не понимал как правильно делить системы на части и по каким признакам включать в них новые модули. У собеседников не было никакой единой простой методики. Но методика на самом деле есть, и весьма неплохая. Называется она Предметно Ориентированным Дизайном (Domain Driven Design, DDD). С помощью DDD деление большой системы на (микро)сервисы становится простым и понятным. Читать далееhttps://habr.com/ru/post/705846/?utm_source=habrahabr&utm_medium=rss&utm_campaign=705846
rss_habr
DDD, HEXAGON, HIBERNATE, не считая JOOQ. Часть 2: гексагональная архитектураВторник, 22 Ноября 2022 г. 10:48 (ссылка)
Продолжаем серию публикаций для java разработчиков, создающих системы со сложной предметной областью, первую часть можно почитать здесь. В новой статье поговорим о гексагональной архитектуре. Читать далееhttps://habr.com/ru/post/700790/?utm_source=habrahabr&utm_medium=rss&utm_campaign=700790
rss_habr
DDD, HEXAGON, HIBERNATE, не считая JOOQ. Часть 1Пятница, 18 Ноября 2022 г. 11:35 (ссылка)
Статья написана для java разработчиков, создающих системы со сложной предметной областью. Система, как правило, представлена сетью микросервисов или модульным монолитом. В рамках такой системы обычно содержится большое количество сущностей (JPA/JOOQ), которые одновременно используют как технические, так и бизнес-сущности. Смена технологической базы по прошествии нескольких лет разработки для такой системы является очень дорогостоящим решением. Доработки бизнес-функционала занимают большое количество времени. В первой части статьи проведем теоретический обзор основных терминов и паттернов гексагональной архитектуры и Domain Driven Design или сокращенно DDD. Какие проблемы вы сможете решить, прочитав статью https://habr.com/ru/post/700158/?utm_source=habrahabr&utm_medium=rss&utm_campaign=700158
rss_habr
Как навести порядок в AI-продукте: опыт внедрения методологии Event ModelingЧетверг, 27 Октября 2022 г. 18:24 (ссылка)
Всем привет, я Алексей Некрасов @letitshine (@znbiz) — Lead направления Python в МТС и старший архитектор в MTS AI. Вместе с коллегой Галиной Прохоровой (@letitshine — product manager в MTS AI — решили поделиться историей внедрения методологии Event Modeling в существующий продукт. Мы расскажем, с какими трудностями наша команда столкнулась и как их преодолела. Читать далееhttps://habr.com/ru/post/695924/?utm_source=habrahabr&utm_medium=rss&utm_campaign=695924
rss_habr
Роль аналитика в проекте по распилу монолитаЧетверг, 13 Октября 2022 г. 12:02 (ссылка)
Привет! Меня зовут Виктория Кабыткина, я работаю старшим системным аналитиком в компании Lamoda. По своему опыту как в банковской сфере, так и в сфере e-commerce, могу заметить, что во многих компаниях существует тенденция избавляться от монолита и переходить на микросервисную архитектуру. Тенденция популярна и заставляет задуматься над множеством вопросов. А нужен ли на таких проектах бизнес-аналитик? А системный? А если все-таки нужен, то чем он там занимается? Какие задачи он решает? Полезен ли команде? В этой статье я постараюсь ответить на эти вопросы и рассказать о роли и задачах аналитика при выделении микросервисов, основываясь на своем личном опыте. Читать далееhttps://habr.com/ru/post/690468/?utm_source=habrahabr&utm_medium=rss&utm_campaign=690468
rss_habr
Программная платформа для разработки приложений. Что это, и для чего она нужна?Понедельник, 22 Августа 2022 г. 11:58 (ссылка)
Платформа это новый этап в эволюции разработки. Беря на себя всю рутинную часть - предоставляет разработчику простор для творчества и созидания. Кратно уменьшает сроки разработки и риски проекта. Читать далееhttps://habr.com/ru/post/683878/?utm_source=habrahabr&utm_medium=rss&utm_campaign=683878
rss_habr
[Перевод] Введение в Event ModelingВоскресенье, 14 Августа 2022 г. 18:23 (ссылка)
Event Modeling — это метод описания информационных систем на основе анализа изменений информации с течением времени. В частности, опускаются временные детали и выделяется то, что хранится долговременно, то что пользователь видит в любой конкретный момент времени. Это события на временной шкале, формирующие описание системы. Читать далееhttps://habr.com/ru/post/682424/?utm_source=habrahabr&utm_medium=rss&utm_campaign=682424
rss_habr
Эволюция игрового серверного фреймворка на Python. Часть 2 из 2. Слои логикиПонедельник, 25 Июля 2022 г. 19:06 (ссылка)
В прошлый раз мы отделили логику от инфраструктуры и разбили последнюю на четыре слоя: Server -> Parser -> Application -> Repository. Классы инфраструктуры составляют основной фреймворк, который берет на себя всю рутинную работу, а нам предоставляет писать одну только логику. Логика состоит из контроллеров, которые составляют пятый и пока что последний слой. Они полностью независимы не только от инфраструктуры (им доступно только хранилище), но и друг от друга. Контроллеры — это, на данный момент, базовые единицы бизнес-логики. Если сильно обобщить, то контроллеры занимаются преобразованием одних команд в другие с сопутствующим изменением состояния приложения (Repository). В зависимости от команды и текущего состояния пользователя ... -> Application -> Controller -> Repository. Если размещать всю логику в одном классе контроллера, то это в большинстве случаев окажется большой класс. Большой класс — это много кода, а много кода, собранного в одном месте — это мешанина. Поэтому чтобы в ней не запутаться, вся логика будет разбиваться на различные классы. Одна задача — один класс. Классы, выполняющие сходные функции и способные заменять друг друга, будут группироваться в слои, как и в инфраструктуре. В результате у нас появятся отдельные библиотеки для каждого жанра, а также библиотеки с базовыми классами для групп жанров. В отличие, от основного, инфраструктурного фреймворка, эти фреймворки будут сугубо "логические". При такой организации кода отдельные игры — это лишь соответствующая настройка и использование классов из жанровой библиотеки. Идеальный проект тогда будет состоять вообще из одного main-скрипта в пару строк и yml-файла конфигурации. О том, как писать классы такого уровня обобщения, чтобы исходный код проектов состоял всего из нескольких строк, как раз и пойдет речь в данной статье: Читать далееhttps://habr.com/ru/post/678666/?utm_source=habrahabr&utm_medium=rss&utm_campaign=678666
rss_habr
Эволюция игрового фреймворка. Клиент 3. Слои логикиСреда, 20 Июля 2022 г. 21:26 (ссылка)
Прежде мы рассмотрели отделение логики отображения от графики, а также разные вспомогательные классы и менеджеры. Все вместе они образуют каркас наших приложений и были вынесены в отдельную библиотеку — Core Framework. Осталось еще разработать методику по написанию остальной логики. В нее входит бизнес-логики и правила игры, данные и их обработка, а также взаимодействие с сервером. Вся логика будет разбита на слои. Основной смысл слоев тот, что классы одного слоя максимально независимы от классов с соседних слоев и абсолютно независимы от остальных. Все это уже относится не к основному фреймворку (Core Framework), а к фреймворкам для разных групп жанров (Base Game Frameworks) и для каждого отдельного жанра (Game Frameworks). Читать далееhttps://habr.com/ru/post/677854/?utm_source=habrahabr&utm_medium=rss&utm_campaign=677854
|
LiveInternet.Ru |
Ссылки: на главную|почта|знакомства|одноклассники|фото|открытки|тесты|чат О проекте: помощь|контакты|разместить рекламу|версия для pda |