gRPC сервер для сложения 2х целочисленных значений, т.е. проект без какой-либо реального практического применения
или пользы для бизнеса, а только для иллюстрации использования (aka тренеровка на кошках
):
- gRPC - RPC framework
- Protocol Buffers - протокол сериализации структурированных данных
- Wire — это инструмент генерации кода, который автоматизирует соединение компонентов с помощью внедрения зависимостей.
Многие придерживаются GoLang standart project layout (GSPL), но я заметил что в примерах имплементации GSPL эта структура весьма свободно применяется. Это приводит меня к мысли, что GSPL носит больше рекомендательный характер. И ещё, я считаю что структура должна быть понятной, прозрачной и помогать в навигации как по коду, так для онбординга/погружения новых.
- replace dependencies to interfaces
- tests
Для удобства рутинных сценариев (кодогенерация proto, wire) используется Taskfile - это не касается разработки, просто для удобства, ибо кросс-платформенное решение.
$ task
task: [default] task --list
task: Available tasks for this project:
* all-in-one-gen: full code generation (aliases: aiog)
* install-utils: Installation utility packages
* lint: Запуск линтера
* lint-fix: Запуск линтера с авто-исправлением предупреждений
* protobuf-generate: Регенерация файлов proto-файлов (aliases: pbg)
* upgrade: Обновление пакетов приложения (aliases: up)
* wire-generate: wire di codegen (aliases: wg)