Аннотация 2
ВВЕДЕНИЕ 3
1 Анализ предметной области 5
1.1 Основные концепции и терминология 5
1.2 Обзор существующих решений и технологий в области развертывания
приложений в облаке 7
2 Требования к системе 11
2.1 Функциональные требования 11
2.2 Нефункциональные требования 12
3 Проектирование системы 13
3.1 Обзор технологий и инструментов разработки 13
3.2 Архитектура системы 19
3.3 Разработка схемы развертывания 22
4 Разработка системы 26
4.1 Основные этапы реализации 26
4.2 Детальная информация о работе частей системы 28
5 Тестирование системы 37
5.1 Автоматизация развертывания системы 37
5.2 Развертывание системы у облачного провайдера Selectel 38
5.3 Тестирование функционала системы 41
ЗАКЛЮЧЕНИЕ 43
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ И ЛИТЕРАТУРЫ 45
В последние десятилетия наблюдается стремительное развитие информационных технологий, что приводит к постоянному изменению и усовершенствованию методов разработки и развертывания программного обеспечения. Одной из ключевых задач при создании программных продуктов является их развертывание и обеспечение стабильной работы в различных средах.
Развертывание приложений — процесс, в ходе которого приложение готовится и запускается на целевой платформе или инфраструктуре для пользователей. Системы развертывания позволяют автоматизировать процессы развертывания, обновления и масштабирования приложений, что является ключевым аспектом для обеспечения бесперебойной работы информационных систем.
Исторически развертывание приложений осуществлялось на локальных серверах, находящихся в инфраструктуре компании. Этот подход требовал значительных затрат на покупку и обслуживание оборудования. В процессе эксплуатации локальных серверов возникали проблемы масштабируемости и высокой стоимости модернизации оборудования, что затрудняло адаптацию к быстро меняющимся требованиям бизнеса.
С развитием интернет-технологий и облачных вычислений появилась возможность переноса вычислительных ресурсов в облачные среды. Одним из ключевых преимуществ облачного развертывания является гибкость и масштабируемость. Облачные платформы позволяют легко и быстро адаптировать ресурсы под текущие потребности бизнеса, что особенно важно в условиях переменных нагрузок.
Было принято решение разработать систему развертывания приложений в облаке. Разрабатываемая система будет иметь ряд преимуществ по сравнению с уже существующими решениями на рынке: повышенные требования безопасности, более гибкая настройка под запросы клиента, специализация для малого и среднего бизнеса. Вышеназванные преимущества будут раскрыты более подробно в следующих разделах работы.
Объект исследования - подходы к развертыванию и оркестрации приложений в облаке.
Предмет исследования - системы развертывания приложений в облаке.
Цель работы - разработка системы развертывания приложений в облаке, которая обеспечит гибкость, масштабируемость и высокую доступность, удовлетворяя современным требованиям бизнеса и техническим стандартам. В работе будут рассмотрены различные методы и инструменты облачного развертывания, проведен анализ их эффективности и предложены решения, способные оптимизировать процессы управления приложениями в облачной среде.
Задачи:
1. Изучить предметную область; способы развертывания приложений;
2. Разработать функциональные/нефункциональные требования системы;
3. Выбрать инструменты и технологии разработки;
4. Спроектировать архитектуру системы развертывания;
5. Разработать компоненты системы;
6. Протестировать систему.
Работа включает в себя обзор существующих технологий и решений, анализ требований и проектирование системы, процесс ее реализации, а также тестирование разработанной системы. Особое внимание будет уделено автоматизации развертывания приложений, а также самой системы.
В ходе выполнения данной работы была разработана система развертывания приложений в облаке, удовлетворяющая поставленным функциональным и нефункциональным требованиям. На основе анализа существующих технологий и решений были выбраны и интегрированы инструменты, такие как Terraform, Ansible, Podman, Nginx, и Certbot, обеспечивающие гибкость, надежность и безопасность системы.
Процесс разработки включал в себя следующие основные этапы:
1. Изучение предметной области и способов развертывания приложений;
2. Разработка функциональных и нефункциональных требований системы;
3. Выбор инструментов и технологий разработки;
4. Проектирование системы, определение архитектурных решений.
5. Разработка компонентов системы, включая API, Ansible роли и Terraform модули.
6. Тестирование функциональности системы, проверка
корректности выполнения запросов.
Результаты тестирования подтвердили, что система корректно выполняет создание и удаление виртуальных машин, развертывание и удаление приложений.
Кроме того, были учтены аспекты безопасности, такие как минимизация числа открытых сетевых интерфейсов, использование SSL- сертификатов для защиты данных, а также создание продуманной сетевой архитектуры. Это снижает риск возникновения уязвимостей и обеспечивает надежную работу системы.
В заключение, можно отметить, что цели и задачи, поставленные в начале работы, были успешно достигнуты. В дальнейшем возможно развитие системы, включая добавление новых функциональных возможностей и интеграцию с другими облачными провайдерами и инструментами.