Как стать автором
Обновить
31.06
Рейтинг

Проектирование и рефакторинг *

Реорганизация кода

Сначала показывать
Порог рейтинга

Mapper Contexts и Supercontexts: Разделение domain-specific и domain-generic ограниченных контекстов

Программирование *Анализ и проектирование систем *Совершенный код *Проектирование и рефакторинг *Управление разработкой *
Перевод

Эта статья является переводом материала «Mapper Contexts & Supercontexts: Decoupling Domain-Specific and Domain-Generic Bounded Contexts».

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

Первый разработчик предлагает модель push: ограниченный контекст должен дать указание Notifications отправить уведомление. Notifications должен просто подчиняться командам и отправлять указанные уведомления.

Второму разработчику не нравится модель push-уведомлений, и он предлагает решение на основе хореографии: когда ограниченные контексты создают события, Notifications должен подписаться на эти события и определять, когда отправлять уведомление.

Как бы вы спроектировали решение? Что еще более важно, как бы вы приняли это решение в команде? Как вы будете разрабатывать наиболее эффективную архитектуру, которая поддерживает краткосрочные цели и долгосрочное развитие?

Читать далее
Всего голосов 2: ↑2 и ↓0 +2
Просмотры 588
Комментарии 1

Новости

Управление файлов конфигурации, используя всю мощь Python

Python *Программирование *Проектирование и рефакторинг *Управление проектами *
Recovery mode

Программа для создания файлов конфигурации. Часто встречается нужда держать конфигурационные файлы в порядке, и консистенции, распределять общие данные по разным типам файлам, у некоторых типов файлов нет возможности читать переменные окружения, или приходиться подстраиваться под каждый формат по отдельности. Для того чтобы не подстраиваться под каждый формат файла, можно использовать всю мощь python и держать все конфигурации в одном файле.

Читать далее
Всего голосов 13: ↑3 и ↓10 -7
Просмотры 3.3K
Комментарии 15

План самостоятельного обучения DDD, CQRS, EventSourcing

Анализ и проектирование систем *Проектирование и рефакторинг *

Если вы собрались плотно погрузиться в тему Doman Driven Design (DDD), о том как его применять, как использовать, для чего он нужен, и как с ним связаны Command and Query Responsibility Segregation (CQRS), Event Sourcing и другие термины из мира DDD то можно воспользоваться планом обучения, который последовательно погрузит вас в эти темы и поможет сориентироваться. Часть информации на русском, часть на английском языке, так как русскоязычных аналогов я не смог найти.

Погрузиться в DDD
Всего голосов 32: ↑31 и ↓1 +30
Просмотры 5.9K
Комментарии 3

Lua для паттернов проектирования: проверяем на лампочках

Блог компании Luxoft Программирование *C++ *Проектирование и рефакторинг *Lua *

Как скрипты могут помочь при взаимодействии компонентов, типичных для IoT? С помощью языка Lua. Наш ведущий разработчик Леонид Садофьев рассказывает и показывает на примере своего демоприложения про использование Lua на проектах уровня бизнес-логики (BL). Его приложение разработано на С++ и применяется для умного дома, но может подойти и для приложений других типов. Всё важное под катом — передаём слово автору.

Читать далее
Рейтинг 0
Просмотры 1K
Комментарии 3

Как приручить DDD. Часть 1. Стратегическая

Блог компании Конференции Олега Бунина (Онтико) Анализ и проектирование систем *Проектирование и рефакторинг *IT-стандарты *Управление разработкой *

DDD — одна из моих основных рабочих методологий, я применяю её больше пяти лет. Хотя она довольна сложная, в том числе потому что это верхнеуровневый набор практик. DDD - это не фреймворк, когда нет опыта, его немного сложно применять. Тем не менее мы переводили на DDD работающие проекты, запускали с помощью нее новые — и у нас сложились некоторые практики и подходы.

