Перейти к содержимому
    Оглавление · Тема 3

    Обновлено: 13 августа 2026 г. в 00:00

    Как выглядела разработка до фазы AI-assisted фазы

    hard

    Эволюция подходов: agile, devops, продуктовые практики и фокус на ценности.

    Источник

    Современные подходы к разработке ПО

    Оригинальная статья о том, как менялась разработка и что работает сегодня.

    Перейти на сайт

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

    Почему «код в лоб» не работает

    Если идеи сразу превращать в код, система быстро становится «спагетти»: сложно менять, сложно тестировать и страшно трогать. В прототипах это допустимо, но в продукте — приводит к техдолгу и остановке развития.

    Хаос чаще всего возникает из‑за неопытности, давления сроков и отсутствия проектирования. Чем больше команда и продукт, тем дороже становится исправление ошибок «в конце».

    Когда можно

    Прототипы и R&D: скорость важнее долгосрочной поддерживаемости.

    Когда нельзя

    Продукт и рост: нужна архитектура, качество и управляемая сложность.

    System Design Space

    Software Requirements (short summary)

    Разбор требований и атрибутов качества как основы инженерного проектирования.

    Перейти на сайт

    Проектирование: что делаем и как

    Проектирование делится на две части: требования и способы реализации. Это переводит команду от хаоса к системе.

    Функциональные требования описывают поведение, нефункциональные — атрибуты качества. Именно забытые нефункциональные требования чаще всего ломают систему на продакшене.

    • Функциональные требования: что система делает.
    • Нефункциональные требования: скорость, надежность, безопасность, масштаб.
    • Паттерны и фреймворки: как организовать код и зависимости.
    • Границы и интеграции: что внутри продукта, а что — внешние системы.

    System Design Space

    Clean Architecture (short summary)

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

    Перейти на сайт

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

    Логичное продолжение проектирования — архитектура. Чаще всего это слои (UI, бизнес‑логика, данные), а для борьбы со связанностью подходит «чистая архитектура».

    Слои важны не ради схемы, а ради управляемости: если границы размыты, возвращается тот самый «спагетти‑код», только в большем масштабе.

    Правило зависимостей

    Зависимости направлены внутрь: внутренние слои ничего не знают о внешних. Внешние детали не должны влиять на ядро.

    System Design Space

    Репликация и шардинг

    Компромиссы выбора моделей хранения, масштабирования и консистентности.

    Перейти на сайт

    Данные: от SQL к распределенным системам

    Эволюция хранения данных прошла путь от файловых систем к реляционным БД, затем к объектным хранилищам и распределенным вычислениям.

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

    • SQL и ACID для транзакций (OLTP).
    • OLAP и агрегаты для аналитики.
    • Object Storage и Big Data: MapReduce, Hadoop.
    • NoSQL с BASE и компромиссами CAP.

    System Design Space

    Стратегии декомпозиции

    Как переходить от монолита к сервисной архитектуре без потери управляемости.

    Перейти на сайт

    Архитектура решений

    Монолит — простой старт, SOA — тяжёлый enterprise, микросервисы — гибкость и скорость. Границы сервисов удобно проектировать через DDD, а cloud‑native и serverless упрощают эксплуатацию.

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

    12‑factor и cloud‑native

    Декларативные конфиги, переносимость, масштабирование и наблюдаемость.

    Serverless

    Функции как сервис, когда не нужно управлять серверами.

    System Design Space

    Infrastructure as Code

    Практики IaC и воспроизводимой инфраструктуры для зрелого delivery.

    Перейти на сайт

    Доставка и инфраструктура

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

    Deploy

    FTP → SSH → скрипты → CI/CD. Доставка стала автоматизированной и надежной.

    Инфраструктура

    Bare metal → VM → IaaS → контейнеры и K8s → PaaS и XaaS.

    System Design Space

    OWASP Top 10 в контексте System Design

    Типовые security-риски и шаблоны защиты, которые нужно встраивать в процесс.

    Перейти на сайт

    Качество и безопасность

    Контроль качества в конце процесса слишком дорог. Правильный подход — shift left и автоматизация, а для безопасности — DevSecOps.

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

    • QA подключается на требованиях и проектировании.
    • Пирамида тестов и рост автопроверок.
    • Безопасность встраивается в процесс, а не проверяется в конце.

    System Design Space

    Зачем нужны надёжность и SRE

    Практика SLO/SLI, error budget и операционной устойчивости для продуктовых систем.

    Перейти на сайт

    Надежность и данные

    SRE

    Операции как software‑проблема: доступность, задержки, производительность.

    DataOps

    Непрерывная интеграция данных, DWH, Data Lake и Data Mesh.

    SRE формализует надежность через SLO/SLI, а DataOps превращает данные в управляемый поток, без которого невозможны продуктовые решения и аналитика.

    Где углубиться: System Design Space

    Если хотите системно прокачать инженерные практики, используйте system-design.space как библиотеку по архитектуре, reliability, security, data и cloud-native подходам. Там собраны как базовые объяснения, так и практические главы с примерами.

    Что посмотреть в первую очередь

    - Software Requirements (short summary) — как формулировать требования и атрибуты качества.

    - Clean Architecture (short summary) — границы, зависимости и управляемая кодовая база.

    - Infrastructure as Code — воспроизводимая инфраструктура и устойчивый delivery.

    - OWASP Top 10 в контексте System Design — практический security-фокус.

    - Зачем нужны надёжность и SRE — SLO/SLI и эксплуатационная устойчивость.

    - Data Pipeline / ETL / ELT Architecture — DataOps и потоки данных в продакшене.

    Ключевая мысль

    Современная разработка — это не набор модных практик, а полный цикл: от требований и архитектуры до надежности, безопасности и данных.

    Итоги

    • Проектирование и архитектура защищают продукт от спагетти‑кода.
    • Данные и архитектура решений выбираются под тип нагрузки.
    • CI/CD и облака ускоряют доставку, но требуют культуры качества.
    • DevSecOps и SRE снижают риски в эксплуатации.
    • DataOps превращает данные в источник улучшений продукта.
    • Все практики работают вместе только при зрелом инженерном мышлении.

    Трекинг прохождения выключен. Включите его в настройках.

    Доказательство обучения

    Чтение — только начало. Перенесите идею в рабочий эксперимент и разберите результат.