Go-микросервисы: Стандартизация архитектуры с Clean Architecture и DDD

Go-разработчики часто сталкиваются с парадоксом: изначально простой и понятный проект со временем превращается в сложный для поддержки монолит. ✔️ Бизнес-логика оказывается размазана между слоями? ✔️ Замена базы данных требует переписывания половины кода? ✔️ Новым разработчикам требуется недели, чтобы разобраться в проекте? В этой статье мы разбираем практическое применение DDD и Clean Architecture в Go . Обсуждаем возможный стандарт структуры микросервиса . Оптимизируем существующие. 🔥 Для разработчиков, которые хотят создавать проекты, остающиеся поддерживаемыми даже через годы развития.

https://habr.com/ru/articles/911018/

#clean_architecture #domain_driven_design #ddd #golang #разработка #архитектура #стандарт_golang #чистый_код #чистая_архитектура #паттерны_разработки

Go-микросервисы: Стандартизация архитектуры с Clean Architecture и DDD

Рисунок 0. Как я писал статью на Хабр Введение: Проблемы современных Go-проектов В Go-экосистеме сложилась парадоксальная ситуация: при наличии множества руководств по структуре проектов, разработчики...

Хабр

Как эксперимент помог распутать спагетти-код: применяем DDD-Lite на микросервисах

Ситуация, знакомая многим: разрабатываем сервис, пилим в нём фичи, развиваем продукт… но постепенно всё выходит из под контроля. Кодовая база разрастается, зависимости становятся сложнее. Команда разработчиков тратит больше времени на распутывание существующих проблем, чем на создание новой функциональности. Хорошая новость: распутать спагетти-код можно по-разному, и иногда срабатывают не самые очевидные способы. В нашем случае помогла комбинация действий: не просто выделение части кода в отдельные микросервисы, но и параллельная реализация архитектурного подхода DDD Lite (в связке с принципами чистой архитектуры). О том, как в рамках кейса мы избавились от спагетти-зависимостей, поделили сервис на чёткие слои, упростили поддержку и масштабирование кода, — рассказываем под катом. Плюс делимся рекомендациями: кому и при каких сценариях связка «DDD Lite + микросервисы» может пригодиться.

https://habr.com/ru/companies/sravni/articles/896894/

#nestjs #DDDlite #domain_driven_design #луковая_архитектура #typescript #onion_architecture #проектирование_архитектуры #микросервисы

Как эксперимент помог распутать спагетти-код: применяем DDD-Lite на микросервисах

Ситуация, знакомая многим: разрабатываем сервис, пилим в нём фичи, развиваем продукт… но постепенно всё выходит из под контроля. Кодовая база разрастается, зависимости становятся сложнее. Команда...

Хабр
Why I don't do Domain Driven Design

Why I don't do Domain Driven Design

Domain-Driven Design: чистая архитектура снизу доверху

Когда мидл-разработчик дорастает до сениора, его, как правило, мучает вопрос: как правильно писать приложение? Понятно, что когда он был джуном, ему давали совсем атомарные задачи, и он развлекался покрытием тестов или написанием контроллеров. Переход в мидлы знаменуется назначением на разработчика более абстрактных задач вроде реализации сервисов, репозиторной части или интеграции с внешними сервисами посредством клиентов. Но в какой-то момент мидл начинает задавать самому себе вопросы: как найти единственно правильный способ написать приложение с нуля ? Если Вы - мидл, и Вас стали мучать такие вопросы - поздравляю, Вы на верном пути. Ведь профессиональный рост не происходит с переводом на должность - новый сениор должен родиться, и это как раз муки такого рождения. Да, мы уже знаем самые популярные практики: KISS, DRY, YAGNI, SOLID, что там ещё... Мы умеем их применять. Но нас не покидает чувство, что все эти практики объединяет общая научная основа. Знаете, это как с Менделеевым, который на основе закономерностей практически по наитию составил периодическую систему, а потом открыли электроны и всё встало на свои места. У меня для вас хорошие новости: научная основа есть. Это предметно-ориентированное проектирование . Но есть и плохая новость: тема настолько новая и непростая в изучении, что какая-никакая популярность к ней пришла лет 5 назад, и до сих пор совсем небольшое число разработчиков достаточно хорошо в ней разбирается. Но есть ещё одна хорошая новость: в статье ниже я постараюсь дать максимально понятный ответ, что же такое предметно-ориентированное проектирование. Начнём.

https://habr.com/ru/companies/sberbank/articles/781612/

#чистая_архитектура #domain_driven_design #паттерны_проектирования #луковичная_архитектура #интерфейсы

Domain-Driven Design: чистая архитектура снизу доверху

Когда мидл-разработчик дорастает до сеньора, его, обычно мучает вопрос: " как правильно писать приложение ?" Понятно, что когда он был джуном, ему давали совсем атомарные задачи и он развлекался...

Хабр

Немного про DDD: Реализация событий предметной области в .NET