Хотелось бы рассказать про те, что доказали у нас свою эффективность. Сегодня это будет стратегическое верхнеуровневое проектирование — о том, как разрабатывать программы с точки зрения моделей и требований. А в следующей части я расскажу про практики для работы с кодом и архитектурой, то есть более приближенные к разработке. Надеюсь, что вы сможете ими воспользоваться, а если вы еще не используете DDD у себя в проектах, то попробуете.

Читать далее
Всего голосов 18: ↑18 и ↓0 +18
Просмотры 5.4K
Комментарии 3

Atlas: Путешествие Dropbox от монолита на Python до managed-платформы

Блог компании Флант Анализ и проектирование систем *Проектирование и рефакторинг *Микросервисы *
Перевод

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

Чтобы всегда радовать пользователей, сервис Dropbox должен быть надежным и отзывчивым. С самого начала нам, как компании, приходилось масштабироваться. Сегодня нашими услугами пользуются более 700 миллионов зарегистрированных пользователей со всех уголков планеты. В общей сложности они ежесекундно генерируют минимум 300 тыс. запросов. Увы, системы, отлично подходившие для стартапа, перестали справляться с возросшей нагрузкой. Возникла насущная потребность разработать новую модель для внутренних систем и, конечно, придумать способ перехода на нее без риска угробить основной продукт в процессе.

В этой статье мы расскажем, как и почему разработали и развернули Atlas — платформу, реализующую основные преимущества сервис-ориентированной архитектуры (SOA) и при этом минимизирующую типичные издержки, связанные с владением сервисом.

Читать далее
Всего голосов 29: ↑28 и ↓1 +27
Просмотры 2.5K
Комментарии 0

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

Анализ и проектирование систем *Проектирование и рефакторинг *Развитие стартапа Производство и разработка электроники *Инженерные системы
Из песочницы

Давно читаю Хабр, но написать свою статью все не доходили руки. Точнее это больше ощущение, что выбранная тема может быть не интересна читателям, или у меня не получится красиво изложить мысли. Все же рискну рассказать про свой опыт разработки лабораторного оборудования с использованием подходов системного инжиниринга и концепции индустрия 4.0. Далее речь пойдет о моем проекте, который я решил сделать несколько лет назад.

Читать далее
Всего голосов 8: ↑6 и ↓2 +4
Просмотры 1.1K
Комментарии 4

Модульный монолит. Начало

Блог компании Dodo Engineering Анализ и проектирование систем *Проектирование и рефакторинг *Управление разработкой *
Перевод

Модульный монолит — это подход к проектированию приложений, который позволяет, с одной стороны, отложить во времени операционную сложность использования микросервисов, а с другой — избежать превращения монолитной системы в большой комок грязи. Сама идея модульности не нова и основана на давно известных принципах Separation of Concerns и Information Hiding. Но не так-то просто перейти от абстрактных принципов к пониманию, как их реально использовать на практике.

На Хабре не так много информации о модульных монолитах в целом и практически ничего о конкретных вариантах их реализации. Но об этом есть серия статей у Камиля Гржибека, автора проекта Modular Monolith with DDD. Сегодня поделюсь переводом первой из них.

Читать далее
Всего голосов 25: ↑21 и ↓4 +17
Просмотры 5.8K
Комментарии 9

Подробнее о нашей BI-системе в Домклик

Блог компании Домклик Разработка веб-сайтов *Проектирование и рефакторинг *Визуализация данных Развитие стартапа

Приветвую, не так давно вышла первая статья с общим описанием нашей самописной BI в Домклик. А сегодня хотелось бы подробнее поговорить про технический концепт этого инструмента. Если интересно, прошу под кат.

Читать далее
Всего голосов 16: ↑16 и ↓0 +16
Просмотры 2.1K
Комментарии 3

Зарубежный опыт: как избавиться от 80% кода, увеличить скорость разработки и уменьшить количество ошибок

Блог компании МойОфис Программирование *Проектирование и рефакторинг *IT-компании Микросервисы *
Перевод
Tutorial

Мы продолжаем знакомить читателей нашего блога с интересными международными публикациями. Ранее мы перевели материал с практическими советами по обучению для ИТ-специалистов, сегодня же коснемся темы абстракций – популярного и эффективного средства разработки.

