URL_SHORTENER
URL shortener (“сокращатель ссылок”) - это сервис, позволяющий пользователю генерировать для произвольного URL’a его короткую версию, которую удобно вставлять в различные публикации, сообщения, новости, промо-материалы и так далее.
Особенности функциональности сервис позволяет получать статистику переходов по каждому сгенерированному URL’у, что будет полезно, если его владелец захочет узнать сколько людей перешло по короткой ссылке из конкретного источника.
Каждой ссылке присваивается индекс, для быстрого поиска рейтинга, поиск осуществляется с помощью динамического пула воркеров, используя механизмы Go для синхронизации: channal(каналы), пакета sync, пакет atomic(примитив синхронизации)
В качестве архитектуры проекта я выбрал hexagonal архитектуру, по моему мнению она больше подходит для нашего проекта, так как мы будем создавать отдельные компоненты. Компоненты определяется как инкапсулированный автономный блок. Компоненты общаться друг с другом с помощью интерфейсов. Такой подход к проектированию тесно связан с SOLID принципами и предлагает нам гибкость для свободного изменения или даже замены реализации компонентов в любой момент на протяжении всего проекта разработки
В качестве роутера я выбрал роутер GIN(https://github.com/gin-gonic/gin)
Причины выбора:
- Роутер GIN иапользует свой контекст.
- У него много вспомагательных функций в контексте(различные парсинги например с JSON).
- Он очень популярен, а значит будет поддерживаться еще долгое время.