Обновить
44.04

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

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

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

Что такое Архитектура ПО?

Уровень сложностиСредний
Время на прочтение15 мин
Охват и читатели4.9K

Всем привет!

Читая очередную книгу по архитектуре ПО, я в который раз столкнулся с новым определением того, что же это такое. И всё бы ничего — я уже как будто привык к этому, но буквально те же самые авторы давали совсем другое определение в предыдущей книге!

— Да сколько можно! — подумал я. И тут во мне проснулось любопытство: а сколько вообще таких определений от разных авторов? Есть ли какое-то общепризнанное мнение?

Как оказалось, нет — разные авторы, фреймворки и спецификации дают разные определения. SEI (Software Engineering Institute) даже составил документ около 10 лет назад со списком разных определений. Но в рамках исследования для этой статьи я понял, что и он неполный.

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

Читать далее

Новости

Теневое логирование через события — полное разъединение бизнес-логики и логирования в DI среде

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели6.1K

Привет, коллеги!

Хочу поделиться подходом к логированию, который радикально упрощает архитектуру и усиливает SOLID.

Сделал пример кода GitHub, чтобы показать как работает теневое логирование (shadow decoupled logging) через события C#.

Читать далее

«Области тьмы» ИТ: платформы управления данными

Уровень сложностиСредний
Время на прочтение14 мин
Охват и читатели5.1K

В эпоху цифровизации, Вы когда-нибудь задумывались, существуют ли способы значительно снизить затраты на разработку ИТ-решений? И речь не про жалкую экономию в 5-10%, а именно экономию в разы, когда от прототипа до ввода в промышленную эксплуатацию - достаточно несколько дней разработки. Не месяцы, не годы, а именно дни. Особенно это актуально для инжиниринговых, конструкторских или производственных компаний, которые по своей сути не являются разработчиками ИТ, но вынуждены здесь и сейчас обеспечивать собственные нужды различными ИТ-решениями.

Читать далее

Как мы мигрировали с Zeppelin и что из этого вышло. Часть 1. Рассылки

Уровень сложностиПростой
Время на прочтение11 мин
Охват и читатели8K

Для задач аналитики Zeppelin - это чуть ли не находка. Он может в одной книжке исполнять код на любом языке (был бы интерпретатор), выводить его в виде красивых табличек, графиков и в любом другом виде, который удобен. И на Хабре есть много статей, посвященных плюсом данного решения для задач аналитики.

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

И мы попали в зависимость от него. Панацея, которая должна была стать легким решением для (почти) любой задачи превратилась в наше проклятие. Из-за проблем с данной системой на нас приходило по 5-7 тикеров в неделю, а также потерей доверия к нашим сервисам.

Как мы с этим справились?

Скорость или частота? Проектируем печатную плату

Уровень сложностиСредний
Время на прочтение3 мин
Охват и читатели8.1K

Ко мне часто обращаются с вопросом: «У нас высокочастотная плата, помогите выбрать материал!» А начинаешь разбираться — и оказывается, что плата-то не высокочастотная, а высокоскоростная. Путаница в этих терминах — частая история, но она может дорого обойтись: заказать плату из дорогущего радиочастотного материала для цифрового интерфейса — это как отправиться в магазин за хлебом на спортивном Ferrari.

Давайте на пальцах разберем, в чем принципиальная разница и почему это важно для вашего проекта, кошелька и нервов.

Читать далее

Технический долг vs сроки: баланс при разработке госреестра

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели6.5K

Привет, я Андрей! Ну где ты был, ну открывай статью скорей :)

За технической инфой я обращался к команде разработчиков, в том числе к backend-разработчику Сергею Колеватову. Он пояснил мне за все технические штуки, а я уже поведаю вам подробнее.

