/go-test-task

Test task for go developer job application

MIT LicenseMIT

Тестовое задание

Тестовое задание создано для быстрой проверки знаний и привычек программиста. Выполните базовое + усложнения, до тех пор пока не надоест. Оцениваться прежде всего будет структурирование кода, ведение документации и юнит-тесты.

Базовое

Написать сервер и клиент:

  • Cервер получает число из очереди, если оно делится без остатка на N (устанавливается в конфигурации), то сохраняет его в память.
  • Клиент отправляет случайные числа на сервер через очереди.

Все общение между клиентом и сервером должно происходить через очереди (предпочтительнее RabbitMQ) сообщениями в protobuf.

Усложнение

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

Логи

Действия должны логироваться на стороне клиента и сервера. Стоит учесть уникальный идентификатор операции, для разграничения принадлежности логов.

Метрики

Клиент должен учитывать количество отправленных сообщений, сервер же вести учет прошедших и не прошедших проверок запросов.

Ограничение запросов

У сервера должна быть возможность ограничивать количество обрабатываемых запросов, а у клиента – отправляемых. Ограничения должны устанавливаться в конфигурации.

Сохраненные числа

Создать возможность запросить у сервера все сохраненные числа.

Контейниризация

Поместить сервер и клиент в докер-образы и запускать с помощью docker-compose вместе с очередями и прочими нужными интеграционными сервисами.

Непрерывная интеграция

Настроить проверку линтером и прогон тестов при каждом коммите.

Полезные ссылки