Bogarting warstwy dostępu do danych

9

Sytuacja: dba jest zewnętrznym kontrahentem, który utrzymuje cały kod DAL w systemie TFS. Byłoby miło, gdyby programista front-end mógł dodawać kolumny, poprawiać procy i tak dalej, bez konieczności polegania na czekaniu, aż ten koleś odpowie na twoje e-maile.

Pytanie: Jakie byłoby zalecane rozwiązanie / proces, który pozwoliłby na szybszy / sprawniejszy rozwój, przy jednoczesnym zachowaniu integralności danych, a także spokojnej miłości i szczęścia w zespole?

spaghetticowboy
źródło
Martwię się tutaj o to, dlaczego musiałeś dodać kolumnę i jakie reguły biznesowe są powiązane z tą kolumną. Możesz znaleźć sposoby na obejście go i ostatecznie dodać kolumnę, ale co, jeśli użyłeś niewłaściwego typu danych, ustawień zerowych, definicji indeksu, a co gorsza, jeśli kolumna nie powinna należeć do tabeli lub jeśli całkowicie brakuje tabeli skrzyżowań? Uważam, że ktoś musi być odpowiedzialny za wpływ biznesowy definiowania nowych danych, a także ktoś powinien być odpowiedzialny za wpływ zmiany bazy danych na kod (inny niż DBA). Dwie role mogą grać ta sama osoba.
NoChance
Wymagaj DBA do pracy we własnym oddziale. Nie przyznawaj im praw do kasy głównej gałęzi programistycznej. Alternatywnie utwórz własną gałąź programistów i scal swoje zmiany w razie potrzeby.
SoylentGray

Odpowiedzi:

11

Martin Fowler i Pramod Sadalage napisali doskonały artykuł na ten temat.

Każdy programista ma własną bazę danych, w której można wprowadzać zmiany. Te zmiany są następnie przekazywane z powrotem (jako zestaw zmian) do DBA, który implementuje je w głównej bazie danych, więc jest nadal zaangażowany w proces, prawdopodobnie i tak najlepiej wie o strukturach i potrzebach bazy danych. Myślę, że to najlepsze podejście, ponieważ jest zadowalające dla wszystkich osób zaangażowanych w proces, a także bardzo zwinne.

Możesz zmienić DAL w podobny sposób. Po prostu dokonaj zmian i podaj zestaw zmian dla DBA, kiedy uważasz, że skończyłeś, aby mógł go przejrzeć i scalić ze swoim mistrzem.

Sokół
źródło
1
oooh lubię ... to jest moje pierwsze Q tutaj, więc nie mogę jeszcze głosować, ale masz na pewno jedną odpowiedź ... może / prawdopodobnie też odpowiedź, ale lubię trochę czekać, aby zobaczyć, co mówią inni
spaghetticowboy
Problem polega na tym, że programista wykonuje całą pracę przy założeniu, że dba zatwierdzi.
HLGEM
@HLEGM: Z mojego doświadczenia wynika, że ​​jest to rzadki przypadek, w większości przypadków DBA zatwierdza go lub zmienia tylko nieznacznie. To wciąż lepsze niż siedzenie bezczynnych deweloperów. Co więcej, prawdopodobnie doprowadzi to do najlepszego rozwiązania, jeśli DBA i deweloper są rozsądnymi ludźmi.
Falcon
+1 za wyjaśnienie, dlaczego jest to doskonały artykuł zamiast po prostu publikować link.
JeffO
@HLGEM - Myślę, że wymaga to od obu stron uzasadnienia tego, co robią. DBA powinna skorzystać z wątpliwości w sprawach db, ale obaj muszą odpowiedzieć komuś, kto podejmie ostateczną decyzję.
JeffO
3

Cóż, kiedy robię DBA, byłem znany z tego, że wszystko zamyka, żeby cholerni programiści nie mogli się tym zająć. Wszyscy myślą, że wiedzą, jak to zrobić lepiej, i „poprawiają” rzeczy, aby były łatwiejsze dla siebie, a to powoduje bezbożny bałagan.

