„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.