Всем привет! Предметно-ориентированное проектирование, на мой взгляд, является недопонятым подходом, о котором многие говорят, но немногие его действительно применяют. Одним из относительно простых в реализации и полезных в архитектурном смысле паттернов, на мой взгляд, являются события предметной области (Domain Events) . В данной статье я бы хотел рассказать о возможных вариантах реализации этого шаблона DDD с использованием .NET.

https://habr.com/ru/articles/846796/

#События_предметной_области #ddd #entityframework #domain_events #domain_driven_design

Немного про DDD: Реализация событий предметной области в .NET

Всем привет! Предметно-ориентированное проектирование, на мой взгляд, является недопонятым подходом, о котором многие говорят, но немногие его действительно применяют. Мне кажется, что проблема чаще...

Хабр

DDD простыми словами

Часто в больших компания всё поделено на большие системы. А если система «Legacy», т.е. устаревшая, то часто внутри неё собрано очень много разнородного функционала. По сути такие системы представляют из себя монолитных монстров. Бывает, что компании решают использовать микросервисный подход, но в результате получают таких же монолитных монстров, но только работающих в Кубере. Границы систем размыты, нет чёткого понимания, что должно входить в систему, а что нет. Команды сильно специализированы на конкретную систему и не могут участвовать в доработке никакой другой системы. По сути, речь идёт о том, что системы становится слишком большими и для их доработки требуется длительный процесс погружения. Можно ли исправить ситуацию коренным образом?

https://habr.com/ru/articles/809831/

#ddd #ограниченный_контекст #bounded_context #ubiquitous_language #domain_driven_design #архитектура #предметная_область

DDD простыми словами

Часто в больших компания всё поделено на большие системы. А если система «Legacy», т.е. устаревшая, то часто внутри неё собрано очень много разнородного функционала. По сути такие системы представляют...

Хабр

Проектируем микросервисы с Reactive Manifesto

Работаете с распределенными системами или только пытаетесь к ним подобраться? Проектировать такие системы с нуля бывает сложно и страшно: чтобы учесть все нюансы, нужен определенный багаж знаний. На помощь приходит Reactive Manifesto — документ, который обобщил опыт целого ряда компаний по созданию распределенных систем. Манифест формулирует главные принципы, на которые стоит опираться на этапе проектирования и эксплуатации таких систем. Меня зовут Андрей Василевский, я системный архитектор в Lamoda Tech. В этой статье я на примерах из своей работы покажу, как применять Reactive Manifesto на практике. Статья будет полезна тем, кто только начал изучать распределенные системы, хочет закрепить теорию или тем, кто хочет структурировать проектирование микросервисов в своей компании.

https://habr.com/ru/companies/lamoda/articles/803793/

#микросервисы #domain_driven_design #event_driven_architecture #system_design #architecture #saga #распределенные_системы #cap_theorem #fault_tolerance #guideline

Проектируем микросервисы с Reactive Manifesto

Работаете с распределенными системами или только пытаетесь к ним подобраться? Проектировать их с нуля бывает сложно и страшно: чтобы учесть все нюансы, нужен определенный багаж знаний.  На помощь...

Хабр

Domain Driven Design в Go – это почти не больно

Как выглядят паттерны DDD (Domain Driven Design) в большом проекте? А самое главное, стоит ли их вообще использовать? Рассмотрим, какими инструментами можно реализовать DDD на Go и оценим, насколько это больно. Меня зовут Илья Сергунин , я backend-сочинитель в Авито: занимаюсь тем, что передаю смартфоны в хорошие руки. В этой статье попытаюсь объяснить, как можно натянуть DDD на Go без синтаксического сахара и магии Java-подобных языков, и без больших крутых ORM c Data mapper, которые также отсутствуют в Go.

https://habr.com/ru/companies/oleg-bunin/articles/791420/

#go #ddd #domain_driven_design #golang #golangconf #предметноориентированное #проектирование

Domain Driven Design в Go – это почти не больно

Как выглядят паттерны DDD (Domain Driven Design) в большом проекте? А самое главное, стоит ли их вообще использовать? Рассмотрим, какими инструментами можно реализовать DDD на Go и оценим, насколько...

Хабр

Calypso: Схема данных MongoDB на Scala

Чтобы применять Domain-Driven Design, DDD Aggregate и Transactional outbox на MongoDB, наша команда создала open source библиотеку calypso для работы с BSON. Публикация для тех, кто стремится к современным практикам разработки и разделяет наше влечение к Scala 3. Готовы к открытиям? Добро пожаловать в мир функционального программирования и надёжной работы с schema-on-read.

https://habr.com/ru/companies/m2tech/articles/782986/

#scala #ddd #scala3 #outbox #adt #algebraic_data_types #mongodb #nosql #domain_driven_design #functional_programming

Calypso: Схема данных MongoDB на Scala

Введение Чтобы применять Domain-Driven Design, DDD Aggregate и Transactional outbox на MongoDB, наша команда создала open source библиотеку calypso для работы с BSON. Публикация для тех, кто...

Хабр