Под катом тех– и тимлид Йонас Тулструп, один из разработчиков датского сервиса MobilePay, демонстрирует, что отказ от излишних абстракций позволяет писать более чистый код. А именно: существенно уменьшать его сложность, повышать читабельность и удобство поддержки. Обсуждаемые подходы основаны на широко известных принципах KISS («Делай проще») и YAGNI («Вам это не понадобится»), и применимы к большинству видов разработки ПО.

Обращаем ваше внимание, что позиция автора не всегда может совпадать с мнением МойОфис.

Читать далее
Всего голосов 27: ↑23 и ↓4 +19
Просмотры 24K
Комментарии 6

Рефакторинг Shiny приложений

Data Mining *Проектирование и рефакторинг *R *


Кадр из фильма «Формула любви», 1984


В жизненном цикле любого эксплуатируемого ПО наступает фаза, когда накопившийся набор изменений (CR) ложится неподъемным грузом на первичную архитектуру и вот тут наступает пора рефакторинга. Много книг понаписано на эту тему, есть специфика для различных языков. Ниже затронем только отдельные аспекты, которые могут оказаться полезным применительно к RStudio Shiny приложениям. Это ряд практических методов, трюков и нюансов, накопившихся при рефакторинге, как правило, чужого Shiny кода.


«Aliena nobis, nostra aliis» — Ежели один человек построил, другой завсегда разобрать сможет.


Это было в фильме, в первоисточнике несколько по-другому. Фраза Публилия Сира «Aliena nobis, nostra plus aliis placent» переводится как «Чужое нам, наше же в основном другим нравится».
Но кузнец Степан все равно дело говорит.


Является продолжением серии предыдущих публикаций.

Читать дальше →
Всего голосов 10: ↑10 и ↓0 +10
Просмотры 1.1K
Комментарии 0

Чат-боты — это больше, чем вы думали, и вот почему

Мессенджеры *Анализ и проектирование систем *Проектирование и рефакторинг *

В этой статье хочу поделиться некоторыми тезисами на тему создания чат-ботов и разработки подобных решений. Я работаю Python Software Engineer в Grid Dynamics. На статью меня, в том числе, натолкнуло участие во внутреннем проекте, который за полгода вырос, по сути, до мини-отдела по разработке ботов. Цель данного материала — посмотреть на чат-боты под другим углом: не как на разработку, которую может реализовать даже новичок в программировании, а как на функциональное и коммерчески выгодное решение. 

Читать далее
Всего голосов 11: ↑3 и ↓8 -5
Просмотры 8.1K
Комментарии 32

Выбор технологий для корпоративных приложений

Блог компании Maxilect Программирование *Анализ и проектирование систем *Проектирование и рефакторинг *Управление разработкой *

Я занимаюсь коммерческой разработкой ПО уже 14 лет. В основном работал над корпоративными или очень похожими на них проектами и успел оценить, какие технологии и решения работают хорошо, а какие не очень или даже откровенно плохо. 

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

Читать далее
Всего голосов 10: ↑9 и ↓1 +8
Просмотры 2.7K
Комментарии 9

Меняем стек на продакшене в сжатые сроки

Блог компании Конференции Олега Бунина (Онтико) Анализ и проектирование систем *Проектирование и рефакторинг *Kotlin *Управление продуктом *

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

Но давайте по порядку. Меня зовут Александр Клюшкин. Я работаю в Самокате и на нашем примере расскажу о сложностях перехода на новый стек. Зачем и кому это может понадобиться?

Читать далее
Всего голосов 18: ↑17 и ↓1 +16
Просмотры 1.9K
Комментарии 2

Приключение на 20 минут: о чём надо помнить, когда затеваешь рефакторинг

Блог компании Dodo Engineering Разработка веб-сайтов *.NET *Проектирование и рефакторинг *

История об одном баге, который превратил переход с .NET Core 3.1 на .NET 6 в «приключение на 20 минут», самописной библиотеке Dodo.Primitives.Uuid, которая помогла этот баг починить, и размышления о бренности бытия важности своевременного рефакторинга и его приёмах.

Читать далее
Всего голосов 29: ↑26 и ↓3 +23
Просмотры 10K
Комментарии 26

«Спасет ли системный анализ DC моторы» или «Системный анализ и верификация привода пропеллера на DC моторе в SimInTech»

Анализ и проектирование систем *Проектирование и рефакторинг *
Из песочницы
Tutorial

Похоже, что двигатели постоянного тока (ДПТ) уходят в прошлое. При производстве современного оборудования с управлением и обратными связями все меньше используют этот тип исполнительных механизмов. Их удел теперь – это работа в игрушках с нерегулируемыми параметрами? В чем же причина? Что нужно, чтобы ДПТ, как дешёвое решение, вернулись в производство?

Читать далее
Всего голосов 1: ↑1 и ↓0 +1
Просмотры 1.7K
Комментарии 18

Почему я против enum

Блог компании VK Анализ и проектирование систем *Разработка под iOS *Проектирование и рефакторинг *Swift *

Меня зовут Саша Терентьев, я из команды ленты ВКонтакте. В этой статье поделюсь мыслями о проблемах кода, где используются enum и сопоставления типов. Часто встречаю такой код в проектах, ресурсах, примерах. Мы обсуждали это с коллегами на внутреннем событии, и из моего доклада выросла эта статья.

Букв будет много. Но, думаю, материал пригодится широкому кругу разработчиков — и не только iOS. Примеры основаны на псевдо-Swift и написаны по мотивам использования UIKit. Но могут пригодиться для работы с разными платформами и в любой области, где возникают сопоставления с образцом, приведения типов, переборы множеств типов.

Читать далее
Всего голосов 55: ↑38 и ↓17 +21
Просмотры 37K
Комментарии 77

PHP на стероидах: Swoole in production

Высокая производительность *PHP *Программирование *Проектирование и рефакторинг *Разработка под e-commerce *

Представьте себе ситуацию, большой маркетплейс, 60 тыс. посетителей в сутки (600 тыс. просмотров) и это только веб, а с мобильного приложения, плюс еще 100 тыс уникальных посетителей. С точки зрения HTTP API запросов к PHP бекенду - это порядка 13 млн. запросов (в пиковых нагрузках ~300-400 RPS). И это всё (PHP only) обрабатывает сервер с 8 vCPU (ядрами) и 32 Gb RAM и самое главное, что сервер практически не напрягается (см. КДПВ).

Как это возможно?
Всего голосов 45: ↑45 и ↓0 +45
Просмотры 9.2K
Комментарии 12

Улучшаем дизайн React приложения с помощью Compound components

Блог компании Альфа-Банк JavaScript *Программирование *Проектирование и рефакторинг *ReactJS *
Из песочницы

Сегодня я хочу рассказать про один не очень популярный но очень классный паттерн в написании React приложений - Compound components.

Что это вообще такое

Compound components это подход, в котором вы объединяете несколько компонентов одной общей сущностью и общим состоянием. Отдельно от этой сущности вы их использовать не можете, тк они являются единым целым. Это как в BEM нельзя использовать E - элемент, отдельно от B - блока.

Самый наглядный пример такого подхода, который знают все фронты - это select с его option в обычном HTML.

Читать далее
Всего голосов 16: ↑15 и ↓1 +14
Просмотры 7.5K
Комментарии 9

Shared State для React. Часть 1

JavaScript *Анализ и проектирование систем *Проектирование и рефакторинг *ReactJS *TypeScript *
Tutorial

В данном цикле статей мы рассмотрим задачу синхронизации состояния react-приложения между окнами. В качестве подопытного у нас будет приложение на Electron, работающее в offline/online-режимах, которое также может запускаться в PWA-режиме.

Читать далее
Всего голосов 7: ↑7 и ↓0 +7
Просмотры 2.2K
Комментарии 2

Вклад авторов