Привет! Меня зовут Евгений, я Python-разработчик. Последние полтора года наша команда стала активно применять принципы Clean Architecture, уходя от классической модели MVC. И сегодня я расскажу о том, как мы к этому пришли, что нам это дает, и почему прямой перенос подходов из других ЯП не всегда является хорошим решением.
Рубрика «Проектирование и рефакторинг» - 10
Clean Architecture глазами Python-разработчика
2020-03-27 в 10:12, admin, рубрики: architecture, clean architecture, clean code, design patterns, mvc, patterns, python, Блог компании Exness, Программирование, Проектирование и рефакторинг, Разработка веб-сайтовАнатомия таблиц LuaJIT и особенности их использования
2020-03-26 в 11:04, admin, рубрики: Lua, luajit, tarantool, Блог компании Mail.Ru Group, Программирование, Проектирование и рефакторинг, Совершенный кодНе знаю как вы, а я люблю ковыряться в кишочках разных систем. И в этой статье хочу рассказать о внутреннем устройстве Lua-таблиц и их особенностях. Lua — мой основной язык программирования по долгу службы, и чтобы писать хороший код, надо хоть немного понимать, что происходит за кулисами. Любопытных прошу за мной.

Имитация Сложности — Антиномия Простого и Сложного
2020-03-23 в 19:47, admin, рубрики: Анализ и проектирование систем, архитектура приложений, практика программирования, Программирование, проектирование, Проектирование и рефакторинг, проектирование систем, Промышленное программирование, размышления, сложность, философия программированияПрограммисты много говорят про сложность решений. Мы можем часами размышлять о правильных шаблонах, красивых абстракциях и цепочках зависимостей. Однако, давайте поговорим открыто, всегда ли сложность обусловлена решаемой проблемой? Не оказываемся ли мы в плену наших стереотипов и убеждений?

Организация кода в микросервисах и мой подход применения гексагональной архитектуры и DDD
2020-03-21 в 17:37, admin, рубрики: .net, C#, DDD, Microservices, микросервисы, Программирование, Проектирование и рефакторинг, Совершенный код
Привет! В Монолите весь код должен быть в едином стиле, a в разных микросервисах можно использовать разные подходы, языки программирования и фреймворки. Для простых микросервисов с 1 — 2 контроллерами и 1 — 10 действиями особо смысла городить слои абстракций нет. Для сложных микросервисов с различными состояниями и логикой перехода между ними наоборот лучше изначально не лениться. Я хочу рассказать о моем опыте организации кода и использования подходов DDD, Портов и Адаптеров для обоих случаев. Есть кратко суть статьи: Джун — пишет код в контроллере. Мидл — пишет кучу абстракций. Сеньор — знает когда нужно писать код в контроллере, а когда нужны абстракции.Читать полностью »
Camunda external tasks — мощный инструмент для создания приложений с отказоустойчивой и масштабируемой архитектурой
2020-03-19 в 12:27, admin, рубрики: BPM, bpmn, camunda, external task, kotlin, programming patterns, Блог компании Tinkoff.ru, Проектирование и рефакторинг
В Тинькофф для разработки систем автоматизации бизнес-процессов мы используем фреймворк Camunda + Spring. Сами бизнес-процессы описываем с помощью BPMN (Business Process Management Notation) в виде блок-схем.
Наиболее часто используемый элемент на наших схемах — service tasks (прямоугольник с шестеренкой). Camunda поддерживает два способа выполнения service tasks:
- С помощью синхронного вызова java-кода.
- Создание external task.
Второй способ позволяет выполнять задачи с помощью внешних систем — например, если нужно вызвать одно camunda-приложение из другого или вообще делегировать работу в какую-либо внешнюю систему.
Читать полностью »
Продаем Architecture Refactoring клиенту или в чем проблема девелоперов
2020-03-15 в 23:47, admin, рубрики: Анализ и проектирование систем, архитектура, дизайн, Программирование, Проектирование и рефакторинг, разработка, рефакторингАрхитектурный или проектный рефакторинг это всегда болезненная проблема на проекте. Польза от рефакторинга, для нас технических специалистов очевидна, но продать и обосновать эту идею клиенту зачастую бывает тяжело. Главная причина в том, что мы технические специалисты не знаем как говорить с бизнесом.