В этот раз расскажу об опыте создания внутренней системы для госкомпании. Загвоздка, как всегда, была в сроках и ресурсах. А продукт нужен сразу порядочный. Готовый шаблон, Symfony Forms и «грязный» код. Выбор пал на скорость вместо качества — продукт запущен за 2 месяца, ноооо… мы получили «технический долг». Как к этому пришли и как решили проблему, расскажу прямо сейчас.

Читать далее

Архитектура как код

Время на прочтение13 мин
Охват и читатели9.1K

Всем привет! Меня зовут Сидоров Антон, я руководитель отдела технической архитектуры в департаменте сопровождения информационных технологий ПСБ. Моя команда занимается архитектурой инфраструктурных систем, и сегодня я хочу рассказать вам про наш первый опыт использования подхода «Архитектура как код»

Читать далее

Что читать и смотреть в 2026. Эпичная подборка для разрабов, лидов, CTO и архитекторов

Уровень сложностиСложный
Время на прочтение13 мин
Охват и читатели8.8K

По просьбе подписчика моего ТГ-канала публикую список источников для самоподготовки. Легендарные вещи, полностью изменившие мои взгляды на индустрию.

Читать далее

Единый принцип деления в архитектуре

Уровень сложностиСредний
Время на прочтение13 мин
Охват и читатели12K

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

Когда я стал архитектором я задавался вопросами: зачем же мы наплодили 200 микросервисов? стоит ли выделять новый или пора объединять?

Когда я стал руководителем я задавался вопросами: как разделить людей на команды разработки? стоит ли создавать новый отдел или расширить ответственность старого?

И всё это хотелось сделать оптимальным эффективным образом.

И я понял, что все эти вопросы сводятся к ряду единых принципов о том как делить, которые можно применять на любом уровне. И этим важным для себя осознанием, после 20 лет в разработке, я хочу поделиться.

Читать далее

ИИ как инструмент для создания реальных объектов: от генерации картинки к 3D-печатной игрушке

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели19K

Недавно в Марий Эл состоялась премьера балета «Снегурочка», где визуальные декорации были созданы с помощью ИИ: художник подготовил эскизы, а нейросети оживили их в динамичные проекции. Это показывает, как ИИ выходит за пределы цифрового контента и применяется для физических опытов — от сценических элементов до осязаемых объектов. Вдохновившись таким подходом, я решил протестировать полный цикл создания 3D-игрушки: от текстовой идеи до пластиковой фигурки жирафа. Но с акцентом на практичность — минимизируя ручной труд за счет ИИ, учитывая распространенные ошибки и глобальные тенденции.

В 2025–2026 годах мировые тренды в 3D-моделировании подчеркивают интеграцию AI для автоматизации дизайна и производства: от генеративных инструментов вроде Meshy AI и Tripo 3D, которые создают модели из изображений, до AI-оптимизации в CAD для снижения ошибок и ускорения итераций. Это делает процесс доступным не только для хобби, но и для прототипирования в разработке продуктов или образовании.

Читать далее

Рефакторинг и реинжиниринг легаси

Уровень сложностиСложный
Время на прочтение10 мин
Охват и читатели6.9K

Попадаете вы на остров.

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

Как и зачем делать рефакторинг и более глубокий реинжиниринг?

Разберемся.

Гексагональная архитектура в Rust: отвязываем бизнес-логику от Solana

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели9.6K

Представьте: вы строите сервис выдачи дипломов на Solana. Всё отлично, пока дело не доходит до тестов.

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

В этой статье я покажу, как мы решили проблему, используя async-trait и dyn Trait. Мы превратили интеграционные тесты длиной в минуты в юнит-тесты, которые проходят за миллисекунды.

Узнать решение

Январский рефакторинг: 7 дней, чтобы почистить Python веб‑проект

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели6.2K

Январь — самое удобное время разобрать завалы в проекте. Пол‑команды ещё в отпусках, pull‑реквестов меньше, product owner'ы только вспоминают, что планировали делать в этом году — можно спокойно пройтись по коду и навести порядок.

