Sdílet prostřednictvím


Správa životního cyklu aplikací: Od vývoje k ostrému provozu

Jason Lee

Toto téma ukazuje, jak fiktivní společnost spravuje nasazení ASP.NET webové aplikace prostřednictvím testovacích, přípravných a produkčních prostředí v rámci průběžného procesu vývoje. V celém tématu jsou k dispozici odkazy na další informace a návody k provádění konkrétních úloh.

Toto téma je navržené tak, aby poskytovalo základní přehled pro řadu kurzů o nasazení webu v podniku. Nemějte obavy, pokud neznáte některé zde popsané koncepty – následující kurzy poskytují podrobné informace o všech těchto úlohách a technikách.

Poznámka

Pro zjednodušení se toto téma nezabírá aktualizací databází v rámci procesu nasazení. Provádění přírůstkových aktualizací funkcí databází je však požadavkem mnoha podnikových scénářů nasazení a pokyny k tomu najdete v další části této série kurzů. Další informace najdete v tématu Nasazení databázových projektů.

Přehled

Zde znázorněný proces nasazení vychází ze scénáře nasazení společnosti Fabrikam, Inc. popsaného v tématu Nasazení podnikového webu: Přehled scénáře. Před zahájením studia tohoto tématu byste si měli přečíst přehled scénářů. Scénář v podstatě zkoumá, jak organizace spravuje nasazení přiměřeně složité webové aplikace , řešení Contact Manager, prostřednictvím různých fází v typickém podnikovém prostředí.

Řešení Contact Manageru na vysoké úrovni prochází v rámci procesu vývoje a nasazení těmito fázemi:

  1. Vývojář zkontroluje kód v Team Foundation Serveru (TFS) 2010.
  2. TFS sestaví kód a spustí všechny testy jednotek přidružené k týmovém projektu.
  3. TFS nasadí řešení do testovacího prostředí.
  4. Vývojářský tým ověří a ověří řešení v testovacím prostředí.
  5. Správce přípravného prostředí provede nasazení "co kdyby" do přípravného prostředí, aby stanovil, jestli nasazení způsobí nějaké problémy.
  6. Správce přípravného prostředí provede živé nasazení do přípravného prostředí.
  7. Řešení prochází testováním přijetí uživatelem v přípravném prostředí.
  8. Balíčky pro nasazení webu se ručně importují do produkčního prostředí.

Tyto fáze jsou součástí cyklu nepřetržitého vývoje.

Tyto fáze jsou součástí cyklu nepřetržitého vývoje.

V praxi je tento proces o něco složitější, jak uvidíte, když se na každou fázi podíváme podrobněji. Fabrikam, Inc. používá jiný přístup k nasazení pro každé cílové prostředí.

Fabrikam, Inc. používá jiný přístup k nasazení pro každé cílové prostředí.

Zbývající část tohoto tématu se zabývá těmito klíčovými fázemi životního cyklu nasazení:

  • Požadavky: Jak je potřeba nakonfigurovat infrastrukturu serveru před nasazením logiky nasazení.
  • Počáteční vývoj a nasazení: Co je potřeba udělat před prvním nasazením řešení.
  • Nasazení k testování: Jak automaticky zabalit a nasadit obsah do testovacího prostředí, když vývojář zkontroluje nový kód.
  • Nasazení do přípravného prostředí: Jak nasadit konkrétní sestavení do přípravného prostředí a jak provést nasazení "co kdyby", abyste zajistili, že nasazení nezpůsobí žádné problémy.
  • Nasazení do produkčního prostředí: Jak importovat webové balíčky do produkčního prostředí, když síťová infrastruktura brání vzdálenému nasazení.

Požadavky

Prvním úkolem v jakémkoli scénáři nasazení je zajistit, aby vaše serverová infrastruktura splňovala požadavky vašich nástrojů a technik nasazení. V tomto případě společnost Fabrikam, Inc. nakonfigurovala svoji serverovou infrastrukturu takto:

Počáteční vývoj a nasazení

Než může vývojový tým společnosti Fabrikam, Inc. poprvé nasadit řešení Contact Manager, musí provést tyto úlohy:

  • Vytvořte nový týmový projekt v TFS.
  • Vytvořte soubory projektu Microsoft Build Engine (MSBuild), které obsahují logiku nasazení.
  • Vytvořte definice sestavení TFS, které aktivují procesy nasazení.

