Случайны выбор дневника Раскрыть/свернуть полный список возможностей


Найдено 304 сообщений
Cообщения с меткой

ddd - Самое интересное в блогах

Следующие 30  »
rss_habr

Гексагональная архитектура и DDD на опыте интернет-магазина Спортмастер. Как дела с кодом?

Четверг, 19 Января 2023 г. 14:30 (ссылка)

В предыдущих двух постах (раз, два) мы разобрали, какие проблемы решает гексагональная архитектура и как выглядит архитектура у нас в проекте. Теперь давайте посмотрим, как обстоят дела с кодом, который должен поддерживать описанную архитектуру.

Как я уже писал, мы взяли из DDD тактические шаблоны.

Если какое-то понятие предметной области является уникальным и отличным от всех других объектов в системе, то для его моделирования используется сущность.

Такие объекты-сущности могут сильно отличаться своей формой за весь цикл существования. Тем не менее, их всегда можно однозначно идентифицировать и найти по запросу.

Для этого используются уникальные идентификаторы.

Сущность в коде нашего проекта должна иметь:

Читать далее

https://habr.com/ru/post/711298/?utm_source=habrahabr&utm_medium=rss&utm_campaign=711298

Комментарии (0)КомментироватьВ цитатник или сообщество
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

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
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

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
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

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_habr

Изоляция микросервисов по данным при миграции с монолита

Вторник, 20 Декабря 2022 г. 12:30 (ссылка)

Здравствуйте! Меня зовут Дмитрий Моряков, и я ведущий системный аналитик в компании МаксимаТелеком. Теме миграции с монолита на микросервисную архитектуру (здесь и далее — МСА) за последние годы на страницах Хабра было посвящено немало материалов, поэтому я хотел бы сосредоточиться на узких аспектах этого процесса: выделении критической части при реализации пилотного проекта миграции на МСА и реализацию изоляции полученных микросервисов по данным.

Читать далее

https://habr.com/ru/post/706532/?utm_source=habrahabr&utm_medium=rss&utm_campaign=706532

Комментарии (0)КомментироватьВ цитатник или сообщество
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

Комментарии (0)КомментироватьВ цитатник или сообщество
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

Комментарии (0)КомментироватьВ цитатник или сообщество
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

Комментарии (0)КомментироватьВ цитатник или сообщество
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

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_habr

Роль аналитика в проекте по распилу монолита

Четверг, 13 Октября 2022 г. 12:02 (ссылка)

Привет! Меня зовут Виктория Кабыткина, я работаю старшим системным аналитиком в компании Lamoda. По своему опыту как в банковской сфере, так и в сфере e-commerce, могу заметить, что во многих компаниях существует тенденция избавляться от монолита и переходить на микросервисную архитектуру.

Тенденция популярна и заставляет задуматься над множеством вопросов. А нужен ли на таких проектах бизнес-аналитик? А системный? А если все-таки нужен, то чем он там занимается? Какие задачи он решает? Полезен ли команде?

В этой статье я постараюсь ответить на эти вопросы и рассказать о роли и задачах аналитика при выделении микросервисов, основываясь на своем личном опыте.

Читать далее

https://habr.com/ru/post/690468/?utm_source=habrahabr&utm_medium=rss&utm_campaign=690468

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_habr

Программная платформа для разработки приложений. Что это, и для чего она нужна?

Понедельник, 22 Августа 2022 г. 11:58 (ссылка)

Платформа это новый этап в эволюции разработки. Беря на себя всю рутинную часть - предоставляет разработчику простор для творчества и созидания. Кратно уменьшает сроки разработки и риски проекта.

Читать далее

https://habr.com/ru/post/683878/?utm_source=habrahabr&utm_medium=rss&utm_campaign=683878

Комментарии (0)КомментироватьВ цитатник или сообщество
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

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_habr

Эволюция игрового серверного фреймворка на Python. Часть 2 из 2. Слои логики

Понедельник, 25 Июля 2022 г. 19:06 (ссылка)

В прошлый раз мы отделили логику от инфраструктуры и разбили последнюю на четыре слоя: Server -> Parser -> Application -> Repository. Классы инфраструктуры составляют основной фреймворк, который берет на себя всю рутинную работу, а нам предоставляет писать одну только логику.

Логика состоит из контроллеров, которые составляют пятый и пока что последний слой. Они полностью независимы не только от инфраструктуры (им доступно только хранилище), но и друг от друга. Контроллеры — это, на данный момент, базовые единицы бизнес-логики.

Если сильно обобщить, то контроллеры занимаются преобразованием одних команд в другие с сопутствующим изменением состояния приложения (Repository). В зависимости от команды и текущего состояния пользователя Application выбирает соответствующий контроллер и передает ему ссылку на Repository. Контроллер обрабатывает команду, изменяет состояние хранилища и возвращает другие команды, которые должны быть отправлены инфраструктурой по назначению. В общей схеме контроллеры занимают промежуточное место между движком и хранилищем:

... -> Application -> Controller -> Repository.

Если размещать всю логику в одном классе контроллера, то это в большинстве случаев окажется большой класс. Большой класс — это много кода, а много кода, собранного в одном месте — это мешанина. Поэтому чтобы в ней не запутаться, вся логика будет разбиваться на различные классы. Одна задача — один класс. Классы, выполняющие сходные функции и способные заменять друг друга, будут группироваться в слои, как и в инфраструктуре.

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

При такой организации кода отдельные игры — это лишь соответствующая настройка и использование классов из жанровой библиотеки. Идеальный проект тогда будет состоять вообще из одного main-скрипта в пару строк и yml-файла конфигурации.

О том, как писать классы такого уровня обобщения, чтобы исходный код проектов состоял всего из нескольких строк, как раз и пойдет речь в данной статье:

Читать далее

https://habr.com/ru/post/678666/?utm_source=habrahabr&utm_medium=rss&utm_campaign=678666

Комментарии (0)КомментироватьВ цитатник или сообщество
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

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество

Следующие 30  »

<ddd - Самое интересное в блогах

Страницы: [1] 2 3 ..
.. 10

LiveInternet.Ru Ссылки: на главную|почта|знакомства|одноклассники|фото|открытки|тесты|чат
О проекте: помощь|контакты|разместить рекламу|версия для pda