Planuję wypchnąć nową aplikację internetową do usługi Azure Web App Service (poprzednia witryna Azure). Chciałbym skorzystać ze szczelin wdrożeniowych, aby móc przetestować moje wdrożenie przed przekazaniem go do produkcji. Wszystko w porządku, o ile nie wymaga zmiany schematu DB. Ale jeśli nastąpi zmiana schematu, nie mogę mieć dwóch wersji oprogramowania działających na tej samej wersji bazy danych. Ponieważ korzystam z migracji EF, wypychanie do gniazda pomostowego natychmiast skutkowałoby aktualizacją bazy danych do najnowszej wersji.
Więc moje pytanie brzmi, czy jest jakieś wykorzystanie miejsc wdrażania, gdy wymagana jest migracja bazy danych?
Jak to się robi dla dużych dostawców SaaS. Czy przeprowadzają migrację bazy danych natychmiast dzięki nowej wersji? To z pewnością spowodowałoby pewne przestoje.
Mogę tylko wymyślić dość złożone rozwiązania tego problemu, czy jest coś prostego?
Odpowiedzi:
Wydania o zerowym przestoju przy użyciu gniazd usługi Azure App Service i pojedynczej bazy danych udostępnianej przez pomostowe i produkcyjne są możliwe - ale należy upewnić się, że wszystkie zmiany w bazie danych są zgodne wstecz, tak aby bieżąca i nowe wersje aplikacji sieci web mogły działać jednocześnie w miejsca na inscenizację i produkcję.
Niektóre zasady, które zapewniają, że to działa:
Kiedy musisz dokonać destrukcyjnych zmian, takich jak zmiana nazwy lub upuszczenie kolumn, potrzebujesz 2 wydań, aby to zrobić:
Choć wydaje się to nieco skomplikowane, w praktyce prawdopodobnie nie będziesz często dokonywał destrukcyjnych zmian.
źródło
czy spojrzałeś na elementy konfiguracji specyficzne dla slotów? W obszarze WebApp / Settings / Application Settings możesz określić ustawienia aplikacji internetowej, ale także określić, czy ma ona dotyczyć tylko tego gniazda.
W związku z tym możesz mieć specyficzny dla szczeliny ciąg połączenia dla swojego boksu pomostowego i zastosować migrację również na gniazdach zamiany.
źródło