Главная проблема в коммуникация между техническими специалистами и людьми, которые делают деньги. Они говорят на разных языках, хотя и пытаются решить одни и те же проблемы.
Данная статья является переводом оригинала с английского: Architecture Refactoring and Design Refactoring How to Sell it Client. Если у вас есть коллеги, не владеющие русским языком, они могут прочитать оригинал на моем болге.
Польза от рефакторинга очевидна для всех технических специалистов, но зачастую мы не можем донести эту идею до бизнеса. Почему так случается? Мы пропускаем несколько незначительных для нас, но очень важных шагов для бизнеса.
Разделим весь процесс на 6 простых, но обязательных шагов:
- Определить причину проблемы
- Решить какие изменения должны быть сделаны
- Обоснование решения
- Составить план рефакторинга
- Создать roadmap
- Презентовать свое решение
Анатомия системы НСИ
2020-03-15 в 12:13, admin, рубрики: oracle, oracle 18c, Анализ и проектирование систем, НСИ, проектирование баз данных, Проектирование и рефакторинг, справочные системыДанная статья основана на реальных событиях,
и все проблемы в ней не вымышленные. (С)
В начале хотелось бы отметить, что статья не призвана показать изобретение велосипеда, потому как многие приёмы уже давно существуют в культуре разработки баз данных. Однако обобщить, проанализировать проблемы, которые они могут решить и показать, как с ними можно работать. А проблем хватает несмотря на то, что нормативно-справочная информация (НСИ) не относится к бизнес-логике, а скорее находится в обслуживании у неё. Стандартный процесс по рисованию очередной таблички для хранения справочника очень скоро начинает обрастать костылями или трудоёмкими переделками.
Читать полностью »
Инструменты Domain Driven Design
2020-03-10 в 8:47, admin, рубрики: DDD, dry-python, Moscow Python Conf++, python, Блог компании Конференции Олега Бунина (Онтико), Проектирование и рефакторинг, Разработка веб-сайтов, управление разработкойСиний кит — отличный пример того, как проектирование сложного проекта пошло не по плану. Кит внешне похож на рыбу, но он млекопитающее: кормит детенышей молоком, у него есть шерсть, а в плавниках до сих пор сохранились кости предплечья и кистей с пальцами, как у сухопутных. Он живет в океанах, но не может дышать под водой, поэтому регулярно поднимается на поверхность глотнуть воздуха, даже когда спит. Кит самое большое животное в мире, длиной с девятиэтажный дом, а массой как 75 автомобилей Volkswagen Touareg, но при этом не хищник, а питается планктоном.
Когда разработчики работали над китом, то не стали писать все с нуля, а использовали наработки из старых проектов. Он словно слеплен из несовместимых частей кода, которые не тестировались, а все проектирование сводилось к выбору фреймворка и к срочному «велосипедированию» уже в продакшне. В итоге получился проект красивый внешне, но с кусками дремучего легаси и костылей под капотом.

Для создания проектов, которые помогают бизнесу зарабатывать, а не похожих на морское животное, которое не может дышать под водой, есть DDD. Это подход, который фокусируется не на инструментах или коде, а на изучении предметной области, отдельных бизнес-процессов и на том, как код или инструменты работают для бизнес-логики.
Что такое DDD и какие инструменты в нем есть, мы расскажем в статье на основе доклада Артема Малышева. Подход DDD в Python, инструменты, подводные камни, контрактное программирование и проектирование продукта вокруг решаемой проблемы, а не используемого фреймворка — все это под катом.
Читать полностью »
UML для разработчиков
2020-03-05 в 8:42, admin, рубрики: activity diagram, archimate, class diagram, enterprise architect, oauth2, sequence diagram, UML, UML Design, use case, Блог компании Программный Продукт, диаграммы, Проектирование и рефакторинг, управление проектамиИнтернет полон статей про UML, вы найдете сотни примеров для каждого вида диаграмм, и без проблем создадите свои, нотация не сложная. Но так ли уж необходимо тратить на это время? Наш богатый опыт говорит «Да». Если у вас в команде более 2 человек и проект от 3 месяцев, то уже имеет смысл отрисовать 2-3 вида диаграмм. В одной нашей команде более 30 человек, проект длительностью более 3 лет, и мы используем...2-3 вида диаграмм.
Нотация UML избыточна. С другой стороны она недостаточна для проектирования распределенных систем, и здесь нам помогает Archimate. В этой статье мы расскажем, что действительно полезно из всего этого многообразия, и рассмотрим на примере полный цикл создания диаграмм для проекта.
Читать полностью »
Дзен Go
2020-02-28 в 12:27, admin, рубрики: best practices, Go, Анализ и проектирование систем, Блог компании Mail.Ru Group, никто не читает теги, Проектирование и рефакторинг, Совершенный код
Оценивая свою работу, я недавно много размышлял о том, как мне писать хороший код. Учитывая, что никто не интересуется тем, как писать плохой код, возникает вопрос: как узнать, что ты написал на Go хороший код? Если есть какая-то шкала между хорошо и плохо, то как понять, какие части шкалы относятся к хорошему? Каковы его свойства, атрибуты, отличительные признаки, паттерны и идиомы?
Читать полностью »

