Oszacowanie kosztów migracji bazy danych
Jak oszacować czas migracji bazy danych: uzupełnianie danych, czas trwania blokady, wdrażanie i przywracanie. Polecenie „Dodaj kolumnę” to jedna linijka kodu SQL; szacunkowy czas to mniej więcej jedna sekunda.
„Dodaj kolumnę” to migracja składająca się z jednej linii kodu. Szacowana liczba linii nie dotyczy tej kolumny.
Migracje schematów przebiegają według dwóch harmonogramów. Jednym z nich jest SQL — zazwyczaj szybki, zazwyczaj mechaniczny. Drugi to zegar operacyjny: jak długo blokuje tabelę, jak zachowuje się w przypadku równoczesnych operacji zapisu, w jaki sposób można cofnąć zmiany, jeśli coś pójdzie nie tak, oraz jakie są procedury awaryjne, jeśli operacja potrwa dłużej niż przewiduje to okno wdrożeniowe. Zespół podejmuje decyzję w sprawie kodu SQL, ponieważ to właśnie jest przedmiotem zgłoszenia. Praca odbywa się w ramach drugiego zegara.
Na małym stoliku oba zegary są takie same, a sprawa jest naprawdę drobna. Na każdym stole, który ma znaczenie, tak nie jest. W kosztorysie należy uwzględnić wypełnienie luki, strategię wdrażania oraz procedurę wycofania, które ktoś musi przećwiczyć, zanim wdrożenie zbliży się choćby w najmniejszym stopniu do środowiska produkcyjnego.
O czym się mówi w tym pomieszczeniu
Backend: „To tylko polecenie ALTER, migracja potrwa zaledwie sekundę.”
SRE: „W tabeli zamówień? Z zablokowanymi pozycjami? O godz. 15:00?”
DBA: „W jaki sposób uzupełniamy istniejące wiersze?”
SRE: „Jak wygląda proces przywracania stanu poprzedniego, jeśli wdrożenie nie powiedzie się w połowie?”
Wstęp: „Czy ścieżka odczytu pozwala na to, by wartość w kolumnie pozostawała zerowa przez godzinę?”
Pytania, które warto zadać przed oddaniem głosu
- Jak duża jest ta tabela — czy zawiera tysiące, miliony, czy setki milionów wierszy?
- Narzędzie do migracji online czy zmiana danych na miejscu za pomocą polecenia ALTER?
- Strategia uzupełniania danych: synchroniczna, przetwarzanie wsadowe, podwójny zapis?
- Jakie działania podejmuje ścieżka odczytu w okresie wdrażania?
- Cofnięcie zmian: czy jest to operacja jednokierunkowa, czy też można przywrócić poprzednią wersję schematu?
- Czy ktoś już zastosował się do procedury dyżurnej w związku z tą migracją?
Jeśli połowa zgromadzonych opowiada się za „SQL”, a druga połowa za „wdrożeniem”, nie jest to problem związany z liczbą zadań; mamy tu do czynienia z dwoma zadaniami udającymi jedno. Należy je rozdzielić: zmiana schematu to jedno zadanie, a uzupełnienie danych i plan wdrożenia to kolejne.
Proszę oszacować czas wdrożenia i cofnięcia zmian, a nie czas operacji ALTER. To właśnie w tym drugim etapie tkwi ryzyko.
Wersję obejmującą różne systemy można znaleźć w artykule Szacowanie migracji danych, a inne przykłady praktycznych szacunków. Po nakreśleniu planu wdrożenia proszę rozpocząć bezpłatną sesję planowania pokerowego.