User Tools

Site Tools


tech:dssd

This is an old revision of the document!


Технологии разработки программного обеспечения

DevOps-вариант курса

Содержание дисциплины

Образовательная программа: “Математическое обеспечение и администрирование информационных систем” Курс: 3, Бакалавриат Акцент: Интеграция современных практик DevOps и CI/CD

Тема 1. Современные тенденции разработки ИС. Введение в DevOps

  • Понятие ИС: от монолита к сервисам и микросервисной архитектуре.
  • Эволюция подходов к разработке: от Waterfall к Agile и DevOps.
  • Основные современные тенденции: Cloud-Native, Infrastructure as Code (IaC), Shift-Left.
  • Определение DevOps: культура, практики, инструменты. Три пути DevOps (Flow, Feedback, Learning).
  • Факторы, влияющие на развитие технологий (скорость, качество, стоимость, сложность) и ответ DevOps на них.
  • Виды требований в DevOps-контексте: функциональные, нефункциональные, сквозные (reliability, performance, scalability).
  • Показатели эффективности проекта (DORA Four Key Metrics): Deployment Frequency, Lead Time, MTTR, Change Failure Rate.

Лекция 1.

Лабораторная 1

Цель - изучить/вспомнить процесс разработки программ с использованием тестов (test-driven development)

Задача - разработать простую программу при помощи цикла “тест → реализация теста” (как в экстремальном программировании).

  • На каждом шаге создавать коммит гит.
  • Использовать gitverse от Сбера Или github.
  • Программа мб старая, тогда на новом для вас языке программирования, либо новая программа.
  • Коммит делать после реализации каждого теста и реализации тестируемой функциональности. Если забыли вдруг их разделить ничего страшного.
  • В проекте (лабы) сделать папку doc, где на markdown пишите садержательную часть отчета
    1. требования к продукту, список тестов, реализованных функций, примеры и замечания какие-то.
    2. Добавить раздел “Заключение” в отчет.

Тема 2. Жизненный цикл ПО в эпоху DevOps

  • Этапы жизненного цикла: от классического каскада к бесконечному циклу DevOps (Plan, Code, Build, Test, Release, Deploy, Operate, Monitor).
  • Итеративная и инкрементальная модели как основа для Agile.
  • Гибкие методологии (Agile, Scrum, Kanban) как культурный фундамент DevOps.
  • Методология CI/CD (Continuous Integration / Continuous Delivery): принципы, преимущества, инструменты.
  • Конвейер поставки (Pipeline) как центральная метафора и артефакт разработки.

Тема 3. Планирование и управление проектами с учетом DevOps

  • Структура затрат в DevOps: инвестиции в автоматизацию (CAPEX) vs операционные расходы (OPEX).
  • Управление сложностью: закон Конвея, микросервисы, стандартизация.
  • Метрики DevOps (DORA) и их использование для управления процессом.
  • Модель оценки трудоемкости COCOMO II: как практики DevOps влияют на факторы масштаба.
  • Автоматизация проектирования: от САПР ПО к Infrastructure as Code (Terraform, Ansible) и Configuration as Code.

Тема 4. Обеспечение качества и хранение данных в DevOps

  • Сдвиг качества влево (Shift-Left Testing): интеграция тестирования на ранние этапы ЖЦ.
  • Автоматизированное тестирование: виды (unit, integration, e2e), инструменты, место в CI/CD-конвейере.
  • Системы отслеживания ошибок (Jira, GitLab Issues): интеграция с инструментами разработки.
  • Quality Assurance vs Quality Engineering: эволюция роли.
  • Эффективное хранение и обработка данных в микросервисной архитектуре: API, кэширование, управление состоянием.

Тема 5. Коллективная работа и контроль версий (как основа DevOps)

  • Системы контроля версий (Git): Everything as Code (код, конфиги, инфраструктура).
  • Модели ветвления: GitFlow vs Trunk-Based Development для CI.
  • Интегрированные платформы (GitLab, GitHub): управление задачами, кодом и конвейерами.
  • Системы совместной работы с документацией (Confluence, Wiki): живая документация.
  • Средства общения и интеграции (Slack, Teams): оповещения о событиях в конвейере.

Тема 6. Организация труда в DevOps-культуре

  • Типизация специалистов: стирание граней между Dev, Ops и QA. Роль DevOps-инженера.
  • Культура взаимной ответственности (You build it, you run it).
  • Проблема организационных silos (изолятов) и переход к кросс-функциональным командам.
  • Закон Конвея в DevOps: как архитектура системы отражает структуру коммуникации автоматизированных команд.
  • Обзор организационных моделей (матричная, главного хирурга).

Тема 7. Управление качеством и стандарты в непрерывной поставке

  • Характеристики качества ПО: надежность (Reliability), сопровождаемость (Maintainability), удобство эксплуатации (Operability).
  • Методики повышения качества: автоматизированное тестирование, статический анализ (SAST), непрерывный код-ревью.
  • Главный закон контроля качества и его применение через автоматизацию.
  • Стандарты: эволюция от CMM к стандартам, описывающим DevOps-практики (ISO/IEC 27001, 25010).

Тема 8. Документирование и сопровождение в автоматизированном процессе

  • Документирование как живой процесс: документация рядом с кодом (в репозитории).
  • Автоматизация документирования: генерация API-документации (Swagger/OpenAPI).
  • ЕСПД в условиях Agile/DevOps.
  • Основные задачи сопровождения: автоматизация обновлений и исправлений (патчи через CI/CD).
  • Условия прекращения сопровождения: архивация проекта вместе с его конвейерами.

Тема 9. Реинжиниринг и модернизация в контексте DevOps

  • Реинжиниринг как основа для внедрения DevOps: модернизация legacy-систем для автоматизации.
  • Стратегии модернизации: Rehost (подъем и сдвиг), Refactor, Rearchitect, Rebuild.
  • Инструменты для контейнеризации (Docker) и оркестрации (Kubernetes) как ключевые технологии для переноса legacy-приложений.

Тема 10. Гибкие методологии и практики DevOps

  • Методология гибкой разработки (Agile) как культурная основа DevOps.
  • Экстремальное программирование (XP): практики (TDD, рефакторинг, CI) как техническая основа DevOps.
  • Обзор практик DevOps:
    • Continuous Integration (CI): автоматическая сборка и тестирование.
    • Continuous Delivery (CD): готовность к релизу в любой момент.
    • Infrastructure as Code (IaC): управление инфраструктурой через код.
    • Мониторинг и обратная связь (Monitoring & Logging): использование метрик для принятия решений.
    • Безопасность (DevSecOps): интеграция безопасности в процесс.

Лекция 1. Обзор дисциплины с точки зрения DevOps

Литература

Оформленный по ГОСТу список литературы для обновленного содержания курса. Список составлен в соответствии с ГОСТ 7.1-2003 “Библиографическая запись. Библиографическое описание. Общие требования и правила составления” и ГОСТ Р 7.0.100-2018 “Библиографическая запись. Библиографическое описание” (используются заглавия описания).

### Список литературы

Основная литература

1. Бек, К. Экстремальное программирование: разработка через тестирование / К. Бек ; пер. с англ. С. А. Черник. – Санкт-Петербург : Питер, 2002. – 224 с. – ISBN 5-318-00295-9. 2. Ким, Д. Феникс. Проект по DevOps. Как помочь бизнесу побеждать : [роман] / Джин Ким, Джез Хамбл, Патрик Дебуа ; пер. с англ. А. А. Слинкина. – Москва : Альпина Паблишер, 2019. – 362 с. – ISBN 978-5-9614-2252-8. 3. Хамбл, Д. Непрерывное развертывание ПО. Автоматизация процессов сборки, тестирования и внедрения / Джез Хамбл, Дэвид Фарли ; пер. с англ. С. А. Черник, А. В. Краснощекова. – Москва : Диалектика, 2021. – 496 с. – ISBN 978-5-907203-84-8. 4. Ким, Д. Ускоряйтесь. Наука DevOps: как создавать и масштабировать высокопроизводительные цифровые организации / Джин Ким, Джез Хамбл, Николь Форсгрен ; пер. с англ. А. А. Слинкина. – Москва : Альпина Паблишер, 2020. – 348 с. – ISBN 978-5-9614-3416-3. 5. Лимончелли, Т. DevOps для императивных организаций / Томас Лимончелли, Дженнифер Дэвис, Кейтлин Нолан ; пер. с англ. А. В. Логуна. – Москва : Диалектика, 2022. – 384 с. – ISBN 978-5-907496-17-1.

