Валидация конфига #3
Labels
No Label
Compat/Breaking
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Security
Kind/Testing
Priority
Critical
Priority
High
Priority
Low
Priority
Medium
Reviewed
Confirmed
Reviewed
Duplicate
Reviewed
Invalid
Reviewed
Won't Fix
Status
Abandoned
Status
Blocked
Status
Need More Info
Compat/Breaking
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Security
Kind/Testing
Priority
Critical
Priority
High
Priority
Low
Priority
Medium
Reviewed
Confirmed
Reviewed
Duplicate
Reviewed
Invalid
Reviewed/Requested
Reviewed
Won't Fix
Status
Abandoned
Status
Blocked
Status
Need More Info
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date
Blocks
Depends on
#5 Liveness и Readiness
PenaSide/trashlog
#2 Заменить имя модуля
PenaSide/trashlog
Reference: PenaSide/trashlog#3
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Проблема:
когда кто-либо деплоит этот сервис, есть шанс совершить ошибку и предоставить неверный конфиг, из-за чего сервис будет работать неправильно или вовсе не будет работать. В рамках повышения стабильности релизов надо сделать так, чтобы валидность конфига проверялась ещё до того, как сервис отправится на деплой. т.е. после сборки образа, но до развертывания.
Решение:
вопрос ci\cd я беру на себя. но вопрос разработки целиком на тебе. к тому же, мне посоветовали меньше давать готовых решений, давая больше свободы разработчику, поэтому здесь и далее задачи будут немного совещательными
Надо:
выделил основные поля конфига в трешлоге которые как мне кажется критичны для заполнения:
самыми важными являются как мне кажется это ClickhouseCred , TgToken , TgChatID и уже косвенно это DBPath BucketName, почему косвенно, ну я думаю эти мутирующие переменные будут со временем их по желанию будто бы можно по разному называть
а вот строка подключения к кликхаусу и тг параметры уже важны для нормального функционирования их я думаю стоит валидировать, как пинг в кликхаус и проверку подключения бота к тг
для параметров болта достаточно чтобы они не были пустыми как я понимаю
я наверное банально выражусь, но примерно такое в голову приходит как это делать
на самом деле как я понимаю это лучше сделать сразу для всех конфигов которые у нас могут использоваться на проектах, я вот про то что один валидатор для всего
хм ну возможно без рефлексии тут не обойтись или обойтись, как то наверное стоит собрать то что у нас используется, стандартизировать для них название env формата и уже отталкиваясь от этого создавать правила проверок.
Потому что ну допустим, redis_host,redis_port,http_host,http_port и тд также с кафкой постгресом называются примерно одинаково
как бы возможно сделал в валидаторе, во первых добавил бы эти env форматы за правило в мапку которая будет описывать что с ними делать и в каких проверках нуждаются, сделал бы рефлексию по тегам конфига, кстати вот интересно с json точно помню что умеет, с env не пробовал
получая эти теги строить конвеер проверок.
пока сыро пояснил, потому что сам не очень представляю.
не, норм пояснил
но ответить мне есть и много чего. и если бы мы не начали это обсуждать, я бы об этом и не подумал
как по мне, сейчас лучше не писать обобщенный валидатор целиком. лучше в каждом проекте сделать свою валидацию, а потом вынести похожие функции в тулзы в коммоне. даже придумать как обобщенно скодогенерить пока сложно. как только набор тулзов появится, можно будет в конфиге блупринта прописать откуда брать готовые темплейты и для каких полей заготавливать заглушки с тудушками
сделал некую валидацию для конфига трешлога, вроде по максимуму выжал как мне кажется оттуда