Разработать Backend сервис, который позволит автоматизировать процесс работы небольшой пиццерии.
Представьте себе существующую, работающую исключительно в режиме ресторана пиццерию. Владелец, Ваш знакомый, хочет увеличить охват аудитории и обратился к Вам за помощью. Дальнейшие планы развития пиццерии и функционал системы Вы обсудили с ним, и знаете, что должен уметь сервис.
Публичным интерфейсом для взаимодействия с системой должен выступать протокол HTTP и/или основанные на нём (WS, Server events, gRPC...). При записи видео ролика важно продемонстрировать работу сервиса при помощи каких либо инструментов по типу Insomnia, Postman, DataGrip и прочих, способных наглядно показать, как работает Ваше приложение.
При реализации Вы можете выбрать любой способ организации компонентов (монолит/сервисы/микросервисы/беcсерверная архитектура) и масштаб.
-
Целостность созданного сервиса
Backend создается не просто так, им будут пользоваться конкретные клиенты, будь то сайты, мобильные приложения, кассовые автоматы или что угодно еще. При разработке и продумывании API важно обратить внимание на процессы, автоматизацию которых обеспечивает сервис.
-
Архитектурная составляющая
В современных фреймворках приняты устоявшиеся подходы и практики, например использование MVC. Обоснование "сделано при помощи архитектуры N потому что я её знаю/захотелось попробовать" будет более чем достаточно, при этом если некоторая архитектура выбрана - важно её придерживаться.
-
Документация
Описание того, как можно взаимодействовать с сервисом (Wiki, OpenAPI, Swagger...).
-
Грамотное использование ресурсов
Стоит обратить внимание на то, как Вы используете вычислительные мощности. Например, отправлять 5 SQL запросов вместо одного сложного выгодно не всегда. Нет цели выдать 100500 запросов в наносекунду на Raspberry Pi. Помните, что "Преждевременная оптимизация – корень всех зол".
Лимита на технологии не предусмотрено, при решении задания можно использовать любой стек.
Сегодня в лаборатории для написания Backend сервисов используются следующие технологии:
-
Фреймворки
-
Базы данных
-
Кеш
-
Очереди сообщений
Желательно реализовывать проект с использованием технологий, описанных выше, для простоты дальнейшего встраивания в рабочий процесс. Но в рамках тестового задания жестких ограничений на используемый стек нет
Будет полезно обратить внимание на следующее:
-
Тесты (Unit, e2e, integration...)
Backend сервисы как правило используются перечнем клиентов, и тесты, подтверждающие функциональность системы, приносят пользу.
-
Docker
Возможность запуска приложения в Docker позволяет оперативно встроить разработанное решение в существующие процессы.
-
База данных
В рамках тестового задания нет необходимости использовать некую "боевую" базу данных, можно обойтись хранением данных в памяти, но по понятным причинам для "боевых" проектов такой подход практикуется не часто.