Вчера
С резервными копиями всё просто до того дня, когда они понадобились. База работает, документы проводятся, отчёты сдаются — и никто не замечает, что возможность вернуться во вчерашний день уже исчезла. Мы решили научить систему замечать это раньше людей.
В этой истории
У резервной копии довольно странная работа. В идеале она годами создаётся каждую ночь и никому не нужна.
На неё не смотрит главный бухгалтер. О ней не спрашивает финансовый директор. Руководителя гораздо больше интересуют продажи, деньги и почему опять не выполнен план. Где-то в это время на сервере появляется ещё один большой файл с данными компании, а утром жизнь продолжается как обычно.
Так всё и должно работать.
Проблемы начинаются с того, что резервная копия умеет исчезать совершенно незаметно.
Например, заканчивается место.
Это редко происходит внезапно. Базы 1С растут, сотрудники складывают новые документы, файлов на сервере становится больше. Вчера для очередной копии требовалось немного меньше места, сегодня — немного больше. Ничего драматического.
Пока однажды ночью места почти хватает.
Система начинает делать копию и какое-то время вполне успешно этим занимается. Потом диск заканчивается.
Копии нет.
Зато может остаться огромный недописанный файл, который теперь занимает ещё часть свободного пространства. Следующей ночью новая попытка оказывается в ещё худшем положении.
Получается довольно занятный механизм: неудавшаяся резервная копия помогает не состояться следующей.
Утром об этом никто не знает.
1С открывается. Бухгалтер проводит документы. Сотрудники работают с файлами. Сервер отвечает на запросы. Никаких специальных признаков того, что компания только что потеряла ещё один день своей истории, нет.
Если ничего не проверять, так может продолжаться довольно долго.
А потом возникает один из самых коротких вопросов в ИТ:
— Можно вернуть на вчера?
Вот тогда и выясняется, что резервное копирование — это не задача «каждую ночь сделать ещё один файл».
В какой-то момент мы начали перестраивать систему именно вокруг этой мысли.
Управление резервным копированием у клиентов собрали в одном месте. Так проще следить за десятками процессов одновременно, менять правила и видеть проблемы. При этом сами данные клиентов к нам не едут. Копии создаются и хранятся на их стороне — там, где компания решила хранить свои данные.
Но просто наблюдать за результатом каждой ночи тоже оказалось мало.
Проверить утром, что ночью закончилось место, — полезно. Гораздо интереснее понять это до того, как оно закончится.
Мы научили систему беспокоиться заранее.
Она знает, сколько места занимали предыдущие копии. Видит, как меняется их размер. Смотрит, сколько свободного пространства осталось, и пытается понять, хватит ли его не только для сегодняшней ночи.
В сущности, она задаёт тот же вопрос, который задал бы хороший инженер, если бы ему хотелось каждый день заниматься исключительно резервными копиями:
«Если всё будет расти такими темпами, когда у нас начнутся неприятности?»
Только инженеру этим заниматься каждый день довольно быстро надоест.
Компьютеру — нет.
Перед очередным копированием система проверяет свободное место. Если предыдущая попытка закончилась ошибкой и оставила после себя бесполезный огромный файл, его тоже нужно заметить. Такой файл выглядит солидно, занимает место, но выполнить единственную работу, ради которой существует, не способен.
Поэтому система убирает последствия неудачных попыток и освобождает место для нормальных копий.
Постепенно вокруг обычного ночного задания вырос целый набор довольно скучных действий: проверить, посчитать, сравнить, спрогнозировать, убрать лишнее, повторить.
Именно скучные действия обычно и оказываются самыми важными.
Человек хорош там, где нужно разобраться в необычной ситуации. Проверять каждую ночь, достаточно ли места для очередного файла, — довольно расточительный способ использовать человека.
Поэтому наша задача была не в том, чтобы заставить инженеров внимательнее смотреть за резервным копированием.
Наоборот.
Мы старались сделать так, чтобы система как можно дольше обходилась без них сама.
Пусть считает свободное место. Пусть следит за ростом данных. Пусть убирает то, что осталось после неудачных попыток. Пусть повторяет операции, которые можно безопасно повторить.
А человека зовёт тогда, когда действительно не знает, что делать дальше.
В этом есть некоторая несправедливость.
Если такая система работает хорошо, её почти никто не замечает. У неё нет красивого интерфейса, которым бухгалтер любуется по утрам. Она не увеличивает продажи и не делает отчёт о прибылях привлекательнее.
Она просто ночь за ночью сохраняет возможность однажды отменить очень плохой день.
Потому что какой-нибудь сотрудник удалит не ту папку. База повредится. Оборудование выйдет из строя. Произойдёт ещё что-нибудь из длинного списка вещей, которые обычно случаются с другими людьми.
И тогда вместо разговоров о гигабайтах, свободном месте и ночных заданиях прозвучит всё тот же вопрос:
— На вчера можно?
Ради него всё и работает.