This is an old revision of the document!
Table of Contents
Технологии разработки программного обеспечения
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
Цель - изучить/вспомнить процесс разработки программ с использованием тестов (test-driven development)
Задача - разработать простую программу при помощи цикла “тест → реализация теста” (как в экстремальном программировании).
- На каждом шаге создавать коммит гит.
- Использовать gitverse от Сбера Или github.
- Программа мб старая, тогда на новом для вас языке программирования, либо новая программа.
Коммит делать после реализации каждого теста и реализации тестируемой функциональности. Если забыли вдруг их разделить ничего страшного.
В проекте (лабы) сделать папку doc, где на markdown пишите садержательную часть отчета - требования к продукту, список тестов, реализованных функций, примеры и замечания какие-то. Заключение.
Тема 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).
