doc: запрос на код-ревью для Соннета
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
# Code Review Request — Go Terraform Registry
|
||||
|
||||
## Контекст
|
||||
|
||||
Terraform Provider Registry по протоколу HashiCorp. Деплоится как Docker-контейнер (containerk8s managed service в Nubes Cloud). Работает на проде: `https://go-registry.containerk8s.dev.nubes.ru`.
|
||||
|
||||
Хранилище — S3 (MinIO). Провайдеры, SHA256SUMS, GPG-подписи, документация — всё в S3.
|
||||
|
||||
## Файлы для ревью
|
||||
|
||||
- `server/main.go` — HTTP-сервер, S3, все роуты
|
||||
- `server/gpg_key.go` — GPG-ключи (2 штуки, вшиты в код)
|
||||
- `server/docs.go` — статика документации из S3
|
||||
- `Dockerfile` — multi-stage сборка
|
||||
|
||||
## Вопросы
|
||||
|
||||
1. **`downloadVersion`: `defer` внутри `if err == nil`** — defer в Go выполняется при выходе из функции, а не из блока. Правильно ли это здесь? Не приведёт ли к накоплению defer'ов или утечке?
|
||||
|
||||
2. **`readyzHandler`**: комментарий «Проверить доступность S3», но возвращает просто "ok". Стоит ли добавить реальную проверку (head bucket)?
|
||||
|
||||
3. **`listVersions`**: версии не сортируются, порядок зависит от S3 ListObjects. Стоит ли сортировать?
|
||||
|
||||
4. **`proxHandler`**: никаких ограничений на размер файла, таймаутов, rate-limiting. Нормально ли для внутреннего сервиса?
|
||||
|
||||
5. **`rootHandler`**: HTML захардкожен. Вынести в template или embed?
|
||||
|
||||
6. **Graceful shutdown**: нет обработки SIGTERM. Для managed-сервиса это критично?
|
||||
|
||||
7. **`tyCandidateKeys` в docs.go**: индентация сломана (табы/пробелы вперемешку). Это баг форматирования или Go это нормально компилирует?
|
||||
|
||||
8. **GPG-ключи в коде**: стоит ли вынести в файлы/ENV или оставить как есть?
|
||||
|
||||
9. **Dockerfile**: `go mod init` + `go mod tidy` при каждой сборке. Стоит ли добавить `go.sum` в репо для воспроизводимости?
|
||||
|
||||
10. **Общая архитектура**: что можно улучшить? Есть ли проблемы с безопасностью?
|
||||
|
||||
## Как отвечать
|
||||
|
||||
Если что-то неясно — спрашивай. Контекст: сервис внутренний, не публичный, трафик низкий.
|
||||
Reference in New Issue
Block a user