Poprzedni rozdział został poświęcony bezpieczeństwu Twojej aplikacji. Trzeba zadbać jeszcze o bezpieczeństwo danych – tworząc kopie zapasowe. Każdy komputer jest podatny na uszkodzenie, sprzęt z czasem niszczy się oraz podlega losowym awariom.
Dobry kucharz pamięta swoje przepisy, ale nie zapamięta ich wszystkich. Książka kucharska musi być przechowywana w bezpiecznym miejscu, aby w razie wypadku nie utracić wszystkich przepisów.
Polisa ubezpieczeniowa Twojej kuchni: Dlaczego backup to konieczność?
Pracując na co dzień z komputerem, przeciętny użytkownik nie zabezpiecza się przed awarią. Szansa awarii dysku jest niska, ale nie jest zerowa, dysk twardy (HDD) może wytrzymać lata. Jednak, gdy nastąpi moment awarii, możesz stracić wszystkie dane: zdjęcia, filmy, dokumenty, hasła, programy itd.
Jedyną metodą ratunku w tej sytuacji jest kopia zapasowa danych. Dane z zepsutego dysku można próbować odzyskać, jest szansa na odzyskanie przypadkowo usuniętych danych, ale nie ma gwarancji, że uda odzyskać się wszystko.
Kopie zapasowe mają szczególne znaczenie w aplikacjach biznesowych, gdzie utrata informacji o pojedynczej transakcji może dużo kosztować. Restauracja, która zgubi swoje faktury, będzie miała problemy z urzędem skarbowym. Dlatego kluczowe jest, aby pamiętać o wykonaniu kopii zapasowej dokumentów lub zrobić zrzut bazy danych.
Lekcja od Pixara: Gdy jedna osoba ratuje zespół
Studio Pixar w 1998 prawie straciło film Toy Story 2! Podczas rutynowego czyszczenia serwera, jeden z pracowników przez przypadek usunął katalog z filmem oraz jego zasobami. Jeden przypadkowy błąd kosztowałby ich 2 lata pracy i możliwe, że nigdy nie trafiłby do kina. Nikt też w studiu nie zweryfikował kopii zapasowych, okazało się, że nie funkcjonują od miesiąca i nie można ich wykorzystać. Sytuacja była po prostu tragiczna.
Sytuację uratowała pracowniczka pracująca zdalnie, która posiadała lokalną kopię na swoim komputerze. To dowód na to, że backup jest bezużyteczny, jeżeli nie zweryfikujesz, czy da się go odtworzyć.
Kopie zapasowe zostały zrobione, ale nikt nie zweryfikował ich poprawności, przez co ogromny nakład pracy poszedłby na marne. Kluczowe jest, aby sprawdzić poprawność kopii oraz czy na pewno da się odtworzyć dane.
Zasada 3-2-1: Trzy sejfy na jeden kluczowy przepis
Podczas budowania oprogramowania Twoim najważniejszym składnikiem jest kod źródłowy i dane użytkowników. Aby nie dopuścić do katastrofy, w swojej cyfrowej kuchni musisz stosować Zasadę 3-2-1:
- 3 kopie danych: oryginał, kopia, kopia zapasowa
- 2 różne nośniki danych: dysk i pendrive
- 1 kopia poza lokalizacją : np.zdalna
Pozwala to prawie zagwarantować bezpieczeństwo danych, jeżeli dysk padnie, mam kopie “pod ręką”, jeżeli kopie lokalne zostaną zniszczone, możemy odtworzyć dane na podstawie kopii zdalnej, a różne nośniki danych powodują, że awaria jednego nie wpływa na drugi.
Rodzaje kopii: Pełna, różnicowa czy przyrostowa?
Najprostszym sposobem na backup jest skopiowanie danych 1:1. Jest to poprawne, ale zauważysz, że zajmuje to dużo miejsca. Co jeżeli danych przybywa z dnia na dzień? Nie opłaca się kopiować codziennie 100 GB danych, jeżeli wprowadzono niewiele zmian. Dlatego, wyróżnione zostały 3 rodzaje kopii zapasowych.
Kopia pełna
Jest to najprostsza możliwa kopia danych, zajmuje najwięcej miejsca. Dane zapisywane są bez zmian, do migawki (ang. snapshot). Każda kolejna kopia pełna to zrzut bezpośrednio odtwarzalnych danych. Kucharz zapisuje wszystkie swoje przepisy pod koniec każdego dnia. Nic nie straci, ale szybko zabraknie mu miejsca na półce.
Kopia różnicowa
Jak zauważysz, potrzebny jest lepszy sposób przechowywania danych, które zmieniają się. Jednym ze sposobów jest kopia różnicowa, która przechowuje zmiany od ostatniej pełnej kopii. W poniedziałek wykonano kopię pełną 100 GB, we wtorek zapisane zostanie tylko 2 GB danych, a w środę 4 GB. Kopia ze środy będzie zawierać dane również z wtorku, porównuj dane tylko z ostatnią kopią pełną.
Wymaga kopii pełnej, ponieważ bezpośrednio z kopii różnicowej nie odtworzysz danych.
Kopia przyrostowa
W kopii różnicowej trzeba było dublować dane w kopiach. Jak nazwa wskazuje, kopia przyrostowa zapisuje zmiany od ostatniego backupu. Jaka jest różnica? We wtorek zapiszesz 2 GB danych i w środę zapiszesz kolejne 2 GB danych.
Gdzie jest haczyk? Jeżeli stracisz kopię danych z wtorku, kolejne kopie zapasowe będą bezużyteczne. Są najszybsze i zajmują najmniej miejsca, ale potrzebne są wszystkie kopie.
Sztuka odtwarzania: Czy Twój zapasowy przepis na pewno działa?
Wracając do historii Toy Story 2, należy zauważyć, że teoretycznie bezpieczeństwo zostało zachowane – backupy zostały utworzone i po awarii podjęto próbę wykorzystania ich. Mimo, iż procedury zostały spełnione, koniec końców kopia zapasowa okazała się bezużyteczna. Zaniedbano drugi najważniejszy element bezpieczeństwa danych – weryfikacja kopii zapasowej.
Co z tego, że skopiowaliśmy jakieś dane, jeżeli nie można z nich odtworzyć danych? Co w przypadku, kiedy jedna kopia przyrostowa została źle zapisana? Administrator musi zweryfikować poprawność kopii. Jeśli kucharz nie potrafi przeczytać swojego pisma, to po co tworzył notatki? Jak kucharz umrze, tym bardziej nikt go nie przeczyta.
Zauważysz, że sprawdzanie każdej kopii może okazać się nieefektywne, co jest prawdziwe. Skoro dane zostały zapisane, to nie ma potrzeby ich weryfikacji. Kopie zapasowe trzeba weryfikować po szczególnych zmianach np. w architekturze systemu. Zmieniasz bazę danych – sprawdź backup. Zmieniona została struktura katalogów – sprawdź backup. Kopie warto też sprawdzać co pewien czas: co miesiąc, co kwartał, nie codziennie. Musisz zachować odpowiedni balans i zdrowy rozsądek.
RPO i RTO: Jak szybko musisz wrócić do wydawania dań?
W profesjonalnych systemach i wielkich przedsiębiorstwach tworzy się plan tworzenia kopii zapasowych. Planuje się miejsce na kopie zapasowe, priorytet dla danych, ilość kopii oraz ich rodzaj. Służą do tego 2 wyznaczniki: RPO (Recovery Point Objective) i RTO (Recovery Time Objective). Wykorzystuje się je w zautomatyzowaniu kopii.
Ile danych możesz stracić w czasie? Recovery Point Objective
Wyznacza, ile danych przedsiębiorstwo może stracić. Ile zamówień z danego dnia Twoja aplikacja może utracić? Wszystko zależy od skali i istoty danych, w jednym systemie 30 minut utraty danych to poważna strata finansowa, w innym tygodniowa strata jest akceptowalna. Musisz zastanowić się, co ile należy tworzyć kopie zapasowe i jakie dane mają być tam przechowywane. Można też rozdzielić informacje poprzez priorytet – baza danych ma być kopiowana codziennie, natomiast zdjęcia użytkowników raz na miesiąc.
Ile czasu system może być niedostępny? Recovery Time Objective
Ten wyznacznik, odpowiada na pytanie: Jak szybko możesz otworzyć kuchnię po pożarze? W kontekście kopii zapasowych, RTO informuje o czasie od awarii do poprawnego działania systemu, czyli jak długo zajmie odtwarzanie danych. Trzeba dostosować tak kopie, aby odtworzenie nie przekroczyło zaplanowanego czasu. Ustawienie RTO na 2 godziny powoduje, że kuchnia ma zostać posprzątana i wymalowana w czasie tych 2 godzin. Musisz dostosować kopie zapasowe tak, aby odtworzenie danych nie zajęło zbyt dużo czasu.
Automatyzuj albo giń: DevOps w służbie bezpieczeństwa
Każdy programista z natury jest leniwy – dlatego wymyślono języki programowania. Tworzenie kopii zapasowych to długotrwały proces, kopia pełna może być tworzona godzinami. Dlatego, kluczowe jest aby kopie zapasowe były tworzone automatycznie, bez ingerencji człowieka. Pamiętaj, aby zautomatyzować proces dopiero, kiedy jesteś pewien jego działania. Tworzenie bezużytecznych kopii zapasowych marnuje tylko przestrzeń dyskową.
W ustaleniu, kiedy i co ma być zapisane pomagają wyznaczniki RPO i RTO. Właśnie nimi powinieneś się kierować przy automatyzacji, ale to nie wszystko. Musisz ustalić ile kopii wstecz musi być trzymanych na dysku, monitoring poprawności kopii, oraz harmonogram backupów. Kuchnia raczej nie przyjmuje klientów w nocy, dlatego archiwizację faktur, rachunków i przepisów najlepiej wykonać w tym czasie, ponieważ jest mała szansa, że dane się zmienią.
Chmura: Spiżarnia odporna na katastrofy
Jednym z najlepszych miejsc do przechowywania danych jest chmura, która gwarantuje przede wszystkim dostępność. Profesjonalne serwisy praktycznie gwarantują, że dane nie zostaną utracone nawet w przypadku awarii serwera. Jest to wygodne rozwiązanie, w którym Twoim zadaniem jest stworzyć kopię i wstawić ją na zdalny serwer.
Warto korzystać z kopii przyrostowych, aby zmniejszyć ilość przechowywanych i przesyłanych danych.
Takie serwisy oferują rozwiązanie Serverless – płacisz za zasoby, które faktycznie zużyłeś.
Serwery wykorzystują macierze RAID do ochrony danych przed awarią sprzętową. Każdy rodzaj macierzy wykonuje inne zadanie, jednak warto zaznaczyć, że pracują na poziomie sprzętu. Przykładowo, 2 dyski w macierzy RAID 1 będą zduplikowane, zapis danych w systemie spowoduje utworzenie automatycznej kopii. W przypadku awarii jednego z dysków, macierz automatycznie skopiuje dane ze starego dysku na nowy.
Kod programu przechowuj w rozproszonym systemie kontroli wersji (np. git). Rozproszenie oznacza, że każdy programista posiada kopię kodu, natomiast główny serwer jest punktem odniesienia. W przypadku utraty serwera, można odtworzyć repozytorium na podstawie lokalnego repozytorium jednego z programistów.
Podsumowanie
Backupy są niezmiernie ważne w każdym przedsiębiorstwie!
Dane przechowywane komputerowo są podatne na wiele zagrożeń: awarie, wirusy, błąd ludzki. Jest wiele technik tworzenia kopii zapasowych, dlatego warto się z nimi zapoznać i wybrać najbardziej odpowiedni.
Pamiętaj: Utrata danych to jeden z najgorszych scenariuszy w IT.
Materiały
Materiały do samodzielnej nauki związane z tym tematem:
- Znaczenie kopii zapasowych stron internetowych i monitorowania bezpieczeństwa
- Historie utraty danych
- Czym jest kopia zapasowa (backup)?
- Rodzaje kopii zapasowych
- Najlepsze praktyki backupu i odzyskiwania danych
- Przewodnik po backupie AWS S3
- Testowanie kopii zapasowych
- Docker Volume Backup Tutorial: przykład z Nextcloud
- Backup i przywracanie w S3 przy użyciu AWS Backup
- Backup: kompletny przewodnik po ochronie i odzyskiwaniu danych
- Strategie backupu danych dla początkujących
