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