Дополнительная литература

6. Блэк, Р. Ключевые процессы тестирования. Планирование, подготовка, проведение, совершенствование / Р. Блэк ; пер. с англ. А. В. Логуна. – Москва : Лори, 2006. – 728 с. – ISBN 5-85582-287-2. 7. Брукс, Ф. Мифический человеко-месяц, или Как создаются программные системы / Ф. Брукс ; пер. с англ. С. А. Черник, Т. В. Логуновой. – Санкт-Петербург : Символ-Плюс, 2019. – 336 с. – ISBN 978-5-93286-208-9. 8. Ван Вугт, С. Основы Linux. Руководство для начинающих / С. ван Вугт ; пер. с англ. А. В. Журавлева. – Москва : ДМК Пресс, 2023. – 264 с. – ISBN 978-5-93700-169-1. 9. Дасмахапатра, К. Kubernetes для DevOps. Развертывание, запуск и масштабирование в облаке / К. Дасмахапатра ; пер. с англ. А. В. Логуна. – Москва : Диалектика, 2022. – 448 с. – ISBN 978-5-907496-01-0. 10. Копленд, Л. Экстремальное программирование: разработка через тестирование / Л. Копленд ; пер. с англ. С. А. Черник. – Москва : Вильямс, 2005. – 320 с. – ISBN 5-8459-0776-3. 11. Таненбаум, Э. Современные операционные системы / Э. Таненбаум, Х. Бос ; пер. с англ. А. В. Логуна, Т. В. Логуновой. – 4-е изд. – Санкт-Петербург : Питер, 2015. – 1120 с. – ISBN 978-5-496-01395-7. 12. Альтшуллер, Г. С. Найти идею. Введение в ТРИЗ – теорию решения изобретательских задач / Г. С. Альтшуллер. – 3-е изд. – Москва : Альпина Паблишер, 2021. – 402 с. – ISBN 978-5-9614-7350-6.

Онлайн-документация и стандарты

13. GitLab CI/CD Documentation : [официальная документация] GitLab. – URL: `https://docs.gitlab.com/ee/ci/` (дата обращения: 25.05.2024). 14. Kubernetes Documentation : [официальная документация] The Kubernetes Authors. – URL: `https://kubernetes.io/docs/` (дата обращения: 25.05.2024). 15. Terraform by HashiCorp Documentation : [официальная документация] HashiCorp. – URL: `https://developer.hashicorp.com/terraform/docs` (дата обращения: 25.05.2024). 16. Единая система программной документации (ЕСПД). Стандарты: ГОСТ 19.*, ГОСТ 34.* Федеральное агентство по техническому регулированию и метрологии. – Москва : Стандартинформ. – (Серия стандартов).

Электронные образовательные и отраслевые ресурсы

17. Хабрахабр : [отрасловой портал] Habr.com. – Разделы: «DevOps», «Разработка ПО». – URL: `https://habr.com/ru/flows/develop/` (дата обращения: 25.05.2024). 18. Stepik : [образовательная платформа] Stepik.org. – Курсы: «Введение в Linux», «Основы Git» и др. – URL: `https://stepik.org/catalog` (дата обращения: 25.05.2024).

tech/dssd.1757388436.txt.gz · Last modified: by eugeneai