Vytvoření nového týmového projektu

Vytvoření logiky nasazení

Matt Hink vytváří různé vlastní soubory projektu MSBuild pomocí přístupu rozděleného souboru projektu popsaného v tématu Principy souboru projektu. Matt vytvoří:

  • Soubor projektu s názvem Publish.proj , který spouští proces nasazení. Tento soubor obsahuje cíle nástroje MSBuild, které sestavují projekty v řešení, vytvářejí webové balíčky a nasazují balíčky do prostředí cílového serveru.
  • Soubory projektu specifické pro prostředí s názvy Env-Dev.proj a Env-Stage.proj. Obsahují nastavení, která jsou specifická pro testovací prostředí a přípravné prostředí, jako jsou připojovací řetězce, koncové body služby a podrobnosti o vzdálené službě, která obdrží webový balíček. Pokyny k výběru správného nastavení pro konkrétní cílová prostředí najdete v tématu Konfigurace vlastností nasazení pro cílové prostředí.

Ke spuštění nasazení uživatel spustí soubor Publish.proj pomocí nástroje MSBuild nebo Team Build a určí umístění příslušného souboru projektu specifického pro prostředí (Env-Dev.proj nebo Env-Stage.proj) jako argument příkazového řádku. Soubor Publish.proj pak naimportuje soubor projektu specifického pro prostředí a vytvoří úplnou sadu pokynů publikování pro každé cílové prostředí.

Poznámka

Způsob, jakým tyto vlastní soubory projektu fungují, je nezávislý na mechanismu, který používáte k vyvolání nástroje MSBuild. Můžete například použít příkazový řádek MSBuild přímo, jak je popsáno v tématu Principy souboru projektu. Soubory projektu můžete spustit ze souboru příkazu, jak je popsáno v tématu Vytvoření a spuštění souboru příkazu nasazení. Případně můžete spustit soubory projektu z definice sestavení v sadě TFS, jak je popsáno v tématu Vytvoření definice sestavení, která podporuje nasazení.
V každém případě je konečný výsledek stejný – NÁSTROJ MSBuild spustí sloučený soubor projektu a nasadí řešení do cílového prostředí. To vám poskytuje velkou flexibilitu při spouštění procesu publikování.

Po vytvoření vlastních souborů projektu je Matt přidá do složky řešení a zkontroluje je ve správě zdrojového kódu.

Vytvoření definic sestavení

Jako poslední přípravný úkol matt a Rob společně vytvoří tři definice sestavení pro nový týmový projekt:

  • DeployToTest. Tím se sestaví řešení Contact Manager a nasadí ho do testovacího prostředí pokaždé, když dojde k ohlášení.
  • DeployToStaging. Tím se nasadí prostředky ze zadaného předchozího sestavení do přípravného prostředí, když vývojář zasadí sestavení do fronty.
  • DeployToStaging-WhatIf. Tím se provede nasazení "co kdyby" do přípravného prostředí, když vývojář zasadí sestavení do fronty.

Další podrobnosti o každé z těchto definic sestavení najdete v následujících částech.

Nasazení k testování

Vývojový tým ve společnosti Fabrikam, Inc. udržuje testovací prostředí pro provádění různých aktivit testování softwaru, jako je ověřování a ověřování, testování použitelnosti, testování kompatibility a ad hoc nebo průzkumné testování.

Vývojový tým vytvořil definici sestavení v TFS s názvem DeployToTest. Tato definice sestavení používá trigger kontinuální integrace, což znamená, že proces sestavení se spustí pokaždé, když člen vývojového týmu společnosti Fabrikam, Inc. provede kontrolu. Při aktivaci sestavení definice sestavení:

  • Sestavte řešení ContactManager.sln. Tím se následně sestaví každý projekt v rámci řešení.
  • Spusťte všechny testy jednotek ve struktuře složek řešení (pokud se řešení úspěšně sestaví).
  • Spusťte vlastní soubory projektu, které řídí proces nasazení (pokud se řešení úspěšně sestaví a projde testy jednotek).

Konečným výsledkem je, že pokud se řešení úspěšně sestaví a projde testy jednotek, webové balíčky a všechny další prostředky nasazení se nasadí do testovacího prostředí.

Konečným výsledkem je, že pokud se řešení úspěšně sestaví a projde testy jednotek, webové balíčky a všechny další prostředky nasazení se nasadí do testovacího prostředí.

Jak proces nasazení funguje?

Definice sestavení DeployToTest poskytuje do nástroje MSBuild tyto argumenty:

/p:DeployOnBuild=true;DeployTarget=package;TargetEnvPropsFile=[path]\Env-Dev.proj

Vlastnosti DeployOnBuild=true a DeployTarget=package se používají, když team build sestavuje projekty v rámci řešení. Pokud je projekt projektem webové aplikace, tyto vlastnosti instruují nástroj MSBuild k vytvoření balíčku nasazení webu pro projekt. Vlastnost TargetEnvPropsFile říká souboru Publish.proj, kde najít soubor projektu specifického pro prostředí pro import.

Poznámka

Podrobný návod, jak vytvořit definici sestavení, jako je tato, najdete v tématu Vytvoření definice sestavení, která podporuje nasazení.

Soubor Publish.proj obsahuje cíle, které sestavují jednotlivé projekty v řešení. Obsahuje ale také podmíněnou logiku, která tyto cíle sestavení přeskočí, pokud soubor spouštíte v team buildu. To vám umožní využívat další funkce sestavení, které team build nabízí, jako je možnost spouštět testy jednotek. Pokud sestavení řešení nebo testy jednotek selžou, soubor Publish.proj se nespustí a aplikace se nenasadí.

Podmíněná logika se provádí vyhodnocením vlastnosti BuildingInTeamBuild . Toto je vlastnost NÁSTROJE MSBuild, která je automaticky nastavena na hodnotu true , když k sestavení projektů použijete team build.

Nasazení do přípravného prostředí

Pokud sestavení splňuje všechny požadavky vývojářského týmu v testovacím prostředí, tým může chtít nasadit stejný build do přípravného prostředí. Přípravná prostředí se obvykle konfigurují tak, aby co nejvíce odpovídala charakteristikám produkčního nebo "živého" prostředí, například z hlediska specifikace serveru, operačních systémů a softwaru a konfigurace sítě. Přípravná prostředí se často používají pro zátěžové testování, testování přijetí uživatelem a širší interní kontroly. Sestavení se nasazují do přípravného prostředí přímo z buildovacího serveru.

Sestavení se nasazují do přípravného prostředí přímo z buildovacího serveru.

Definice sestavení použité k nasazení řešení do přípravného prostředí DeployToStaging-WhatIf a DeployToStaging sdílejí tyto charakteristiky:

  • Ve skutečnosti nic nevytáčí. Když Rob nasadí řešení do přípravného prostředí, chce nasadit konkrétní existující sestavení, které už bylo ověřeno a ověřeno v testovacím prostředí. Definice sestavení stačí spustit vlastní soubory projektu, které řídí proces nasazení.
  • Když Rob aktivuje sestavení, použije parametry sestavení k určení, které sestavení obsahuje prostředky, které chce nasadit z buildovacího serveru.
  • Definice sestavení se neaktivují automaticky. Rob ručně zasadí sestavení do fronty, když chce nasadit řešení do přípravného prostředí.

Toto je základní proces nasazení do přípravného prostředí:

  1. Správce přípravného prostředí Rob Walters zařadí sestavení do fronty pomocí definice sestavení DeployToStaging-WhatIf . Rob pomocí parametrů definice sestavení určí, které sestavení chce nasadit.
  2. Definice sestavení DeployToStaging-WhatIf spouští vlastní soubory projektu v režimu "co kdyby". Tím se vygenerují soubory protokolu, jako by Rob prováděl živé nasazení, ale ve skutečnosti neprovádí žádné změny v cílovém prostředí.
  3. Rob zkontroluje soubory protokolu a zjistí účinky nasazení na přípravné prostředí. Rob chce zejména zkontrolovat, co se přidá, co se bude aktualizovat a co se odstraní.
  4. Pokud je Rob spokojen s tím, že nasazení neprojde žádnými nežádoucími změnami stávajících prostředků nebo dat, zasadí sestavení do fronty pomocí definice sestavení DeployToStaging .
  5. Definice sestavení DeployToStaging spustí vlastní soubory projektu. Ty publikují prostředky nasazení na primární webový server v přípravném prostředí.
  6. Kontroler WFF (Web Farm Framework) synchronizuje webové servery v přípravném prostředí. Tím se aplikace zpřístupní na všech webových serverech v serverové farmě.

Jak proces nasazení funguje?

Definice sestavení DeployToStaging poskytuje do nástroje MSBuild tyto argumenty:

/p:TargetEnvPropsFile=[path]\Env-Stage.proj;OutputRoot=[path to build folder]

Vlastnost TargetEnvPropsFile říká souboru Publish.proj, kde najít soubor projektu specifického pro prostředí pro import. Vlastnost OutputRoot přepíše předdefinované hodnoty a označuje umístění složky sestavení, která obsahuje prostředky, které chcete nasadit. Když Rob zapíše sestavení do fronty, použije kartu Parametry k poskytnutí aktualizované hodnoty pro vlastnost OutputRoot .

Když Rob zapíše sestavení do fronty, použije kartu Parametry k poskytnutí aktualizované hodnoty pro vlastnost OutputRoot.

Poznámka

Další informace o tom, jak vytvořit definici sestavení, jako je tato, najdete v tématu Nasazení konkrétního sestavení.

Definice sestavení DeployToStaging-WhatIf obsahuje stejnou logiku nasazení jako definice sestavení DeployToStaging . Obsahuje však další argument WhatIf=true:

/p:TargetEnvPropsFile=[path]\Env-Stage.proj;
   OutputRoot=[path to build folder];
   WhatIf=true

Vlastnost WhatIf v souboru Publish.proj označuje, že všechny prostředky nasazení by měly být publikovány v režimu "what if". Jinými slovy, soubory protokolů se generují, jako by nasazení proběhlo, ale v cílovém prostředí se ve skutečnosti nic nezmění. To vám umožní vyhodnotit dopad navrhovaného nasazení – zejména to, co se přidá, co se aktualizuje a co se odstraní – ještě předtím, než skutečně uděláte nějaké změny.

Poznámka

Další informace o tom, jak nakonfigurovat nasazení typu "co když", najdete v tématu Provádění nasazení What If.

Jakmile nasadíte aplikaci na primární webový server v přípravném prostředí, WFF automaticky synchronizuje aplikaci na všech serverech v serverové farmě.

Poznámka

Další informace o konfiguraci služby WFF pro synchronizaci webových serverů najdete v tématu Vytvoření serverové farmy s architekturou webové farmy.

Nasazení do produkčního prostředí

Po schválení sestavení v přípravném prostředí může tým Fabrikam, Inc. publikovat aplikaci do produkčního prostředí. V produkčním prostředí se aplikace "živě" dostane do cílové skupiny koncových uživatelů.

Produkční prostředí je v internetové hraniční síti. Ten je izolovaný od interní sítě, která obsahuje buildovací server. Správce produkčního prostředí Lisa Andrews musí ručně zkopírovat balíčky pro nasazení webu ze buildového serveru a importovat je do služby IIS na primárním produkčním webovém serveru.

Správce produkčního prostředí musí ručně zkopírovat balíčky nasazení webu ze buildového serveru a importovat je do I I S na primárním produkčním webovém serveru.

Toto je hlavní proces nasazení do produkčního prostředí:

  1. Vývojářský tým lise poradí, že sestavení je připravené k nasazení do produkčního prostředí. Tým informuje Lisu o umístění balíčků pro nasazení webu ve složce drop na buildovacím serveru.
  2. Lisa shromažďuje webové balíčky ze buildového serveru a zkopíruje je na primární webový server v produkčním prostředí.
  3. Lisa pomocí Správce služby IIS importuje a publikuje webové balíčky na primárním webovém serveru.
  4. Kontroler WFF synchronizuje webové servery v produkčním prostředí. Tím se aplikace zpřístupní na všech webových serverech v serverové farmě.

Jak proces nasazení funguje?

Správce služby IIS obsahuje Průvodce importem balíčku aplikace, který usnadňuje publikování webových balíčků na web služby IIS. Návod k provedení tohoto postupu najdete v tématu Ruční instalace webových balíčků.

Závěr

Toto téma poskytuje ilustraci životního cyklu nasazení pro typickou webovou aplikaci na podnikové úrovni.

Toto téma je součástí řady kurzů, které poskytují pokyny k různým aspektům nasazení webových aplikací. V praxi existuje mnoho dalších úkolů a aspektů v každé fázi procesu nasazení a není možné je všechny pokrýt v jednom návodu. Další informace najdete v těchto kurzech: