Sloty wdrażania i zamiana
Utwórz sloty przejściowe na potrzeby wdrożeń blue-green, rozgrzej nowe wydanie w slocie przejściowym i zamień je na środowisko produkcyjne bez przestoju.
Sloty wdrażania i zamiana to bezpłatna lekcja Cloud & IT Cert Prep na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Cloud & IT Cert Prep, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Cloud & IT Cert Prep zawiera 4 lekcji w sumie.
Czym są sloty wdrożeniowe
Sloty wdrożeniowe to aktywne, odseparowane środowiska dla aplikacji internetowej App Service, z których każde ma własną nazwę hosta (np. myapp-staging.azurewebsites.net). Sloty współdzielą ten sam plan App Service i zasoby ze slotem produkcyjnym, ale działają niezależnie. Umożliwiają wdrożenia blue-green — nową wersję można sprawdzić w slocie staging, a następnie przełączyć ją do środowiska produkcyjnego bez przestoju. Sloty są dostępne od warstwy Standard wzwyż.
Tworzenie slotu wdrożeniowego
Dodaj nowy slot wdrożeniowy do aplikacji internetowej za pomocą witryny Azure Portal lub interfejsu CLI. Każdy slot otrzymuje własny adres URL, ustawienia aplikacji i parametry połączeń. W warstwie Standard można utworzyć maksymalnie 5 slotów, a w warstwie Premium — maksymalnie 20 slotów. Typowe nazwy slotów to staging, canary, hotfix i integration, odzwierciedlające różne etapy potoku wydawania.
# Create a staging deployment slot
az webapp deployment slot create \
--name MyUniqueWebApp \
--resource-group MyRG \
--slot staging
# Deploy code to the staging slot
az webapp deploy \
--name MyUniqueWebApp \
--resource-group MyRG \
--slot staging \
--src-path app.zip
# The staging slot is live at:
# https://MyUniqueWebApp-staging.azurewebsites.netRozgrzewanie slotu staging
Przed przełączeniem bardzo ważne jest, aby rozgrzać slot staging, dzięki czemu nowa wersja zostanie w pełni zainicjowana. Zimna instancja App Service obsługuje pierwsze żądania wolniej, gdy inicjalizuje środowisko uruchomieniowe, co jest niedopuszczalne w środowisku produkcyjnym. Włącz funkcję Auto Swap albo ręcznie wysyłaj żądania HTTP rozgrzewające do slotu staging. App Service obsługuje również konfigurację applicationInitialization, która pozwala zdefiniować ścieżki rozgrzewania, muszące zwrócić kod 200, zanim slot zostanie uznany za gotowy.
# web.config snippet for warm-up (IIS/Windows)
# <system.webServer>
# <applicationInitialization>
# <add initializationPage='/health' hostName='MyUniqueWebApp-staging.azurewebsites.net'/>
# </applicationInitialization>
# </system.webServer>
# Or use a startup probe via the App Service health check
az webapp config set \
--name MyUniqueWebApp \
--resource-group MyRG \
--slot staging \
--generic-configurations '{"healthCheckPath": "/health"}'Przełączanie slotów
Przełączenie atomowo zamienia slot staging ze slotem produkcyjnym. Podczas przełączania App Service najpierw kieruje ruch do instancji staging z nowym kodem, czeka na ich inicjalizację, a następnie przekierowuje cały ruch produkcyjny do nowych instancji; stare instancje produkcyjne stają się nowym slotem staging. Dzięki temu wycofanie zmiany jest proste — wystarczy ponownie wykonać przełączenie.
# Swap staging into production
az webapp deployment slot swap \
--name MyUniqueWebApp \
--resource-group MyRG \
--slot staging \
--target-slot production
# Rollback: swap production back to staging
az webapp deployment slot swap \
--name MyUniqueWebApp \
--resource-group MyRG \
--slot production \
--target-slot stagingUstawienia przypisane do slotu a ustawienia nieprzypisane
Ustawienia aplikacji można oznaczyć jako przypisane do slotu (specyficzne dla slotu) lub nieprzypisane do slotu (podlegające zamianie). Ustawienia nieprzypisane do slotu przemieszczają się wraz ze slotem wdrożeniowym podczas przełączania — dlatego parametry połączenia z bazą danych staging trafiają wraz z kodem do środowiska produkcyjnego. Ustawienia przypisane do slotu pozostają w nim niezależnie od przełączeń — środowisko produkcyjne zawsze zachowuje parametry połączenia ze swoją produkcyjną bazą danych. Oznacz ustawienia jako przypisane do slotu za pomocą pola wyboru „deployment slot setting” lub interfejsu CLI.
# Mark a setting as sticky (slot-specific) -- it won't swap
az webapp config appsettings set \
--name MyUniqueWebApp \
--resource-group MyRG \
--slot staging \
--slot-settings DATABASE_URL='postgresql://staging-db/...'
# Set a non-sticky setting (it WILL travel with a swap)
az webapp config appsettings set \
--name MyUniqueWebApp \
--resource-group MyRG \
--slot staging \
--settings FEATURE_FLAG_NEW_UI=trueDzielenie ruchu na potrzeby wydań canary
App Service obsługuje dzielenie ruchu — kierowanie określonego procentu ruchu produkcyjnego do slotu nieprodukcyjnego bez wykonywania pełnego przełączenia. Umożliwia to wydania canary, w których stopniowo zwiększa się udział ruchu z 5% do 10%, a następnie do 50%, w miarę nabierania pewności co do nowej wersji i monitorowania współczynników błędów na każdym etapie. Użytkownicy trafiający do slotu canary otrzymują trwały plik cookie, który utrzymuje ich przy tej samej wersji i zapewnia spójność sesji.
# Route 10% of traffic to the staging slot (canary)
az webapp traffic-routing set \
--name MyUniqueWebApp \
--resource-group MyRG \
--distribution staging=10
# View current traffic distribution
az webapp traffic-routing show \
--name MyUniqueWebApp \
--resource-group MyRG
# Reset all traffic to production
az webapp traffic-routing clear \
--name MyUniqueWebApp \
--resource-group MyRGAuto Swap
Auto Swap automatycznie przełącza slot staging do środowiska produkcyjnego za każdym razem, gdy zostanie w nim wdrożony nowy kod. Funkcja ta jest idealna dla potoków CI/CD, w których każde pomyślne wdrożenie ma od razu trafić do środowiska produkcyjnego. Auto Swap czeka, aż żądania HTTP slotu staging będą zwracać kod 200, zanim zakończy przełączanie. Włącz tę funkcję dla wybranego slotu w portalu lub interfejsie CLI — zachowaj jednak ostrożność, ponieważ między wdrożeniem a publikacją w środowisku produkcyjnym nie ma etapu ręcznego zatwierdzania.
# Enable Auto Swap for the staging slot
az webapp deployment slot auto-swap \
--name MyUniqueWebApp \
--resource-group MyRG \
--slot staging \
--auto-swap-slot production
# Disable Auto Swap
az webapp deployment slot auto-swap \
--name MyUniqueWebApp \
--resource-group MyRG \
--slot staging \
--disableNajlepsze praktyki dotyczące slotów wdrożeniowych
Przestrzegaj następujących najlepszych praktyk dotyczących slotów wdrożeniowych: zawsze sprawdzaj wersję w środowisku staging przed przełączeniem jej do środowiska produkcyjnego, używaj ustawień przypisanych do slotu, aby odseparować produkcyjne połączenia z bazą danych od środowiska staging, uruchamiaj testy dymne pod adresem URL slotu staging po wdrożeniu, konfiguruj ścieżki kontroli kondycji, aby App Service nie kończył przełączania, jeśli nowa wersja jest niesprawna, oraz oznaczaj wdrożenia, aby można było ustalić, który commit jest aktywny w każdym slocie.
Sloty w potokach CI/CD
W typowym potoku CI/CD etap kompilacji kompiluje i testuje kod, etap wdrażania przesyła artefakt do slotu staging, etap testów integracyjnych uruchamia automatyczne testy pod adresem URL środowiska staging, a etap przełączania przełącza slot staging do środowiska produkcyjnego — opcjonalnie po uzyskaniu ręcznej akceptacji. Ten wzorzec jest natywnie obsługiwany zarówno w Azure Pipelines, jak i w GitHub Actions za pomocą akcji wdrażania App Service.
# GitHub Actions step: deploy to staging slot
# - name: Deploy to Staging Slot
# uses: azure/webapps-deploy@v2
# with:
# app-name: MyUniqueWebApp
# slot-name: staging
# publish-profile: ${{ secrets.AZURE_STAGING_PUBLISH_PROFILE }}
#
# - name: Swap to Production
# uses: azure/CLI@v1
# with:
# inlineScript: |
# az webapp deployment slot swap \
# --name MyUniqueWebApp \
# --resource-group MyRG \
# --slot stagingMonitorowanie kondycji podczas przełączania
Podczas przełączania slotów i po jego zakończeniu monitoruj kluczowe metryki w usłudze Azure Monitor, aby potwierdzić poprawne działanie nowej wersji. Obserwuj skoki liczby błędów HTTP 5xx, średniego czasu odpowiedzi oraz wykorzystania procesora i pamięci. Skonfiguruj alerty dotyczące metryk, które będą uruchamiane po przekroczeniu przez współczynniki błędów określonego progu — otrzymasz w ten sposób sygnał umożliwiający szybkie przełączenie z powrotem. Funkcja smart detection usługi Application Insights może automatycznie powiadamiać o anomaliach po wdrożeniu.
# Create an alert rule for HTTP 5xx errors post-swap
az monitor metrics alert create \
--name 'HighErrorRate' \
--resource-group MyRG \
--scopes '/subscriptions/.../providers/Microsoft.Web/sites/MyUniqueWebApp' \
--condition 'avg Http5xx > 10' \
--window-size 5m \
--evaluation-frequency 1m \
--action-group MyActionGroupSloty a wiele aplikacji
Sloty wdrożeniowe są lepszym rozwiązaniem niż utrzymywanie całkowicie oddzielnych aplikacji App Service dla środowisk staging i produkcyjnego, ponieważ współdzielą ten sam plan (bez dodatkowych kosztów), umożliwiają przełączenie jednym kliknięciem wraz z wycofaniem zmiany, obsługują dzielenie ruchu i są zarządzane w ramach tego samego zasobu App Service. Oddzielnych aplikacji należy używać tylko wtedy, gdy środowisko staging wymaga zasadniczo innych jednostek SKU planu, izolacji lub całkowicie oddzielnego rozliczania.
Szybkie sprawdzenie
Sprawdź swoją wiedzę na temat zagadnień Microsoft Azure Fundamentals (AZ-900) omówionych w tej lekcji.
Podsumowanie lekcji
W tej lekcji poznano następujące zagadnienia: sloty wdrożeniowe zapewniają odizolowane środowiska umożliwiające wdrożenia blue-green, ustawienia przypisane do slotu wiążą konfigurację specyficzną dla środowiska (np. adresy URL baz danych) ze slotem, a nie z kodem, natomiast dzielenie ruchu umożliwia wydania canary poprzez kierowanie określonego procentu ruchu produkcyjnego do nowej wersji. W następnej części omówimy automatyczne skalowanie i domeny niestandardowe.
Często zadawane pytania
Czy lekcja „Sloty wdrażania i zamiana” jest bezpłatna?
Tak — pełny tekst „Sloty wdrażania i zamiana” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Cloud & IT Cert Prep, przejdź na CoddyKit PRO. Kurs Cloud & IT Cert Prep zawiera 4 lekcji w sumie.
Co nauczysz się w „Sloty wdrażania i zamiana”?
Utwórz sloty przejściowe na potrzeby wdrożeń blue-green, rozgrzej nowe wydanie w slocie przejściowym i zamień je na środowisko produkcyjne bez przestoju. Ćwiczysz Cloud & IT Cert Prep z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Cloud & IT Cert Prep?
Nie wymagamy żadnego doświadczenia. Cloud & IT Cert Prep w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Sloty wdrażania i zamiana”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Cloud & IT Cert Prep?
Tak. Każda lekcja Cloud & IT Cert Prep zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Tworzenie planu App Service i aplikacji internetowej
- Sloty wdrażania i zamiana
- Automatyczne skalowanie i domeny niestandardowe
- Uwierzytelnianie i sieci w App Service