Минас Саркисянwebkoth.com

Внутренняя система · В проде

Карта унаследованного хранилища

Инструменты для унаследованного хранилища торговой компании: переиспользуемый клиент, CLI к SQL и к OLAP-кубу, автогенерируемые карты данных и проверка их достоверности. Репозиторий сознательно локальный: в картах внутренние адреса и полная схема, наружу они не уходят.

Болело

Унаследованное хранилище досталось чёрным ящиком: несколько баз, сотни таблиц и вью, OLAP-куб - и ни одного описания. Каждый вопрос к данным начинался с раскопок.

Стало

Переиспользуемый клиент, CLI для запросов и карта данных, которая пересобирается одной командой: базы, таблицы, вью, колонки, рядом - карта куба. Плюс проверка, что данным можно верить.

Что это даёт бизнесу

  • Вопрос к данным начинается с карты, а не с раскопок по базе.
  • Ловушки записаны рядом с данными: где себестоимость проставлена и на логистических строках, где цена стоит в валюте документа, а битый курс завышает её в сто раз.
  • Проверка достоверности возвращает код ошибки, поэтому «данным можно верить» - это прогон, а не мнение.
  • Карты пересобираются командой и не устаревают вслед за схемой.

От источника к результату

  1. Унаследованные базы и куб
  2. Клиент и CLI
  3. Автогенерируемые карты
  4. Проверка достоверности
  5. Расчёты и отчёты

Карты собираются из самой базы, а не пишутся руками: схема изменилась - та же команда пересобирает карту, и разница видна в git-диффе.

Как устроено

Клиент один и переиспользуемый: и CLI, и расчётные скрипты ходят в базу через него, поэтому доступы и разбор ответов не расползаются по копиям.

Разбор находок записан отдельными документами: где в слое бизнес-логики нашлись ошибки, как устроено расписание загрузки и какие у него режимы отказа, откуда берётся себестоимость и в каких из восьми цепочек она занижена.

Выбросы в данных обрабатываются, а не игнорируются: подозрительный курс валюты в документе заменяется ближайшим нормальным, иначе одна строка из учётной системы завышает расчёт на порядок.

Кто ведёт систему сейчас

Инженер. Репозиторий держится локальным без публичного remote: карта содержит внутренние адреса и полную схему.

Другие кейсы этого шага

Внутренняя система · В проде

Управленческий финансовый контур

Все цифры компании - в одной системе

Болело
Цифры жили в десяти таблицах, личках и головах трёх человек. При уходе ключевых людей терялись и доступы, и контекст.
Стало
Один источник: движение средств, бюджет, заявки, сверка и справочники в одном приложении с ролями и правами.
Срок
месяц
Заменило
десять таблиц и переписку
Охват
ДДС, БДР, заявки, сверка

Та же система даёт эффект ещё по 3 шагам

Смотреть кейс

Внутренняя система · В проде

Платформа данных

Один источник правды вместо своих отчётов у каждого

Болело
Каждый отдел выгружал данные площадки сам и считал по-своему, и совещание начиналось со спора, чья таблица правильная. История за прошлый год не сохранялась вовсе.
Стало
Платформа собирает данные по расписанию и раскладывает их по слоям до готовых витрин. Дальше все - люди, приложения и агенты - берут цифры из одних и тех же витрин.
Сбор
Охват
Заменило
ручные выгрузки у каждого отдела

Та же система даёт эффект ещё по 2 шагам

Смотреть кейс

Внутренняя система · В проде

Учёт ИТ-инфраструктуры

Сервисы, доступы и ответственные - в одном месте

Болело
Учёт жил в унаследованной панели и разрозненных записях: кто к чему подключён, что на каком сервере крутится, кто за это отвечает. Уход человека уносил и доступы, и контекст.
Стало
Одна панель: дерево сервисов, матрица доступов «кто куда», ключи и порталы, задания, проблемы, изменения и аудит. Вход под собственным логином, видимость разделов - по ролям.
Разделы
Срок
Заменило
унаследованную панель на 35 вкладок
Смотреть кейс
Тип
Внутренняя система
Статус
В проде
Охват
5 баз, ~427 таблиц и 329 вью
Ведёт
инженер
Заменило
раскопки по базе и знание в голове одного человека
PythonMS SQLSSASDAXpython-tds