Skip to content

Konkin-Ivan/message_queues

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

About Project

Api users

Required

  • PHP >= 8.1
  • Composer >= 2
  • make >= 4

Install and start project

  • Необходимо добавить строчку в файле /etc/hosts 127.0.0.1 laravel-docker.ru
  • Необходимо выполнить в корне проекта make setup

Tests and lint

  • make lint - запуск codeSniffer
  • make lint-fix - запуск исправления codeSniffer
  • make test - запуск тестов
  • test-coverage - запуск тестов с покрытием

Описание

Используемые технологии

  • Docker 20.10.22
  • PHP 8.1.1-fpm-alpine
  • Nginx stable-alpine
  • Redis 6-alpine
  • PostgreSQL postgres:13-alpine

Задание

Необходимо реализовать систему на фреймворке Laravel с использованием очереди сообщений.

Система по приему заявок на создание/регистрацию пользователей от “сторонних” систем. Система должна быть реализована на фреймворке Laravel состоять из двух основных модулей. Задача первого модуля - принимать заявки на создание пользователей и передавать их на асинхронное исполнение второму модулю через встроенный брокер очередей Laravel и отвечать инициатору создания в синхронном режиме только после того как пользователь будет создан. Задача второго модуля - принимать сообщения-заявки из очереди - и создавать пользователя в реляционной БД.

Модуль по приему заявок должен предоставлять REST API для выполнения следующих операций:

  • Создание пользователя
  • Получения и информации о ранее созданном пользователе по ID Обе операции должны выполняться асинхронно (модулем 2), однако ответ системе-инициатору должен выдаваться в синхронном режиме (запрос-ответ).

Минимально необходимая структура объекта “Пользователь” на уровне БД:

  • ID
  • Логин
  • Пароль
  • Фамилия
  • Имя
  • Дата регистрации

Нефункциональные требования: Приложение должно иметь документированный REST интерфейс (OpenAPI/Swagger). Приложение должно быть прислано в виде архива (или ссылки на гитхаб) с инструкциями по сборке и запуску.

Большим плюсом будет: ​Наличие docker-compose скрипта для сборки и запуска приложения. Наличие unit и интеграционных тестов, а также сопроводительного текста в свободной форме, аргументирующего те или иные моменты, касающиеся деталей реализации.

Функциональность

Программа принимает данные от любого клиента по HTTP протоколу через архитектуру REST API.

Архитектура приложения: REST API -> контроллер -> модель -> база данных.

REST API построен в формате JSON.

В качестве модели, взаимодействующей с базой данных, выступает класс User.

Асинхронность обеспечивается механизмом jobs, который позволяет использовать многопоточность данных.

Тестирование происходит с помощью интеграционных тестов.

Используется ресурсный роутинг и контроллеры ларавеля для rest api, который специально для этого сделан. Запросы на сохранение валидируются с помощью отдельно класса валидации, чтобы вынести этот участок кода отдельно и не захламлять контроллер. Передаем данные для сохранения и получения очередям ларавеля, чтобы скорость отдачи пользователю была более быстрая, если например сохранять фото синхронно, тогда код будет выполняться построчно и пользователь будет долго ждать пока загрузятся все фото. Написанны интеграционные тесты на все методы, которые покрывают всю функциональность кода.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published