Inną alternatywą jest rzucenie go szeroko i pozwolenie programistom na chwilę na niego walczyć, a następnie wskoczyć i narzucić porządek, gdy sprawy zaczynają się zamykać ... To z pewnością bardziej „zwinne”, ale może być prawdziwy koszmar w zależności od tego, co należy wyciąć lub zmienić ... DBA często lepiej rozumieją cały projekt, a niektóre zmiany, które wydają się nieszkodliwe, mogą być problematyczne.

Jeśli ma być jedynym strażnikiem, musi mieć ustaloną specyfikację lub być w stanie „sprzedać” swoją wizję reszcie deweloperów.

Satanicpuppy
źródło
jesteśmy cholernie brudni ... a czasem jesteśmy także cholernie niecierpliwi i musimy sami załatwić sprawę
spaghetticowboy
@spaghetti: Tak ... prawdopodobnie jestem gorszy niż większość, ponieważ wykonałem dużo pracy z DBA, więc mam dwa razy „Wiem, jak to zrobić lepiej!” niż większość programistów. Powiem tak: w przypadku baz danych o wiele ważniejsze jest, aby zrobić to odpowiednio wcześnie ... Jeśli będziesz dodawać do późna w projekcie, prawie na pewno spowoduje problemy.
Satanicpuppy
3

Istnieje poważny problem, który zastępuje każdy inny problem:

  1. Dlaczego kontrahent zawsze wypisuje kod?

Dlaczego wolno mu to robić? Nikt nie powinien pobierać pliku, chyba że aktywnie wprowadza zmiany. Powinny istnieć zasady zespołu dotyczące kas.

Wykonawca (czy im się to podoba, czy nie) pracuje jako część zespołu, a czasem inni członkowie zespołu mogą potrzebować wprowadzić zmiany. To jest problem z komunikacją. Niestety nie ma zautomatyzowanego sposobu rozwiązania tego problemu z komunikacją.

George Stocker
źródło
1

Zamiast poziomych warstw, wolę pracować w silosach między warstwami.

W ten sposób żadna osoba / zespół nie może zablokować w ten sposób.

Oznacza to również, że twoi programiści są wykwalifikowani i potrafią znacznie łatwiej przenosić funkcje.

Oczywiście istnieją sekcje (projektowanie interfejsu użytkownika i projektowanie bazy danych), które mogą wymagać więcej specjalizacji, ale masz pomysł.

ozz
źródło
1

Proste, jeśli jeszcze tego nie masz, powinieneś mieć 3 środowiska:

  • Środowisko programistyczne
  • Środowisko kontroli jakości
  • Środowisko produkcyjne

Twórcami powinny być środowiska deweloperskie.

Możesz także dodać środowisko RC.

Inna odpowiedź: jeśli wiele środowisk nie jest możliwe, możesz opracować w oparciu o fałszywe repozytorium ... W ten sposób budujesz modele, a następnie kontrahent jest odpowiedzialny za dostosowanie modeli do bazy danych. W pewnym sensie jest to lepsze, ponieważ uwalnia programistów od martwienia się o bazę danych.

AJC
źródło
1
OP mówi o kodzie, który jest wypisany. Różne środowiska nie miałyby wpływu.
NotMe,
1

Wydaje mi się, że twój problem dotyczy siły roboczej. Jest to właściwe i konieczne, aby wszystkie potencjalne zmiany bazy danych zostały zatwierdzone przez specjalistę od baz danych. Jeśli bieżąca osoba nie jest w stanie nadążyć za pracą w odpowiednim czasie, potrzebujesz więcej specjalistów od baz danych.

HLGEM
źródło
+1: może to być również przyczyną problemu. Wiele firm ma za mało DBA.
Falcon
1

Jest to zarówno kwestia zarządzania, jak i kwestii technicznych.

Z pewnością istnieją uzasadnione powody, dla których DBA (niezależnie od tego, czy jest to na miejscu, czy poza nim, wykonawca lub pracownik) powstrzymuje programistów od wprowadzania jakichkolwiek zmian w bazie danych.

Jednak głównym problemem, który zdefiniowałeś, jest dostępność. Czy Twój menedżer wie, że tracisz czas / pieniądze, czekając na tę osobę? Jeśli nie, możesz porozmawiać o tym, jak wszyscy siedzą.

Nie ja
źródło