GBteammates / OnlineShopBackend

MIT License
0 stars 2 forks source link

GitHub Workflow Status GitHub language count GitHub top language GitHub code size in bytes GitHub repo file count GitHub repo size GitHub GitHub contributors GitHub last commit

Описание

Бэкенд сервис для небольшого онлайн магазина, написанный на языке программирования Golang. Проект представляет собой MVP в виде монолита. Функциоанльность реализована в виде REST API. В связи с простотой и распространенностью, широким функционалом, а также потому что большинство контрибуторов уже ранее работали с ним, в качестве роутера был выбран gin-gonic/gin. В будущем при увеличении нагрузки возможен переход на более производительные роутеры, например fasthttp. По тем же причинам в качестве основной СУБД для хранения данных сервиса была выбрана реляционная СУБД Postgresql. В текущей реализации возможностей данной СУБД достаточно, большинство контрибуторов знакомы с этой базой данных, что позволило ускорить процесс разработки. Для увеличения отзывчивости сервиса реализован кэш на основе key-value базы данных Redis. Кэш используется в наиболее частых и тяжелых операциях - таких как выведение списка категорий и товаров. Для логирования командой был выбран логгер zap за его широкий функционал, высокую скорость работы и понятную документацию. Для мониторинга сервиса используется связка из контейнеров prometheus для сбора метрик и grafana для их отображения. При разработке сервиса по возможности применялись принципы чистой архитектуры. Реализованы юнит тесты для большинства систем и интеграционные тесты базы данных.

Принципиальная схема:

Функционал

Для пользователей без прав администратора, в том числе не вошедших в систему:

Для вошедших в систему пользователей, не обладающих правами администратора:

Для пользователей, вошедших в систему с правами администратора:

Авторизация на сервисе осуществляется с помощью JWT токенов. Кэш создается при запуске сервиса, также при запуске создаются права пользователя и админа и создается пользователь с правами администратора. Данные для создания администратора задаются через переменные окружения. По умолчанию это admin@mail.ru и 12345678. Завершение работы сервиса организовано с использованием принципов graceful shutdown.

Благодаря пользователю ZavNatalia практически весь функционал данного сервиса можно удобно протестировать с помощью графического интерфейса

Документирование сервиса осуществляется с помощью библиотеки swaggo.

Минимальные требования для запуска сервиса:

Инструкция по запуску:

  1. Переходим в папку, в которой планируем разместить исходные файлы
  2. Клонируем репозиторий, для чего вводим в командную строку команду git clone https://github.com/GBteammates/OnlineShopBackend.git
  3. Для запуска тестов вводим в командной строке команду make test
  4. Для запуска с графическим интерфейсом на ОС Windows вводим в командную строку команду make up-win, после окончания процесса установки и сборки переходим в любой удобный браузер и в адресной строке вводим http://localhost:3000, для просмотра данных мониторинга вводим в адресной строке браузера http://localhost:3001, попадаем на страницу входа в Grafana. По умолчанию логин admin пароль admin, после первого ввода будет предложено сменить. Можно сменить или пропустить.
  5. Для запуска с графическим интерфейсом на ОС Ubuntu вводим в командную строку команду make up-lin, после окончания процесса установки и сборки переходим в любой удобный браузер и в адресной строке вводим http://localhost:3000, для просмотра данных мониторинга вводим в адресной строке браузера http://localhost:3001, попадаем на страницу входа в Grafana. По умолчанию логин admin пароль admin, после первого ввода будет предложено сменить. Можно сменить или пропустить.
  6. Для запуска без графического интерфейса вводим в командной строке make up или, если утилита make не установлена, вводим docker-compose up -d
  7. После окончания процесса скачивания, создания и запуска необходимых контейнеров можно перейти в браузер и ввести в адресной строке http://localhost:8000/docs/swagger/index.html, откроется страница с графическим интерфейсом документации по спецификации swagger, на которой можно протестировать основные функции сервиса. Также можно использовать приложение postman или использовать команды curl.

Для остановки сервиса наберите make down или docker-compose down.

Сервис запущен по адресу: http://cozydragon.online/

Сервис распространяется по лицензии MIT.

Видео: