Посмотреть результат тут: https://api.mts.shamps.dev
- Александр Дьяконов [DevOps-инженер, backend-разработчик]
- Мишель де Джофрой [frontend-разработчик]
- Виктория Кулешова [UX/UI дизайнер]
- Иван Тарасов [backend-разработчик, DevOps-инженер]
- Анастасия Богданова [бизнес-аналитик]
В качестве основного языка был выбрал Go
версии 1.23. Проект интегрируется с Kubernetes
и Helm
для удобного разворачивания и управления инфраструктурой.
Мы решили полностью отказаться от хранения данных у себя в целях сохранения консистентности данных. Поэтому для того, чтобы подключить внешние базы данных или АПИ достаточно написать adapter
, чтобы наш сервис смог их отдать в обработанном виде фронтенду. Интерфейс для реализации находится в external
. Сейчас там дублируется код (модель domain.Person
совпадает с json
моделью), но это сделано в качестве примера реализации адаптера.
Для сборки образа бекенда используется scratch
чтобы максимально облегчить его.
Мы пришли к этому далеко не сразу. Сначала писали на питоне, хотели подключить эластик и возможно как-то обойтись без бекенда, но оказалось, что можно поступить еще лучше... Написать на Go!
- Go (версия 1.23)
- Bleve — библиотека для полнотекстового поиска
- Kubernetes — для развертывания и управления
- Helm — для упрощения процесса развертывания в Kubernetes
Возможен запуск отдельно сервиса без Docker'a и кубера
Для этого мы сделали отдельный деплой репозиторий
В нем подробно описан запуск
Для установки зависимостей проекта, выполните команду:
go mod tidy
Чтобы запустить проект, используйте команду:
go run cmd/main.go