API, позволяющий версионировать конфиги, написанный на Golang. Для хранения конфигов используется графовая база данных Neo4J. Это обусловлено тем, представление JSON в виде графа помогает сохранять большое количество места, в случае, если не нужно постоянно перезаписывать поля.
- язык программирования Golang
- формат схемы конфига json
- сервис должен обеспечивает персистентность данных
- сервис поддерживает все CRUD операции по работе с конфигом
- поддерживается версионирование конфига при его изменении
- удалять конфиг допускается только если он не используется никаким приложением
- в качестве протокола взаимодействия сервиса с клиентами использовал gRPC
- написал Dockerfile и docker-compose.yml
- покрыл проект unit-тестами
- сделал тестовый пример использования написанного сервиса конфигураций
Тогда можно поднимать сервис
git clone https://github.com/tenzm/configs-server
cd configs-server
docker compose up
curl -d "@data.json" -H "Content-Type: application/json" -X POST http://localhost:8080/config
{
"service": "managed-k8s",
"data": [
{"key1": "value1"},
{"key2": "value2"}
]
}
status_code: 200
The configuration has been saved. Current version: 1
curl http://localhost:8080/config?service=managed-k8s
{
"key1": "value1",
"key2": "value2"
}
curl -d "@data.json" -H "Content-Type: application/json" -X PUT http://localhost:8080/config
{
"service": "managed-k8s",
"data": [
{
"key1": "learn"
},
{
"key2": "golang"
}
]
}
status_code: 200
The configuration has been updated. Current version: 2
Без указания номера версии возвращается самая последняя из версий
curl http://localhost:8080/config?service=managed-k8s
status_code: 200
{
"key1": "learn"
"key2": "golang"
}
curl "http://localhost:8080/config?service=managed-k8s&version=1"
status_code: 200
{
"key1": "value1",
"key2": "value2"
}
curl -X DELETE http://localhost:8080/config/delete?service=managed-k8s
status_code: 200
curl -X DELETE http://localhost:8080/config/delete?service=managed-k8s