2010-05-19 21 views
26

Mam zamiar wdrożyć do produkcji dość skomplikowaną witrynę i po raz pierwszy potrzebuję środowiska testowego, w którym mogę przetestować różne rzeczy w bardziej realistycznym środowisku, zwłaszcza w odniesieniu do niektórych usług zewnętrznych, których nie można uruchomić. lokalnie.Dobre praktyki w zakresie wdrażania bazy danych

Mój ogólny plan polega na tym, aby najpierw testować lokalnie, pchać proste zmiany (małe poprawki błędów, HTML/CSS, JS, itd.) Bezpośrednio do produkcji, a przy większych zmianach najpierw przepychać poddomeny do dokładnych testów, a następnie do produkcji.

Nie sądzę, że muszę synchronizować bazy danych inscenizacji i produkcji (sporadyczne ręczne aktualizacje), ale zastanawiam się, czy istnieją jakieś ogólne dobre praktyki dotyczące utrzymywania środowiska pomostowego w stosunku do środowisko produkcyjne, zwłaszcza jeśli chodzi o bazy danych.

Wszelkie ogólne przemyślenia/porady/doświadczenia byłyby mile widziane.

UPDATE:

Dzięki za komentarze, mam sens. Myślę, że warto poświęcić trochę czasu, aby o tym pomyśleć. Zaakceptowano popularną odpowiedź.

Odpowiedz

26

Pomijanie inscenizacji i dokonywanie zmian w produkcji to przepis na katastrofę i nieużywanie. Gdy wprowadzasz te zmiany, definicja mniejszości zaczyna się zmieniać. Po drugie, gdy dwa środowiska odbiegają (tj. Etapy przestają pasować do produkcji), wszystko się psuje i tracisz pewność siebie w środowisku testowym. Aby w pełni wykorzystać serwer przemieszczania, powinieneś zaimplementować do niego zautomatyzowane wdrożenia, w pełni przetestować i dopiero potem wdrożyć (zautomatyzować) do produkcji (bez względu na to, jak mała zmiana). Powinieneś również upewnić się, że całe środowisko jest jak najbardziej zbliżone i pozostać w ten sposób. To oczywiście obejmuje DB. Zwykle konfiguruję synchronizację dzienną lub godzinową (w zależności od tego, jak często buduję witrynę lub aplikację), aby utrzymać bazę danych, i często uruchamiam ją jako część procesu kompilacji.

+7

+1. Cały cel środowiska etapowego polega na naśladowaniu tego, co ma wkrótce trafić do produkcji. Jeśli są jakieś zmiany w produkcji, które nie są odzwierciedlone w wystawianym kodzie, to po co zawracać sobie głowę serwerem pośredniczącym? – NotMe

+1

Czy możesz podzielić się pomysłami, w jaki sposób automatycznie synchronizujesz bazę danych? – geckob

+1

@ geckob, który powinien być osobnym pytaniem, ponieważ będzie zależał od konkretnego DB, OS, gdzie go uruchomisz (wirtualny, w centrum danych, w chmurze) itp. –

7

Jako osoba rozwijająca oprogramowanie tool, która pomaga na każdym etapie procesu wdrażania, mogę powiedzieć, że najlepszą praktyką w środowiskach testowych jest odzwierciedlenie środowiska produkcyjnego dokładnie. Obejmuje to identyczny schemat bazy danych (dane nie są istotne, czasami tworzenie kopii zapasowych/odświeżania jest w porządku), ta sama wersja systemu operacyjnego, zaktualizowane pakiety serwisowe, ustawienia serwera WWW itp.

W idealnym świecie, funkcjonalnym lub użytkowym - Testowanie przyzwoitości nie musi być wykonywane podczas przemieszczania, ponieważ celem środowiska pomostowego jest jedynie sprawdzenie wdrożenia do produkcji. Jednak w świecie praktycznym czasami jest dopuszczalne, aby środowisko testowe było również środowiskiem testowym funkcjonalnym lub UA.

Za każdym razem, gdy zmieniasz ustawienie lub zmieniasz konfigurację na serwerze produkcyjnym, powinieneś zmienić ustawienie na serwerze pomostowym, to zapewni, że jeśli będziesz mógł wdrożyć swoją aplikację do przemieszczania, to z dużym prawdopodobieństwem zostanie wdrożone do produkcji bez błąd.

+11

Nie zgadzam się z tym, że "dane nie są istotne". W zależności od systemu dane produkcyjne mogą ujawnić wszelkiego rodzaju nieprzewidywalne problemy w twoim środowisku przemieszczania ... Co jest pewnego rodzaju wskazówką :) – Dolph

+3

@Dolph - kiedy mówię, że dane mam na myśli coś w stylu "Zamówienia" lub "Pracownicy". Jeśli przechowujesz konfigurację dowolnego rodzaju w bazie danych, masz rację, ponieważ zdecydowanie musi być identyczna. Jeśli jednak zwykłe dane łamią twoją aplikację w jakiś sposób, to powinno zostać złapane podczas testowania QA. Oczywiście, jeśli twoje środowiska testowe i testowe są takie same, prawdopodobnie dobrym pomysłem będzie częste odświeżanie bazy danych;) –

+3

W idealnym świecie zgadzam się. Ale z mojego doświadczenia wynika, że ​​użytkownicy rzeczywistego świata zawsze znajdują sposoby generowania danych, których nikt inny się nie spodziewał. – Dolph

Powiązane problemy