В этой статье пойдёт речь о нескольких косметических действиях, которые, с одной стороны, почти не затрагивают логику программы и не вызывают ненависти у тестировщиков, а с другой — делают код чуть приятнее и дают темы для обсуждения на бэкенд‑созвонах. Мы разложим импорты, перенесём логику из роутов в контроллеры, а из контроллеров — в репозитории и сервисы, избавимся от requirements.txt в пользу нормального менеджера зависимостей и включим mypy.

Читать далее

Ближайшие события

Ну всё, пора закапывать UTF-8

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели25K

Здравствуйте, меня зовут Дмитрий Карловский и я... серийный убийца устоявшихся стандартов. Сегодня я выследил и нанёс критический урон UTF-8. И сейчас я расскажу, как я его переиграл и уничтожил новым стандартом кодирования текста — Unicode Compact Format.

No, God! Please, No, NO!

Построение иерархии классов для множества объектов информационной модели

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели5.3K

Привет, Хабр!

ИТ-проекты – это далеко не только создание новых систем с нуля. Существенная часть специалистов занята поддержкой и сопровождением действующих систем. А когда в состав ИТ-системы добавляется новое ПО (или заменяется какой-то из её компонентов), актуальной задачей является перенос архивных данных и настройка взаимодействия нового софта с окружающим ландшафтом. При этом задачей-максимум является добавление новых свойств для системы, улучшающих пользовательский опыт или процессы администрирования и сопровождения. Ниже я расскажу, как мы провели классификацию объектов информационной модели при интеграции действующей системы расчета производственных показателей с внешней, вновь создаваемой системой управления НСИ.

Читать далее

PostgreSQL. Интервальный тип данных. Интеграция с Spring Data JPA

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели9K

В своей практике мы можем сталкиваться с хранением и поиском информации задаваемой в интревальном формате. Например: срок действия акций, тарифы на доставку и прочее. В статье мы подружим Spring JPA и Range Types.

Читать далее

MDUI: как отдать UI backend-разработчикам

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели8.2K

Как сократить Time-to-Market в 7 раз и научить бэкенд-разработчиков собирать страницы за 15 минут? В этой статье я делюсь опытом внедрения Meta-Driven UI в ERP-системе. Расскажу, как я «душила» легаси с помощью Strangler Fig Pattern, внедрила FSD-архитектуру на Vue 3 и почему Render-функции оказались эффективнее обычных шаблонов.

Читать далее

Как мы распилили монстр-сервис за месяц: опыт команды из 10 разработчиков

Время на прочтение3 мин
Охват и читатели6.9K

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

Мы решили провести «хирургическую операцию»: за один месяц силами выделенной команды из 10 человек полностью расчистить сервис, вынести из него 40 процессов и вернуть архитектуре прозрачность. В этой статье я расскажу, как мы поставили диагноз, спланировали операцию и справились с самыми болезненными моментами — от войны с конфигами до разрыва общих DTO.

Главный спойлер: результат превзошёл ожидания. Сервис стал быстрее, команды — автономнее, а система наконец-то обрела масштабируемость.

Читать далее

Мечтают ли Архитекторы об электроовцах?

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели9.2K

Было ли у вас озарение? Возникало ли ощущение вспышки, когда вы понимали, что нашли решение проблемы?

Знаменитая фраза «Эврика!» очень хорошо отражает суть этого ощущения.

Далее — мой отзыв о хайповой теме применения LLM в разработке ПО и всего, что с этим связано.

Читать далее

«У нас всё отлично»: как поверхностный аудит выявляет архитектурные риски на ранних этапах

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели9.5K

Мне довелось выступить техническим экспертом на бизнес-акселераторе Genesis: IT & Telecom в СибГУТИ.

Я был одним из немногих экспертов, чей фокус был не на технической реализации: архитектуре, коде, инфраструктуре. И почти каждая наша беседа начиналась с одного и того же диалога:...

Читать далее
1
23 ...

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