Перейти к содержанию

Система хранения данных

Из последних постов может сложиться впечатление, что я занимался только блогом и читал новости, а техническая часть проекта стояла на месте.

Да, это так!

На самом деле — я предавался… размышлениям. Да, я сделал немного. Но это немногое — очень важная часть будущей огромной работы.

Хранилище данных #

Я занимался подготовкой системы хранения данных: структурировал учетные и технические данные, создавал для них хранилище и переводил из текстового в цифровой формат — создавая основу для будущей автоматизации. Созданные структуры лягут в основу моделей, когда я наконец-то решусь все автоматизировать и начну переписывать разрозненные баш-скрипты (которыми я автоматизирую рутинные операции сейчас) в единое приложение-оркестратор на Python.

А зачем нам etcd? #

Помните недавнюю статью про KV-хранилище? У вдумчивого читателя мог возникнуть вопрос: чтобы развернуть кластер etcd, нам понадобится как минимум три core-ноды — а на этапе прототипа мы работаем всего с одной.

На самом деле — KV-хранилище на etcd на этапе прототипа избыточно. Мы подойдем к его использованию только на этапе роста. Однако, закладывая архитектуру изначально и думая о ней уже сейчас, мы избегаем множества проблем по переработке и переделке в будущем.

На текущем этапе нам вполне достаточно git-репозитория для статического хранения информации. Настроив периодические автокоммиты, мы можем делать бэкапы конфигураций — и при необходимости смотреть по ним динамику изменений. Редкие и незначительные изменения небольшого объема — на этапе прототипа такой системы хранения данных более чем достаточно.

Но глядя в будущее — уже сейчас стоит выделить основные сущности и определить их в KV-структуры под будущее хранение в etcd. Выбрать форматы хранения — TOML, YAML, JSON?

Что сделано #

Собственно, этим я и занимался. Я растащил все данные, которые лежали в описательных текстовых файлах — с учетными данными, параметрами серверов, путями, адресами, типами узлов и прочим — в структурированный приватный репозиторий с JSON-файлами. Теперь все данные сохранены, все четко, структурировано, хоть сейчас в базу данных — а исходный монорепозиторий стал на одну папку меньше.

Что дальше #

Следующая на очереди задача — создание приватного репозитория, в который я переложу (а местами и перепишу) все уже написанные баш-скрипты по развертыванию и настройке нод, а также создание скриптов по работе с учетными данными — управление пользователями. Данные уже есть — можно начинать работать с ними.

А уже затем — переписывать разрозненные баш-скрипты в единое приложение-оркестратор на Python. Но об этом я подумаю завтра послезавтра.