Проверочная № 4, курсовая работа
Формат проведения защиты работы
Работа выполняется заочно и все результаты загружаются в виде архива за несколько дней до очной защиты. Затем во время очной защиты студенту необходимо:
- Развернуть систему на компьютере в университете.
- Приложения системы должны быть работоспособны.
- Критических изменений в файлы конфигурации вносить запрещается.
- Представить разработанную конфигурацию.
- Показать сценарии работы каждой из систем.
- Показать сценарий работы, включающий совместную работу указанных систем.
- Предоставить документацию, описывающие шаги по развёртыванию и поддержке работы системы.
Все элементы будут влиять на финальную оценку по защите и курсу.
Контекст задачи
В настоящий момент можно выделить следующие стандартные средства по поддержке процесса разработки:
- трекеры задач;
- репозиторий систем контроля версий;
- система непрерывной интеграции изменений.
Трекеры задач нужны для планирования процесса разработки, отслеживания его прогресса. Хорошие системы позволяют модифицировать поток обработки задач в системе, чтобы отобразить особенности разработки ПО в конкретных компаниях или проектах.
Системы контроля версий позволяют организовать совместное редактирование исходного кода разными людьми, отслеживать изменения, которые были внесены. Некоторые системы также включают в себя функции по рецензированию кода перед его принятием в основные ветки.
Система непрерывной интеграции позволяет в автоматическом режиме запускать различные задачи: проверка исходного кода, компиляция проектов в бинарные файлы, выполнение автоматического тестирования ПО. Данные задачи обычно запускаются либо по изменениям исходного кода в системе контроля версий, либо по расписанию.
Признаком хорошей интеграции систем является возможность изменения состояния в одной системе по результатам действия в другой. К таким действиям можно отнести:
- Автоматический запуск проверки исходного кода, когда поступают новые наборы изменений в систему контроля версий.
- Перевод статуса задач между различными состояниями, когда наборы изменений поступают в систему контроля версий, когда заканчивается автоматическое выполнение задачи в системе непрерывной интеграции.
- Запуск задач в системе непрерывной интеграции, когда происходит изменения в системе контроля версий.
Ваша задача продемонстрировать не только установку данных систем с помощью Docker, но и их успешную интеграцию друг с другом.
Общее описание задачи
Вам необходимо создать среду для поддержки процесса разработки ПО в небольшой компании. Среда технически должна функционировать на Docker-технологиях.
Принципиальный подход к развёртыванию финальной версии системы:
- Установить на компьютер Docker и Docker Compose.
- Скопировать на компьютер (склонировать репозиторий) разработанную конфигурацию.
- Отредактировать конфигурационные файлы, указав там параметры развёртывания:
- секретные ключи;
- название домена для работы системы.
- Запустить конфигурацию с помощью Docker Compose.
- Выполнить первоначальную настройку.
После этого все службы поддержки разработки ПО должны быть запущены.
Необходимо также разработать процесс резервного копирования данных системы. Он должен быть максимально автоматизирован, т.е. для создания резервной копии для всей конфигурации пользователю необходимо выполнить только одно действие. Данный скрипт может быть написан на Ruby.
Помимо самой конфигурации необходимо также подготовить отчёт о том как данная конфигурация устроена. В отчёте должны быть отражены следующие моменты:
- Описана общая структура конфигурации Docker Compose и назначение отдельных её элементов.
- Для каждой службы должно быть приведено описание Dockerfile, который был использован для создания контейнера.
- Рекомендуется использовать официальные образы соответствующих систем.
- Необходимо получить официальный Dockerfile, использованный для сборки контейнера, и описать его содержимое.
- Если настройку развёртывания необходимо проводить за пределами конфигурации Docker Compose, тогда надо также предоставить эту информацию. Также необходимо обосновать использование внешних по отношению к Docker Compose средств настройки среды.
- Пример настройки проекта, включающего в себя:
- Создание проекта в системе управления задачами.
- Создание репозитория в системе управления репозиториями.
- Создание задач проверки исходного кода в системе непрерывной интеграции.
- Связывание систем друг с другом для выполнения автоматических действий.
- Руководство по использованию инструмента для создания резервных копий.
- Руководство по восстановлению состояния системы из резервной копии.
Варианты средств поддержки разработки ПО
Системы управления задачами
Системы управления репозиториями
Системы непрерывной интеграции:
В качестве задачи необходимо выполнить интеграцию минимум двух типов систем из списка, приведённых выше. Если будет выполнена корректная интеграция трёх систем, то это будет дополнительно учтено.
Вы можете предложить альтернативные системы для каждого из разделов, но они должны быть одобрены преподавателем. Потенциально можно предложить другие системы, которые можно использовать в процессе разработки ПО.
Простые системы
Вместо комбинирования системы из различных компонентов можно взять полнофункциональную систему и развернуть её. При использовании данного подхода студент может рассчитывать только на оценку «хорошо» по данному курсу.
Количество возможных вариантов защиты с использованием «простых систем» ограничено тремя людьми.
Технические требования к реализации
Вы должны предоставить архив или репозиторий, включающий в себя следующие элементы:
- В корне должен располагаться файл
docker-compose.yml
, с помощью которого необходимо осуществлять настройку системы. - Для каждого используемого средства необходимо создать каталог. В каждом из каталогов должны быть:
Dockerfile
для формирования образа данного средства.- Дополнительные файлы, которые нужны для формирования образа средства.
- Эти каталоги не должны содержать конфигурации, связанной с развёртыванием, а только со сборкой образа.
- В корне проекта должен располагаться каталог
doc
, содержащий документацию о проекте. - В корне проекта должен располагаться каталог
backup
, содержащий скрипты для создания резервных копий. - В корне проекта может располагаться каталог
config
, в котором могут располагаться файлы конфигурации, связанные с конкретным развёртыванием системы.
Dockerfile
могут быть написаны вами или взяты с hub.docker.com. В любом случае их структура должна быть задокументирована.
Порядок проведения защиты
- Каждому студенту предоставляется доступ к машине с установленным Debian 10.
- За 2 часа необходимо выполнить развёртывание разработанной конфигурации и подготовиться к презентации. Для развёртывания следует использовать конфигурации, присланные в качестве ответа на Moodle.
- По истечении этого времени или по готовности студенту необходимо провести демонстрацию своего решения. Она должна включать в себя:
- Описание конфигурации Docker Compose с кратким рассказом о структуре Docker-файлов.
- Демонстрацию работы каждого из проектов.
- Демонстрацию по настройке связи между проектами.
- Демонстрацию работы скриптов по созданию резервных копий важных данных.
Демонстрация должна быть рассчитана на 10 минут.
Для того, чтобы участвовать в защите, необходимо прислать публичный SSH-ключ, который будет использоваться для доступа к виртуальной машине, на почту преподавателю.