Как стать автором
Обновить

Как мой менеджер потратил миллион долларов на сервер бэкапов, который я ни разу не использовал

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров25K
Всего голосов 50: ↑50 и ↓0+50
Комментарии23

Комментарии 23

Это все последствия выбора "безобразно но однообразно" vs "большой зоопарк".

Первое приводит к проблемам как у автора. Второе к другим, но не менее сложным проблемам. Когда из-за зоопарка только одних видов субд в компании будет десятка два и бэкапить это будут каждый кто во что горазд, и 100% какие-то системы будут вообще без бэкапов жить.

Нет, это последствия вот этого:


Все процессы были спроектированы на основании идеи того, что [...] разработчики не понимают, что требуется, поэтому нельзя позволять им задавать требования.

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

Если вообще каждому дать выбрать инструмент — то да, но есть же и более адекватные способы.

адекватно, это продумывать это на уровне архитектуры, архитекторам

Архитектор — это тоже разработчик, а не менеджер.

архитектор - это архитектор, не надо все упрощать и сводить к черному и белому. А то из-за таких упрощений и появляются потом одна система бэкапа на всю компанию

Но до менеджера упрощать архитектора тоже не следует.

Я архитектор, и честно скажу, больше менеджер, чем разработчик

я архитектор по роли, по факту, на 20% архитектор, на 50% просто тимлид, на 10% менеджер, на 10% тестировщик, на 10% аналитик, еще немного продажник, спикер, ментор, технический писатель, интервьювер и т.д.

История странная со всех сторон. Автор статьи мог выбрать конкретную СУБД и конкретную технологию ее бекапа, но не мог выбрать бекапную хранилку и даже не мог узнать ее модель? Предположим, такая дурацкая система полномочий. Но если бекапная хранилка обеспечивает низкую скорость чтения, то надо снижать требования к RTO и отказываться от инкрементальных бекапов. Бекапьте фул и логи, какие вопросы? Восстанавливаться будет долго, ну так хранилка и так медленная, значит руководство считает это нормальным.

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

Data Domain - чудесная железка, но она действительно не для того предназначена, чтобы с нее читать и считать разницу на стороне клиента. Она на своей стороне это прекрасно делает сама.

Ксати да! Data Domain просто монстр! Только нужно понимать для чего оно и правильно использовать. Очень хороший de-dup и скорость вливания.

А еще даже без специального софта можно использовать не nfs, а bostfs. Будет дедуп на стороне источника.

Кстати, так и не понял, почему просто не хранить один последний бекап локально ради возможности завтра сделать инкремент

Может, места мало на локальных дисках. Если им дополнительный диск давали только через чей-то труп, то места рядом с БД для последнего бэкапа могло не найтись.

За пару десятков лет работы я понял одно - документация по бекапам и по процедуре восстановления (что, откуда, куда, как и главное в какой последовательности), это редчайший документ во многих компаниях. Делать такую документацию, это нудятина ещё та, да и память у многих админов просто супердолговременная -). До первого жёсткого факапа.

Ладно документация, а вот регулярные тестовые восстановления с проверками логической целостности не делает примерно никто. Дорого, долго.

Единственный рабочий способ заставить людей это делать - это внедрить систему, при которой тестовые или отчетные базы регулярно пересоздаются именно из бекапа. Тогда прикладные проверки появятся естественным образом.

ну после очередного факапа обычно регламенты и корректируют. до следующего раза.

"The issue was caused by a malfunctioning server that couldn't synchronize character data correctly and corrupted them instead,"

Игровой сервер не может прочитать данные из (общей) базы корректно, но может их удалить?

База(ы) здесь как-бы совсем не причем. Бакап позволил восстановить потертое.

Имхо, основная проблема в архитектуре апи бакенда, или ее отсутствия.

Да простейшее решение типа soft-delete не привело-бы к таким громким последствиям.

Тут не soft delete нужен, тут нужно хранение версий.


Судя по симптомам, там было нетипизированное хранилище документов, в котором хранились либо персонажи, либо профили целиком. Игровой сервер тут и был бекендом, и работал с этим хранилищем он как с файлами — читал целиком данные и сохранял обновлённые.

Версионность, это было-бы хорошо, но в статье рассматривается Postgres vs MySQL а не хранилище документов, а в реляционой модели делать версионность немного сложнее.

"Хотя-бы сделали решение типа soft-delete."

Да, кстати игровой сервер как бекенд, тоже совсем не правильно. По нормальному надо делать отдельно, фасад апи с игровой логикои, и бэк с версионостью апи, кешем, распределением нагрузки итп.

Нет смысла. Основная нагрузка всё равно тут на самом игровом сервере и на стороне СУБД, бэкенд тут лишь почтальоном поработать может, он никак не распределит нагрузку. Версионировать тут тоже нечего, единственный клиент — это игровой сервер, и ему нужна конкретная версия api. Кешировать в таких сценариях тоже особо нечего.


И, главное, проблема "устаревшая программа запорола документ при редактировании" остаётся как компоненты не выноси, только вариантов "запарывания" от увеличения числа звеньев прибавляется.


статье рассматривается Postgres vs MySQL а не хранилище документов, а в реляционой модели делать версионность немного сложнее.

Без проблем, просто нужна отдельная таблица для истории изменений.


Я всё ещё уверен, что игровой сервер использовал Postgres как хранилище документов.

Спасибо как минимум за ностальгию: учился по этому направлению в ВУЗе, с теплотой вспоминаю, как мы на лабораторных работах похожий зоопарк собирали, а потом приходилось самому приходить после пар и делать, чтобы работало ???

Зарегистрируйтесь на Хабре, чтобы оставить комментарий