Na wiki społeczności SO odbyła się dyskusja na temat tego, czy obiekty bazy danych powinny podlegać kontroli wersji. Jednak nie widziałem zbyt wielu dyskusji na temat najlepszych praktyk tworzenia procesu automatyzacji kompilacji dla obiektów bazy danych.
To był kontrowersyjny punkt dyskusji dla mojego zespołu - zwłaszcza, że programiści i administratorzy baz danych często mają różne cele, podejścia i obawy podczas oceny korzyści i zagrożeń związanych z automatyzacją wdrażania bazy danych.
Chciałbym usłyszeć kilka pomysłów od społeczności SO na temat praktyk, które okazały się skuteczne w prawdziwym świecie.
Zdaję sobie sprawę, że to, które praktyki są naprawdę najlepsze, jest nieco subiektywne, ale myślę, że dobry dialog o tym, jaka praca może być pomocna dla wielu ludzi.
Oto niektóre z moich zwiastunów pytań dotyczących obszarów zainteresowania w tym temacie. To nie jest ostateczna lista - raczej punkt wyjścia dla ludzi, aby pomóc zrozumieć, czego szukam.
- Czy środowiska testowe i produkcyjne powinny być budowane z kontroli źródła?
- Czy oba powinny być budowane za pomocą automatyzacji - czy też produkcja powinna opierać się na kopiowaniu obiektów ze stabilnego, sfinalizowanego środowiska testowego?
- Jak radzisz sobie z potencjalnymi różnicami między środowiskami testowymi i produkcyjnymi w skryptach wdrożeniowych?
- Jak sprawdzić, czy skrypty wdrożeniowe będą działać równie skutecznie w środowisku produkcyjnym, jak w testach?
- Jakie typy obiektów powinny podlegać kontroli wersji?
- Tylko kod (procedury, pakiety, wyzwalacze, java itp.)?
- Indeksy?
- Ograniczenia?
- Definicje tabel?
- Skrypty zmiany tabeli? (np. ALTER skrypty)
- Wszystko?
- Które typy obiektów nie powinny podlegać kontroli wersji?
- Sekwencje?
- Dotacje?
- Konta użytkowników?
- Jak należy zorganizować obiekty bazy danych w repozytorium SCM?
- Jak radzisz sobie z jednorazowymi rzeczami, takimi jak skrypty konwersji lub skrypty ALTER?
- Jak radzisz sobie z wycofywaniem obiektów z bazy danych?
- Kto powinien być odpowiedzialny za promowanie obiektów z poziomu deweloperskiego do poziomu testowego?
- Jak koordynujesz zmiany wprowadzone przez wielu programistów?
- Jak radzisz sobie z rozgałęzianiem obiektów bazy danych używanych przez wiele systemów?
- Jakie wyjątki, jeśli w ogóle, można rozsądnie wprowadzić w tym procesie?
- Problemy z bezpieczeństwem?
- Dane, których dotyczy brak identyfikacji?
- Skrypty, których nie można w pełni zautomatyzować?
- W jaki sposób można uczynić proces odpornym i wykonalnym?
- Do błędu programisty?
- Nieoczekiwane problemy środowiskowe?
- Do odzyskiwania po awarii?
- Jak przekonasz decydentów, że korzyści płynące z DB-SCM naprawdę uzasadniają koszty?
- Dowody anegdotyczne?
- Badania branżowe?
- Zalecenia dotyczące najlepszych praktyk w branży?
- Apelacje do uznanych autorytetów?
- Analiza kosztów i korzyści?
- Kto powinien „posiadać” obiekty bazy danych w tym modelu?
- Deweloperzy?
- DBA?
- Analitycy danych?
- Więcej niż jeden?