Данный проект был создан как итоговый проект курса Yandex по бэкенд разработке на Go за 2 недели участниками команды 16: rem-aster s0vunia Klef99
EasyDeploy — это решение для автоматизированного развертывания приложений на вашем собственном VPS. Наш продукт позволяет пользователям без технических навыков легко и быстро развертывать различные решения, используя минимальные усилия.
В демонстрации представлены решения игрового сервера по популярной игре и персонального CRM
-
Клонируйте репозиторий:
git clone <URL вашего репозитория>
-
Перейдите в директорию проекта:
cd easydeploy -
Установите нужные конфиги
cd backend mv .env.dist .envcd runner mv .env_example .env -
Запустите приложение с помощью Docker Compose:
docker-compose up -d --build
Эта команда создаст и запустит контейнеры в фоновом режиме, используя конфигурацию из файла docker-compose.yml.
Наш API предоставляет следующие возможности:
-
Создание задачи на деплой: Позволяет создавать задачи для развертывания приложений на сервере.
- Метод: POST
- Путь:
/deploy/:id - Описание: Создание задачи под номером id на деплой.
- Параметры:
ssh_address: Адрес SSH для подключения.ssh_key: Ключ SSH для аутентификации.extra_vars: Дополнительные переменные для настройки.
- Возвращает: Номер задачи для получения статуса
-
Получение статуса деплоя: Позволяет отслеживать статус развертывания.
- Метод: GET
- Путь:
/deploy/:id - Описание: Получение статуса задачи деплоя с номером id.
- Возвращает: Cтатус задачи
-
Получение доступных решений: Позволяет получить список доступных для развертывания решений.
- Метод: GET
- Путь:
/solutions - Описание: Получение доступных решений.
- Возвращает: Доступные решения с их id
-
Получение информации одного решения: Позволяет получить данные одного решения.
- Метод: GET
- Путь:
/solution/:id - Описание: Получение названия и описания решения с номером id.
- Возвращает: название и описание
EasyDeploy построен на современной архитектуре, которая обеспечивает гибкость, масштабируемость и высокую производительность. Основные компоненты системы включают:
-
Веб-интерфейс (WebApp на Go):
- Реализация: Написан на языке Go, обеспечивает высокую производительность и низкое потребление ресурсов.
- Функциональность: Предоставляет пользователям удобный интерфейс для взаимодействия с системой через браузер.
- Плюсы:
- Высокая скорость работы благодаря компиляции Go.
- Простота развертывания и поддержки.
-
Reverse Proxy (Traefik):
- Реализация: Использует Traefik для маршрутизации HTTP и gRPC запросов.
- Функциональность: Управляет балансировкой нагрузки.
-
gRPC сервер:
- Реализация: Обрабатывает запросы от web app.
- Функциональность: Реализует высокопроизводительные gRPC-сервисы для управления процессами развертывания.
-
Сервис развертывания:
- Реализация: Использует Ansible для автоматизации развертывания приложений на серверах пользователей.
- Функциональность: Выполняет задачи развертывания, подключаясь к серверам.
-
База данных (PostgreSQL):
- Реализация: Использует PostgreSQL для хранения данных.
- Функциональность: Хранит информацию о пользователях, задачах развертывания и доступных решениях.
-
Мониторинг и логирование с помощью Jaeger и Prometheus:
- Реализация: Включает инструменты для отслеживания состояния системы и логирования событий.
- Функциональность: Позволяет администраторам анализировать производительность системы.
Эта архитектура обеспечивает надежное и эффективное развертывание приложений, минимизируя необходимость в технических знаниях со стороны пользователей, и поддерживает высокую производительность.
- Функционал сообщества: аккаунты, предложение сервисов от пользователей, обратная связь
- Функционал развертки: дополнительные поля и настройки отдельных решений
- Улучшение доступности: перевод на русский, blue-green deployment
- Улучшение безопасности: шифрование, поддержка https, сессии
- Удобство разработки: доработка ci/cd, покрытие интеграционными и нагрузочными тестами
- Продвижение: SEO, брендинг