Как один программист случайно уничтожил компанию одной строкой кода3
Привет, Пикабу! Сегодня я расскажу вам историю, от которой у любого программиста волосы встанут дыбом. Это история о том, как одна маленькая ошибка привела к гигантским последствиям.
Дело было в 2016 году. Главный герой - разработчик по имени Марвин (имя изменено), работавший в хостинг-провайдере Gitlab.
Gitlab - это платформа для хранения исходного кода проектов, которой пользуются миллионы разработчиков по всему миру.
У Gitlab случилась небольшая проблема с производительностью базы данных. Марвин решил её починить.
Он собирался удалить временную базу данных на одном из серверов. Команда была простая: rm -rf /var/lib/postgresql/9.6/pg_xlog/*
Но случилось страшное - Марвин случайно запустил эту команду НЕ на том сервере!
Результат? 300 ГБ данных пользовательских проектов были моментально и безвозвратно удалены.
Осознав ошибку, Марвин немедленно остановил процесс. Но было уже поздно - данные исчезли.
Команда Gitlab бросилась восстанавливать данные из резервных копий. И тут выяснилось, что система резервного копирования... не работала последние 6 месяцев!
18 часов непрерывной работы, паники и стресса. Инженеры Gitlab пытались спасти то, что осталось.
В итоге им удалось восстановить большую часть данных, но около 5000 проектов были потеряны навсегда.
Gitlab проявила удивительную прозрачность в этой ситуации. Они вели прямую трансляцию процесса восстановления и открыто рассказали о случившемся.
Несмотря на ошибку, Марвина не уволили. Компания признала, что проблема была в системе, а не в конкретном человеке.
Мораль истории:
Всегда дважды (а лучше трижды) проверяйте, на каком сервере выполняете команды.
Регулярно проверяйте работу системы резервного копирования.
Ошибки случаются со всеми, даже с профессионалами.
Прозрачность и честность могут спасти репутацию даже в самой сложной ситуации.
P.S. После этого случая Gitlab значительно улучшила свои системы безопасности и резервного копирования. А Марвин, говорят, до сих пор трижды проверяет каждую команду перед выполнением.
А у вас были случаи, когда маленькая ошибка приводила к большим последствиям? Расскажите в комментариях!
UPD уточнение: #comment_324862867
Рабочий бэкап сделанный за 6 часов
Они не теряли 5000 проектов навсегда, чё за выдуманная хрень, они потеряли изменения, комменты и тд сделанные в 5000 проектах в течение этих 6 часов
On January 31st 2017, we experienced a major service outage for one of our products, the online service GitLab.com. The outage was caused by an accidental removal of data from our primary database server.
This incident caused the GitLab.com service to be unavailable for many hours. We also lost some production data that we were eventually unable to recover. Specifically, we lost modifications to database data such as projects, comments, user accounts, issues and snippets, that took place between 17:20 and 00:00 UTC on January 31. Our best estimate is that it affected roughly 5,000 projects, 5,000 comments and 700 new user accounts.
https://habr.com/ru/companies/slurm/articles/321074/
https://about.gitlab.com/blog/2017/02/10/postmortem-of-datab...
https://about.gitlab.com/blog/2017/02/01/gitlab-dot-com-data...