Skip to content
This repository was archived by the owner on Dec 23, 2024. It is now read-only.

rem-aster/easydeploy-v0

Repository files navigation

EasyDeploy

Информация о данном проекте

Данный проект был создан как итоговый проект курса Yandex по бэкенд разработке на Go за 2 недели участниками команды 16: rem-aster s0vunia Klef99

Описание проекта

EasyDeploy — это решение для автоматизированного развертывания приложений на вашем собственном VPS. Наш продукт позволяет пользователям без технических навыков легко и быстро развертывать различные решения, используя минимальные усилия.

В демонстрации представлены решения игрового сервера по популярной игре и персонального CRM

Локальная установка и настройка

  1. Клонируйте репозиторий:

    git clone <URL вашего репозитория>
  2. Перейдите в директорию проекта:

    cd easydeploy
  3. Установите нужные конфиги

    cd backend
    mv .env.dist .env
    cd runner
    mv .env_example .env
  4. Запустите приложение с помощью Docker Compose:

    docker-compose up -d --build

Эта команда создаст и запустит контейнеры в фоновом режиме, используя конфигурацию из файла docker-compose.yml.

API

Наш 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 построен на современной архитектуре, которая обеспечивает гибкость, масштабируемость и высокую производительность. Основные компоненты системы включают:

  1. Веб-интерфейс (WebApp на Go):

    • Реализация: Написан на языке Go, обеспечивает высокую производительность и низкое потребление ресурсов.
    • Функциональность: Предоставляет пользователям удобный интерфейс для взаимодействия с системой через браузер.
    • Плюсы:
      • Высокая скорость работы благодаря компиляции Go.
      • Простота развертывания и поддержки.
  2. Reverse Proxy (Traefik):

    • Реализация: Использует Traefik для маршрутизации HTTP и gRPC запросов.
    • Функциональность: Управляет балансировкой нагрузки.
  3. gRPC сервер:

    • Реализация: Обрабатывает запросы от web app.
    • Функциональность: Реализует высокопроизводительные gRPC-сервисы для управления процессами развертывания.
  4. Сервис развертывания:

    • Реализация: Использует Ansible для автоматизации развертывания приложений на серверах пользователей.
    • Функциональность: Выполняет задачи развертывания, подключаясь к серверам.
  5. База данных (PostgreSQL):

    • Реализация: Использует PostgreSQL для хранения данных.
    • Функциональность: Хранит информацию о пользователях, задачах развертывания и доступных решениях.
  6. Мониторинг и логирование с помощью Jaeger и Prometheus:

    • Реализация: Включает инструменты для отслеживания состояния системы и логирования событий.
    • Функциональность: Позволяет администраторам анализировать производительность системы.

Эта архитектура обеспечивает надежное и эффективное развертывание приложений, минимизируя необходимость в технических знаниях со стороны пользователей, и поддерживает высокую производительность.

Возможные дальнейшие улучшения системы:

  • Функционал сообщества: аккаунты, предложение сервисов от пользователей, обратная связь
  • Функционал развертки: дополнительные поля и настройки отдельных решений
  • Улучшение доступности: перевод на русский, blue-green deployment
  • Улучшение безопасности: шифрование, поддержка https, сессии
  • Удобство разработки: доработка ci/cd, покрытие интеграционными и нагрузочными тестами
  • Продвижение: SEO, брендинг

About

Yandex Golang Backend Course Final Project Archive

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors