Wykorzystanie chmury Microsoft Azure w scenariuszach dev&test

12
E-seminarium Microsoft | AMG.net Wykorzystanie chmury Microsoft Azure w scenariuszach R&D oraz Dev&Test E-seminarium Microsoft | AMG.net Wykorzystanie chmury Microsoft Azure w scenariuszach R&D oraz Dev&Test designed by Freepik.com

Transcript of Wykorzystanie chmury Microsoft Azure w scenariuszach dev&test

E-seminarium Microsoft | AMG.net

Wykorzystanie chmury Microsoft Azure

w scenariuszach R&D oraz Dev&Test

E-seminarium Microsoft | AMG.net

Wykorzystanie chmury Microsoft Azure

w scenariuszach R&D oraz Dev&Test

desi

gned

by

Free

pik.

com

2

E-SEMINARIUM MICROSOFT | AMG.NET

Dobre środowisko rozwojowo-testowe najpełniej odwzorowuje środowisko produkcyjne, a czas i koszt jego wytworzenia jest możliwie najniższy. W artykule prezentujemy trzy podstawowe scenariusze powoływania środowisk R&D oraz Dev&Test z wykorzystaniem galerii środowisk IT chmury Azure, usług Azure Automation oraz rozwiązania Azure Site Recovery.

Wykorzystanie chmury Microsoft Azure w scenariuszach R&D oraz Dev&Test

środowisk deweloperskich wykorzystywa-nych w trakcie projektowania, rozwijania i testowania aplikacji webowych oraz jakie przynosi to korzyści dla biznesu.

Cechy dobrych środowisk Dev&TestDobre środowisko rozwojowo-testowe naj-pełniej odwzorowuje środowisko produk-cyjne, przy czym czas i koszt jego wytwo-rzenia jest możliwie najniższy. Z perspek-tywy dotychczas stosowanych rozwiązań mamy jednak tutaj do czynienia z dwiema przeciwstawnymi wartościami. Dlaczego? Współczesne aplikacje są na tyle złożone, że powielenie wydajności, dostępności i elastyczności środowiska produkcyjne-go w środowisku testowym rzadko kiedy możliwe jest w firmowej infrastrukturze, ponieważ generowałoby to olbrzymie kosz-ty, a przy tym przygotowanie wymaganej infrastruktury byłoby niezwykle czaso-chłonne.

Agenda artykułuOstatni artykuł z cyklu chmura oblicze-niowa Microsoft Azure w scenariuszach biznesowych poświęcony jest budowie środowisk programistyczno-testowych (Dev&Test) oraz badawczo-rozwojowych (R&D) dla osób, które na co dzień zajmują się tworzeniem aplikacji webowych.

W pierwszej części artykułu spróbujemy nakreślić, czym są dobre środowiska dewe-loperskie i testowe oraz jakie funkcjonal-ności w zarządzaniu cyklem życia aplikacji oferuje publiczna chmura obliczeniowa. Na kolejnych stronach omawiamy przykła-dowe scenariusze tworzenia takich środo-wisk z wykorzystaniem zasobów chmury Microsoft Azure. W dalszej części prezentu-jemy funkcje Visual Studio Online przezna-czone do monitorowania oraz prowadzenia testów wydajnościowych aplikacji.

Artykuł w praktycznym ujęciu pokazu-je, w jaki sposób chmura Microsoft Azure automatyzuje i skraca czas powoływania

PROWADZĄCY

Jarosław Sokolnicki, Business Development Manager,

Microsoft

Tomasz Ludwiczak, architekt rozwiązań Microsoft, AMG.net

E-SEMINARIUM MICROSOFT | AMG.NET

3

Wiele firm próbuje oszczędzać na kosz-tach wytworzenia i utrzymania środowisk deweloperskich, choćby poprzez zakup mniejszej ilości, nierzadko o niższej wy-dajności. W rezultacie projektanci oraz testerzy aplikacji mają do dyspozycji infra-strukturę, która tylko w części odwzorowu-je środowisko produkcyjne, co negatywnie odbija się na procesie tworzenia, testowa-nia i wprowadzania aplikacji do produkcji.

NIE dla oszczędności na rozwójPrzykładem może być wprowadzenie po-zornych oszczędności w infrastrukturze Dev&Test w obszarze skalowania horyzon-talnego (wszerz). Wyobraźmy sobie sytu-ację, w której środowisko produkcyjne dla aplikacji webowej składa się z trzech ser-werów oraz modułu równoważenia obciążeń sieciowych (load balancer). Aby ograniczyć koszty, firma zdecydowała się zbudować środowisko rozwojowe, opierając się na jednej instancji wirtualnej. W rezultacie projektanci rozwiązania nie mogli w pełni przetestować zachowania i wydajności apli-kacji w scenariuszu, w którym obciążenia rozkładane są na większą liczbę maszyn.

W tym momencie warto wprowadzić podział na środowiska deweloperskie i testowe, przy czym te ostatnie z zało-żenia powinny wiernie odwzorowywać infrastrukturę produkcyjną, w której uru-chamiana będzie pisana aplikacja. Wynika to z faktu, że wszystkie błędy aplikacji powinny zostać ujawnione w środowisku testowym, zanim trafi ona do użytkownika końcowego. W przeciwnym razie może się okazać, że aplikacja, która poprawnie dzia-ła w infrastrukturze rozwojowo-testowej, popełnia błędy (funkcjonalne, wydajno-ściowe, niezawodnościowe) w środowisku produkcyjnym przedsiębiorstwa.

Chmura odpowiedzią na wyzwaniaChmura stanowi odpowiedź na wszystkie wyzwania przedsiębiorstw stawiane przez działy R&D oraz Dev&Test, umożliwiając wierne odwzorowanie środowiska docelowe-go przy możliwie najniższym koszcie i cza-sie przygotowania takiej infrastruktury.

Chmura umożliwia wydzierżawienie praktycznie nieograniczonej mocy obli-

czeniowej w czasie mniejszym niż minuta, godzina, dzień, a nawet tydzień. To szcze-gólnie istotne w odniesieniu do projektów, które trwają krótko i w których przypad-ku rezerwowanie szerokich zasobów po stronie infrastruktury przedsiębiorstwa byłoby czasochłonne i nieopłacalne ekono-micznie. Przykładem takiego projektu jest przygotowanie wersji pokazowej aplikacji (Proof of Concept), która po uzyskaniu akceptacji po prostu zwolni zarezerwowa-ne zasoby.

Chmura obliczeniowa oferuje pełną elastyczność w zakresie alokacji zasobów na potrzeby prowadzonych projektów. Administrator chmury przedsiębiorstwa może powoływać maszyny wirtualne na krótki czas i wyłączać je, kiedy nie są potrzebne. W przypadku wygaszonych instancji wnosimy tylko niewielką opłatę za wykorzystaną pamięć masową (stora-ge), ale natychmiast możemy je uruchomić ponownie, jeśli dany projekt uzyska apro-batę i zostanie skierowany do dalszego etapu prac.

Ograniczenie kosztów oraz szybkość powoływania infrastruktury do życia to dwie zasadnicze korzyści z tworzenia śro-dowisk rozwojowych na bazie infrastruk-tury chmury Microsoft Azure. Zalety te są zauważalne zarówno w przypadku małych serwerowni, jak i dużych centrów danych, w których wierne odwzorowanie środowi-ska produkcyjnego byłoby bardzo drogie.

Microsoft Azure w cyklu życia aplikacjiW wielu przypadkach cykl życia współcze-snych aplikacji jest zgoła inny niż tych pro-dukowanych i rozwijanych jeszcze dekadę temu. Coraz rzadziej zdarza się, że pracę z aplikacją zaczynamy od fazy projektu. Zamiast tego często mamy do czynienia ze zleceniami, które dotyczą rozwoju i utrzy-mania istniejących aplikacji, które działają w środowisku produkcyjnym.

W skrajnych przypadkach możemy wy-obrazić sobie scenariusz, w którym musi-my odwzorować środowisko produkcyjne na potrzeby rozwoju aplikacji webowej dostępnej jedynie w postaci zarchiwizo-wanego pliku lub też takiej, dla której nie mamy wcześniejszych wersji kodu (brak kontroli wersji).

Ograniczenie kosztów oraz szybkość powoły-wania infrastruktury do życia to dwie zasadni-cze korzyści z tworzenia środowisk rozwojowych na bazie infrastruktury chmury Microsoft Azure.

4

E-SEMINARIUM MICROSOFT | AMG.NET

Przygotowanie środowiska rozwojowo--testowego, które pozwoliłoby wprowa-dzić niewielką zmianę w takiej aplikacji z wykorzystaniem lokalnej infrastruktury przedsiębiorstwa, może zająć nawet trzy miesiące. Z perspektywy biznesu tak długi okres wprowadzania zmian nie ma uzasad-nienia, a więc cały projekt zostanie po-rzucony. Chyba że skorzystamy z zasobów chmury obliczeniowej, która pozwala lepiej zaadresować obecne wymagania działów rozwoju, programowania i testowania.

Microsoft Azure umożliwia przejęcie kontroli nad rozwojem i testowaniem apli-kacji w dowolnym cyklu jej życia. Etapy tego cyklu obejmują kolejno: zdefiniowanie nowych wymagań, projektowanie, rozwój, testowanie, testy akceptacji użytkownika (UAT), działanie w trybie produkcyjnym, monitorowanie oraz zarządzanie. Chmura obliczeniowa pozwala na powielenie dużej liczby konfiguracji, obciążeń i scenariuszy użycia, które mogą być odmienne w zależ-ności od etapu życia aplikacji.

Chmura Microsoft Azure umożliwia two-rzenie środowisk rozwojowo-testowych na

wiele sposobów. W artykule omawiamy trzy podstawowe scenariusze budowy takich rozwiązań, projektowanych na podstawie galerii gotowych środowisk IT, usługi Azure Automation oraz rozwiązania Azure Site Recovery. Z perspektywy dzia-łów deweloperskich wszystkie te scenariu-sze łączy możliwość automatyzacji i przy-spieszania tworzenia środowisk Dev&Test, które udaje się powoływać do życia w kil-kadziesiąt minut.

Galerie środowisk ITNajprostszym sposobem na stworzenie infrastruktury Dev&Test jest skorzysta-nie z galerii – rynku gotowych środowisk IT uruchamianych w chmurze Microsoft Azure. Znajdziemy tutaj szereg predefi-niowanych maszyn wirtualnych zgrupowa-nych w gotowe do uruchomienia aplikacje i usługi biznesowe, w tym: środowisko Microsoft SharePoint, usługi serwe-rowe Microsoft SQL Server AlwaysOn Availability Groups, Oracle Database, Microsoft Biztalk, czy też aplikacje bizne-sowe Microsoft Dynamic AX.

Scenariusze tworzenia środowisk rozwojowo-testowych

E-SEMINARIUM MICROSOFT | AMG.NET

5

Microsoft wraz z nowym portalem chmu-ry Azure wprowadził nowy mechanizm za-rządzania zasobami. Grupa zasobów agre-guje w jednym pakiecie maszyny wirtualne, ustawienia sieci wirtualnej oraz pozostałe zasoby chmury, w tym skrypty automaty-zacji, aby administratorzy chmury mogli w szybki sposób przygotowywać i powielać infrastrukturę pod własne projekty.

Przykładem środowiska, które może zostać wdrożone z galerii, jest farma SharePoint. Składa się ona z serwera usłu-gi SharePoint, serwera baz danych oraz kontrolera domeny. W artykule pokażemy, jak uruchomić w pełni funkcjonalne środo-wisko SharePoint w mniej niż pięć minut.

W tym miejscu dodajmy, że administra-tor ma możliwość stworzenia firmowej galerii, która będzie zawierała predefinio-wane środowiska zaprojektowane z myślą o danej organizacji. Wówczas programista, projektant, architekt IT, czy też pracownik działu R&D może w prosty sposób wybrać i wdrożyć takie środowisko na potrzeby prowadzonych przez siebie projektów. Właściwy proces uruchamiania infrastruk-tury z galerii jest w pełni zautomatyzo-wany, a uprzednio przygotowane i dosto-sowane środowisko nie wymaga dalszej konfiguracji.

Galeria w praktyceW tej części artykułu spróbujemy pokazać, jak w praktyce wygląda wdrażanie far-my serwerów i usług SharePoint z galerii Microsoft Azure. Zaczynamy od dodania nowej grupy zasobów. W tym celu w portalu Azure otwieramy galerię – rynek z apli-kacjami (Marketplace), gdzie wybieramy SharePoint Server Farm. Następnie wprowa-dzamy nazwę grupy zasobów, nazwę dome-ny oraz tworzymy użytkownika, który będzie jednocześnie administratorem tej domeny.

W kolejnym kroku spośród wielu predefi-niowanych maszyn wirtualnych wskazujemy najbardziej odpowiednią konfigurację śro-dowiska wirtualnego. Konfiguracje te różnią się poziomem cenowym, przypisanymi za-sobami (moc obliczeniowa, przestrzeń dys-kowa) oraz możliwością korzystania z do-datkowych funkcji chmury takich jak rów-noważnie obciążeń, czy też mechanizmów automatycznego skalowania. W podobny sposób zamawiamy serwer baz danych.

Tworzymy konto w usłudze SQL Server oraz przypisujemy mu hasło. Następnie wpro-wadzamy ustawienia serwerów sieci web i aplikacji programu SharePoint oraz defi-niujemy konta serwisowe.

Kolejny etap powoływania do życia farmy SharePoint polega na utworzeniu i skonfigurowaniu pozostałych zasobów chmury, w tym sieci wirtualnej, magazynu danych oraz narzędzi diagnostycznych. Magazyn to miejsce, w którym składowa-ne są maszyny wirtualne i bazy danych. W ostatnim kroku wybieramy lokalizację serwerów.

Każdy etap tworzenia infrastruktury z galerii został maksymalnie uproszczony, a w większości okien wyboru możemy po prostu pozostawić wartości domyślne. Wystarczy wskazać raptem kilka informa-cji, aby szybko wygenerować i wdrożyć nowe, kompletne środowisko rozwojowe w chmurze Azure.

Proces tworzenia maszyn wirtualnych w grupie zasobów, w tym udostępnienie ich na świat, zajmuje około kilkunastu minut. Czas przygotowania nowego środo-wiska zależy od tego, jak bardzo złożoną konfigurację wybraliśmy. W podstawowym scenariuszu farmy SharePoint powoływane są do życia trzy instancje wirtualne, choć istnieje możliwość uruchomienia dodat-kowych serwerów w konfiguracji wysokiej wydajności. Dla porównania, przygotowa-nie podobnego środowiska z wykorzysta-niem fizycznych maszyn w infrastrukturze centrum danych przedsiębiorstw zajęłoby co najmniej kilka dni.

Tunelem do chmuryPodłączenie się do środowiska dewelo-perskiego w chmurze wymaga zestawienia bezpiecznego połączenia VPN. Wbrew pozorom, nie jest to trudne, a jednocze-śnie przynosi szereg korzyści, bowiem nie wymaga wprowadzania żadnych zmian w infrastrukturze swojej sieci, a komuni-kacja z serwerami w chmurze odbywa się dokładnie w ten sam sposób jak z zasoba-mi udostępnianymi w lokalnej sieci LAN przedsiębiorstwa.

Proces konfiguracji połączenia VPN wymaga wygenerowania certyfikatu cy-frowego, który umożliwi uwierzytelnienie obu stron komunikacji oraz zainstalowanie

Grupa zasobów agreguje w jednym pakiecie ma-szyny wirtualne, usta-wienia sieci wirtualnej oraz pozostałe zasoby chmury, w tym skrypty automatyzacji, aby admi-nistratorzy chmury mogli w szybki sposób przygo-towywać i powielać in-frastrukturę pod własne projekty.

6

E-SEMINARIUM MICROSOFT | AMG.NET

na komputerze użytkownika niewielkiej aplikacji – klienta VPN służącego do zesta-wienia bezpiecznego tunelu. Na żadnym z tych etapów nie jest wymagana ingeren-cja firmowego administratora. Certyfikat ten może zostać podpisany samodzielnie przez użytkownika (self-signed), po czym należy dodać go do magazynu zaufanych certyfikatów na komputerze. W przypad-ku połączeń VPN do chmury Azure nie ma konieczności korzystania z certyfikatów publicznych, weryfikowanych przez zaufa-ny urząd certyfikacji.

Ostatni krok po zestawieniu tunelu VPN do chmury polega na sprawdzeniu, np. za pomocą polecenia ping, czy możemy na-wiązać połączenie z serwerem SharePoint, serwerem SQL oraz kontrolerem domeny. Łatwo zauważyć, że wszystkie serwery w obrębie wirtualnej sieci podpięte są do tej samej domeny i mogą być zarzą-dzane z poziomu Server Managera. Aby zweryfikować, czy instalacja SharePoint została w pełni zakończona, logujemy się do centralnej konsoli administracji oraz wchodzimy na domyślną aplikację webową serwera.

W tym miejscu warto zwrócić uwagę na dwie istotne kwestie. Po pierwsze, usługi SharePoint instalowane z galerii Azure mają automatycznie skonfigurowane wyj-ście na świat, a więc możemy uzyskiwać do nich dostęp i zarządzać nimi z zewnątrz, z internetu. Po drugie, nakreślony tutaj scenariusz z powodzeniem może zostać zrealizowany w środowisku produkcyjnym, o ile zdecydujemy się uruchomić portal SharePoint w chmurze Microsoft Azure na potrzeby pracowników naszej organizacji.

Azure AutomationAdministrator chmury może zautomaty-zować proces powoływania środowisk Dev&Test za pomocą skryptów Windows PowerShell oraz mechanizmów Azure Automation. W najprostszym scenariuszu administrator ma możliwość podłączenia się do chmury, ręcznego wydawania ko-mend PowerShell i uruchamiania wcześniej przygotowanych skryptów powłoki.

Chmura Microsoft oferuje mechanizm Azure Automation, który pozwala na au-tomatyzację przepływów PowerShell za pomocą runbooków, harmonogramowania

zadań oraz obsługi zasobów lokalnych (on--premises) przy użyciu skruptów poprzez Azure Operational Insights.

W Azure Automation przepływ skryptów PowerShell nazywany jest runbookiem. Do dyspozycji mamy galerię 160 gotowych skryptów, które możemy pobierać i uru-chamiać we własnym środowisku. Istnieje możliwość łącznia wielu runbooków w jed-nym, aby tworzyć własne, złożone prze-pływy pracy przeznaczone do zarządzania środowiskiem chmury.

Z perspektywy zarządzania kosztami Azure Automation pozwala zautomaty-zować proces podnoszenia i wygaszania całych środowisk chmurowy, kiedy nie są używane. Deweloper, zamiast wyłączać pojedyncze maszyny wirtualne, może wy-musić za pomocą pojedynczego skryptu zatrzymanie całej farmy serwerów, tylko po to, aby nie płacić za zasoby, które w da-nej chwili nie są potrzebne.

Ciekawostka: Azure Automation umoż-liwia zarządzanie środowiskami lokalnymi poprzez Azure Operational Insights.

Automatyzacja w praktyceW ramach licencji MSDN każdy programi-sta otrzymuje 150 USD do wykorzystania w chmurze Azure oraz na zakup oprogra-mowania. Dzięki temu deweloper, który rozsądnie zarządza swoją subskrypcją chmury, choćby właśnie za pomocą mecha-nizmów automatyzacji, może utrzymywać nawet kilka środowisk rozwojowo-testo-wych bez ponoszenia dodatkowych opłat.

W artykule pokażemy, w jaki sposób programista może podnosić i wyłączać środowisko rozwojowe w zależności od tego, kiedy pracuje nad danym projektem. Skrypty automatyzacji obsługiwane są w starym i nowym portalu Azure, choć najnowsza odsłona tego narzędzia wpro-wadza pojęcie grupy zasobów, co zostało omówione już wcześniej w kontekście uru-chamiania farmy SharePoint.

Zaczynamy od utworzenia nowego konta automatyzacji w nowym portalu chmury Azure. Konto takie, dodajmy, że niewidoczne w starym Azurze, umożliwia zarządzanie automatyzacją w szerokim zakresie. Funkcje obejmują możliwość podłączenia runbooka pod konkretny za-sób chmury, w naszym przypadku farmę

Z perspektywy zarzą-dzania kosztami Azure Automation pozwala zautomatyzować proces podnoszenia i wygasza-nia całych środowisk chmurowy, kiedy nie są używane.

E-SEMINARIUM MICROSOFT | AMG.NET

7

serwerów SharePoint. Dodajmy, ze Azure umożliwia tworzenie wielu kont automaty-zacji, aby lepiej grupować i organizować zadania automatyzacji w ramach prowa-dzonych projektów.

Konto automatyzacji zawiera kilka pre-definiowanych zasobów. Moduły te są de facto poleceniami PowerShell, których można używać w skryptach. Pierwszą czynnością do wykonania jest przypisa-nie poświadczeń użytkownika, z którego poziomu uruchamiane będą runbooki. Wymaga to użycia konta użytkownika zdefiniowanego w katalogu Azure Active Directory z uprawnieniami do subskrypcji w Azure.

Azure Resource ManagerModuł Azure Resource Manager umożliwia zarządzanie grupami zasobów oraz taga-mi obiektów powoływanych w chmurze. W tym miejscu warto zwrócić uwagę na fakt, że musimy mieć wersję Resource Manager zgodną z aktualną wersją tego modułu w Azure. Aktualna wersja tego modułu oznaczona jest numerem 0.8.16. W praktyce oznacza to konieczność zalo-gowania się do starego portalu chmury, sprawdzenia i pobrania potrzebnej wersji modułu Resource Manager oraz wgrania go na konto automatyzacji. Niedogodność ta wynika z innego sposobu numeracji mo-dułu Resource Managera w nowym portalu Azure, dlatego że „właściwa” informacja o numerze wersji widoczna jest jedynie w starym portalu.

Moduł Azure Resource Manager roz-powszechniany jest w formie skompreso-wanego archiwum, które dołączamy do konta automatyzacji. Istnieje możliwość wgrania odmiennych wersji modułów dla różnych kont automatyzacji w celach roz-woju aplikacji, testowania czy używania ich w sprawdzonym, stabilnym środowisku produkcyjnym. Po wyodrębnieniu skryptów z paczki będziemy mogli je podejrzeć oraz używać ich w ramach konta automatyzacji. Nas najbardziej interesuje nowe polecenie Get-AzureResources.

Zatrzymywanie środowiska chmuryAzure Automation w połączeniu z Resource Managerem umożliwia automatyzację pro-

cesów zarządzania zasobami w chmurze, choćby w taki sposób, aby za pomocą poje-dynczego skryptu można było podnieść lub zgasić całą grupę zasobów chmury, w na-szym przypadku farmę SharePoint. Ten konkretny scenariusz ma kluczowe znacze-nie z perspektywy optymalizacji kosztowej środowisk rozwojowo-testowych.

Skrypt Stop-AzureVMs, który został automatycznie dodany z galerii do naszego konta automatyzacji, dostosowany jest do obsługi zasobów chmury na poziomie po-jedynczych usług. Dzięki temu skrypt może być wykorzystywany w taki sam sposób, jak robiliśmy to w starym portalu Azure.

Wystarczy jednak wprowadzenie kilku prostych zmian w skrypcie, aby sprawnie zarządzać grupami zasobów. Wymaga to podmiany w samym skrypcie odwołań do usług chmury (zmienna $ServiceName) na rzecz grup zasobów ($ResourceName). Dzięki temu zamiast wskazywać nazwy usług dla maszyn wirtualnych, które chce-my wygasić, w tym samym miejscu będzie-my mogli posługiwać się nazwami grup zasobów. Oczywiście, każdą taką zmianę w skrypcie automatyzacji należy dokładnie przetestować, weryfikując, czy wszystkie zasoby w grupie będzie można poprawnie wygasić.

Z uwagi na fakt, że polecenia w modu-łach mogą się powtarzać, warto do każ-dego z nich dodać przedrostek z nazwą i wersją modułu. Należy także zwrócić uwagę, że testowana wersja Resource Managera 0.8.16 nie ma polecenia get-vm, które pojawi się w kolejnych wydaniach tego modułu.

Harmonogramy Azure AutomationProces uruchamiania przepływów skryp-tów (runbooków) warto zautomatyzować na podstawie jednego lub kilku harmonogra-mów. Przykładowy scenariusz zakłada, że farma zasobów SharePoint zostanie wyga-szona w piątek o godzinie 16. i uruchomio-na ponownie w poniedziałek rano. W efek-cie firma nie płaci za wynajem zasobów chmury Azure, kiedy wszyscy programiści odpoczywają w swoich domach. Wymaga to jedynie prostej modyfikacji skryptu, który w zależności od bieżącego stanu ma-szyny wirtualnej będzie ją podnosił lub wy-

Moduł Azure Resource Manager rozpowszech-niany jest w formie skompresowanego archi-wum, które dołączamy do konta automatyzacji. Istnieje możliwość wgra-nia odmiennych wersji modułów dla różnych kont automatyzacji w celach rozwoju aplika-cji, testowania czy uży-wania ich w sprawdzo-nym, stabilnym środowi-sku produkcyjnym.

8

E-SEMINARIUM MICROSOFT | AMG.NET

gaszał. Dzięki temu, że korzystamy z mo-dułu Resource Manager w nowym portalu Azure, nie jesteśmy ograniczeni wyłącznie do nazw zasobów, ale możemy posługiwać się także nazwami grup zasobów.

Etykiety zasobówNowością w nowej wersji portalu Azure jest możliwość przypisywania etykiet (ta-gów) poszczególnym zasobom lub grupom zasobów chmury. Mechanizm ten ułatwia odnajdywanie zasobów zorganizowanych w ramach pewnej grupy, czy też projek-tu i może być wykorzystywany zarówno w skryptach, jak i bezpośrednio w nowym panelu chmury Azure.

Etykiety warto wykorzystać do katego-ryzacji zasobów, np. zgodnie z ich przy-pisaniem do grup deweloperskich. Dzięki temu osoba, która nadzoruje ich pracę, może szybko przefiltrować listę zasobów zaalokowanych pod konkretny dział firmy, projekt czy zarezerwowanych dla danej grupy programistów.

Azure Site RecoveryTrzeci scenariusz tworzenia środowisk de-v&test w chmurze Microsoft Azure zakłada użycie usługi Azure Site Recovery (ASR) do odwzorowania środowiska produkcyjnego na potrzeby prowadzenia prac rozwojowo--testowych aplikacji webowych. Azure Site Recovery jest narzędziem, które umożliwia wdrażanie strategii odzyskiwania syste-mów i danych po katastrofie (disaster reco-very) z wykorzystaniem zasobów chmury.

Szerzej o usłudze Azure Site Recovery pisaliśmy w artykule „Zarządzanie cią-głością biznesową w rozwiązaniach firmy Microsoft”. W tym miejscu przypomnijmy jedynie, że usługa ta umożliwia wdraża-nie strategii odtwarzania po katastrofie w trybie site-to-site, który zakłada sklo-nowanie podstawowej infrastruktury do zapasowego centrum danych przedsię-biorstwa, z wykorzystaniem Azure Site Recovery jako środowiska zarządzającego procesem tworzenia i odzyskiwania sys-temów po awarii. Drugi wariant użycia Azure Site Recovery to wyniesienie kopii infrastruktury klienta do chmury Azure poprzez sklonowanie maszyn wirtualnych Hyper-V i VMware oraz zawartości macie-rzy dyskowych (SAN).

W kontekście naszego artykułu, Azure Site Recovery może zostać wykorzystany do replikacji środowiska produkcyjnego w izolowanej sieci chmury obliczeniowej, na potrzeby uruchamiania środowisk de-weloperskich. Co ważne, usługa ta może zostać użyta do uruchomienia wielu kopii (wystąpień) infrastruktury produkcyjnej w Azure.

Azure Site Recovery zapewnia niezwykłą elastyczność tworzenia tego typu środo-wisk rozwojowo-testowych, z możliwością alokowania praktycznie nieograniczonej ilości zasobów oraz płacenia za faktycznie wykorzystane zasoby. Usługa umożliwia szybkie uruchomienie kopii środowiska produkcyjnego jako środowiska Dev&Test w chmurze, co pozwala na bezpieczną pra-cę na wiernej kopii produkcyjnych syste-mów i danych. Jednocześnie zmiany wpro-wadzone w środowisku deweloperskim mogą zostać w prosty sposób przeniesione do środowiska produkcyjnego, o ile zajdzie taka potrzeba.

Azure Site Recovery stanowi optymal-ną kosztowo opcję tworzenia środowisk Dev&Test z jeszcze jednego powodu. Mamy tutaj do czynienia z samodzielną usługą, rozliczaną miesięcznie w modelu pay-as--you-go według średniej liczby chronio-nych maszyn, przy czym pierwsze 31 dni dla każdej maszyny jest za darmo. W pew-nych scenariuszach możliwe jest zatem utworzenie repliki środowiska produkcyj-nego w chmurze, a następnie testowanie własnych rozwiązań przez pierwsze 30 dni bez ponoszenia dodatkowych kosztów.

Dla porządku dodajmy, że usługa Azure Site Recovery dostępna jest także w pakietach Availability on Demand oraz Operations Managment Sute (zawiera Operational Insights, Azure Backup, Site Recovery i Azure Automation).

Azure Site Recovery w praktyceZałożenie konta w Azure Site Recovery wymaga wskazania jego nazwy, wybra-nia lokalizacji (regionu) przechowywania i uruchamiania kopii środowiska lokalnego oraz podpięcia subskrypcji chmury Azure. Co ważne, obecna wersja tej usługi umożli-wia replikację dowolnych maszyn Hyper-V w tym tych, które nie są zarządzane przez

Azure Site Recovery stanowi optymalną kosz-towo opcję tworzenia środowisk Dev&Test z jeszcze jednego po-wodu. Mamy tutaj do czynienia z samodziel-ną usługą, rozliczaną miesięcznie w modelu pay-as-you-go według średniej liczby chronio-nych maszyn, przy czym pierwsze 31 dni - dla każdej maszyny jest za darmo.

E-SEMINARIUM MICROSOFT | AMG.NET

9

Microsoft System Center. Replikacja po-jedynczej maszyny w modelu site-to-site kosztuje kilkanaście dolarów.

W przykładowym scenariuszu opo-wiemy, jak przyłączyć fizyczny serwer Windows Server 2012 R2 Hyper-V do usługi Azure Site Recovery. Zaczynamy od zdefi-niowania nowej konfiguracji usługi (site), po czym przystępujemy do podłączania serwera do chmury. Wymaga to pobrania i zainstalowania na serwerze niewielkiego narzędzia wraz z unikalnym kluczem reje-stracyjnym, który pozwoli na zarządzanie nim z poziomu Azure Site Recovery.

W trakcie instalacji agenta usługi Azure Recovery Services Agent na serwerze wska-zujemy klucz rejestracyjny. Wszystkie infor-macje potrzebne do podpięcia serwera do chmury, w tym o konfiguracji usługi (site) oraz subskrypcji Azure, zaszyte są w kluczu rejestracyjnym. Jeśli wszystko przebiegnie poprawnie, nowo dodany serwer będzie widoczny z poziomu portalu Azure.

Warto zaznaczyć, że nakreślony tutaj scenariusz dotyczy wyłącznie podłącza-nia fizycznego serwera Hyper-V do usłu-gi Azure Site Recovery. Zanim ochroną obejmiemy działające w obrębie tego serwera maszyny wirtualne, konieczne jest stworzenie przeznaczonej do tego celu pamięci masowej (storage), na której będą przechowywane repliki tych maszyn. W przypadku nieaktywnych (wygaszonych) instancji wirtualnych opłaty pobierane są wyłącznie za wykorzystaną przestrzeń dyskową, co jest niewątpliwie atrakcyjne ekonomicznie w przypadku tworzenia śro-dowisk Dev&Test.

Grupy zabezpieczeńZarządzanie ustawieniami replikacjami, czy też zasadami związanymi z zarządza-niem ciągłością działania (business conti-nuity) w Azure Site Recovery odbywa się na poziomie kontenerów – grup zabezpieczeń (protection group). Kontenery te tworzone są wewnątrz witryny usługi (site), przy czym to administrator decyduje o przypi-saniu konkretnych maszyn wirtualnych do danego kontenera. A zatem istnieje moż-liwość rozdzielenia maszyn wirtualnych tego samego fizycznego serwera między różne kontenery tylko po, aby wprowadzić niezależne polisy replikacji, a więc różne

poziomy ochrony tego typu środowisk w chmurze Azure.

Właściwy proces dołączenia maszyny wirtualnej do kontenera wymaga wskaza-nia zainstalowanego w niej systemu ope-racyjnego (Windows, Linux) oraz wybrania dysku systemowego, jeśli do maszyny pod-łączono więcej niż jeden nośnik pamięci.

Replikacja do chmuryW panelu Azure Site Recovery możemy zo-baczyć listę replikowanych (klonowanych) maszyn wirtualnych oraz zmienić parame-try każdej z nich. Azure przypisuje maszy-nom domyślny rozmiar spośród kilku pre-definiowanych konfiguracji, co oczywiście warto dostosować do własnych potrzeb, jeśli zamierzamy te maszyny uruchamiać w chmurze. W trybie podstawowym (nor-malnym) maszyny pozostają wyłączonymi replikami instancji wirtualnych wyniesio-nymi do chmury.

Azure Site Recovery umożliwia klono-wanie serwerów wirtualnych z użyciem mechanizmów automatycznego przełącza-nia (failover) z siecią oraz bez sieci. Tryb przełączania z siecią umożliwia powielanie środowisk produkcyjnych pod środowiska rozwojowe i testowe.

Synchronizacja danych do chmuryCzas potrzebny na wykonanie procesu syn-chronizacji ściśle zależy od wielkości ma-szyn wirtualnych, a więc ilości danych, któ-re musimy wysłać do chmury. Oczywiście, replikacja inicjalna może trwać dość długo, choć później mamy do czynienia wyłącznie z synchronizacją różnicową tych maszyn. Administrator może zdefiniować harmo-nogram synchronizacji, aby wprowadzić pewną cykliczność replikacji środowiska produkcyjnego do chmury. Przykładowy scenariusz takiego wdrożenia zakłada od-wzorowanie infrastruktury produkcyjnej w środowisku Dev&Test raz na tydzień, np. w weekend.

Microsoft oferuje dodatkową usługę, która polega na fizycznym przekazaniu ob-razów maszyn wirtualnych na dysku twar-dym i przesłaniu ich kurierem do centrum danych chmury obliczeniowej. Dane obra-zów szyfrowane są za pomocą Bitlockera, a więc pozostają bezpieczne także wów-

Zarządzanie ustawienia-mi replikacjami, czy też zasadami związanymi z zarządzaniem ciągło-ścią działania (business continuity) w Azure Site Recovery odbywa się na poziomie kontenerów – grup zabezpieczeń (protection group).

10

E-SEMINARIUM MICROSOFT | AMG.NET

czas, gdy opuszczają przedsiębiorstwo. Podejście to ma uzasadnienie w przypadku dużych maszyn, których rozmiar przekra-cza 4 TB. W późniejszym czasie dokonywa-na jest już tylko replikacja różnicowa, co wymaga przesłania do chmury zdecydowa-nie mniejszej ilości danych.

Visual Studio OnlineVisual Studio Online to narzędzie webo-we oparte na funkcjach programu Team Foundation Server (TFS), ale uzupełnione o dodatkowe usługi w chmurze Azure. Visual Studio Online oferuje dużo więcej niż TFS w chmurze, a więc możliwość wy-konywania testów obciążeniowych (Load Testing Service) oraz analizy dostępno-ści i wydajności aplikacji (Application Insights), zapewnia wsparcie dla prowa-dzenia projektów według metodyk Agile, Scrum i CMMI, mechanizmy kontroli wersji z wykorzystaniem narzędzi TFVC lub Git, funkcje ciągłej integracji (CI) oraz usługi Build Service dla chmury. Visual Studio Online umożliwia edycję kodu w trybie online, dzięki czemu programista nie musi uruchamiać programu Visual Studio na swoim komputerze, gdyż proste zmiany w aplikacji może wprowadzić w drodze, korzystając ze zwykłej z przeglądarki in-ternetowej.

W artykule skupimy się na dwóch funk-cjach Visual Studio Online istotnych z per-spektywy tworzenia i zarządzania środowi-skami rozwojowo-testowymi, a mianowicie na usłudze prowadzenia testów obciąże-niowych (Load Testing Service) oraz narzę-dziu Application Insights, które umożliwia monitorowanie dostępności i wydajności aplikacji webowych.

Testy obciążeniowe w Visual Studio OnlineTesty obciążeniowe aplikacji webowych wykonuje się, aby sprawdzić, jak zacho-wuje się ona pod dużymi obciążeniami. Zasymulowanie dużego ruchu w witry-nie wymaga zaangażowania sporych zasobów obliczeniowych, które musimy zagwarantować na czas prowadzonych testów. Chmura Azure, która korzysta z infrastruktury Microsoft, umożliwia przeprowadzenie testów obciążeniowych aplikacji webowej nawet dla 20–30 tysię-

cy użytkowników. Zrealizowanie podobne-go scenariusza w lokalnej infrastrukturze przedsiębiorstwa w wielu przypadkach byłoby niemożliwe.

W ramach usługi Visual Studio Online każdego miesiąca otrzymujemy za darmo 20 tysięcy minut wirtualnych użytkowni-ków (to oficjalna jednostka rozliczeniowa Microsoft), które możemy wykorzystać do prowadzenia testów obciążeniowych.

Application InsightsApplication Insights to nowe narzędzie analityczne Visual Studio Online, które pozwala na monitorowanie dostępności i wydajności aplikacji webowych oraz zbie-ranie informacji o aktywności i wykorzy-staniu aplikacji przez użytkowników. Dane do analizy mogą być pobierane z kompute-ra użytkownika (wersja przeglądarki, wer-sja systemu operacyjnego jego komputera) oraz serwera, którego wydajność moni-torujemy (zajętość zasobów, obciążenie procesora itd.).

Application Insights pozwala moni-torować aktywność dowolnego serwisu bez konieczności dzielenia się tą infor-macją na zewnątrz. Istnieje możliwość stworzenia wielu oddzielnych kont Visual Application Insights na potrzeby moni-torowania całego środowiska webowego w firmie. Co ważne, usługa Application Insights może zostać zintegrowana z aplikacjami uruchamianymi w lokalnej infrastrukturze (on-premises), w chmurze Microsoft Azure i chmurach innych do-stawców. Zebrane dane prezentowane są w Visual Studio Online, a dzięki agentom mogą być również przesyłane do lokalne-go serwera Microsoft System Center.

Application Insights oprócz funkcji analitycznych ma wbudowany monitor dostępności, który pozwala na śledzenie stanu i dostępności aplikacji webowych z różnych lokalizacji.

Integracja usług Application InsightsW ramach praktycznego przykładu poka-żemy, jak zintegrować usługi Application Insights ze środowiskiem SharePoint. Pracę z Application Insights rozpoczynamy od utworzenia nowego zasobu. Wymaga to podania nazwy, wskazania lokalizacji prze-

W ramach usługi Visual Studio Online każdego miesiąca otrzymujemy za darmo 20 tysięcy minut wirtualnych użytkowników, które mo-żemy wykorzystać do prowadzenia testów ob-ciążeniowych.

E-SEMINARIUM MICROSOFT | AMG.NET

11

chowywania zasobów chmury oraz podłą-czenia pod subskrypcję Azure.

Integracja Application Insights polega na wklejeniu skryptu JavaScript do kodu źródłowego monitorowanej witryny lub aplikacji webowej. Za każdym razem wy-maga to pobrania z poziomu panelu za-rządzania Application Insights unikalnego skryptu śledzącego, predefiniowanego dla każdego konta usługi z osobna.

W odniesieniu do aplikacji SharePoint dołączenie kodu Application Insights moż-na zrealizować na dwa sposoby: poprzez umieszczenie go w kodzie strony głównej (master page) lub osadzenie go w skład-niku Web Part, jeśli chcemy monitorować wykorzystanie tylko niektórych części wi-tryny lub pojedynczych podstron witryny.

Oba warianty integracji są bardzo proste do wykonania. W przypadku osadzenia kodu śledzącego w stronie głównej (master page) robimy to przed końcem znaczni-ka <head>, a więc zasadniczo za jednym posunięciem mamy uruchomione mecha-nizmy monitorowania dla całej witryny SharePoint. Na tej samej zasadzie odby-wa się osadzanie kodu w składniku Web Part. Już po chwili pierwsze informacje ze śledzonych witryn zaczynają spływać do Application Insights.

Zbieranie informacji z serwera, a na-stępnie przekazywanie ich do Application Insights wymaga zainstalowania na ma-szynie niewielkiego agenta – monitora zasobów, który możemy pobrać poprzez Web Platform Installer lub bezpośrednio z witryny Azure. Proces instalacji agenta jest prosty i wymaga jedynie wskaza-nia informacji o subskrypcji oraz koncie Application Insights, do którego chcemy podpiąć serwer.

Monitorowanie witryn i aplikacji webo-wych przy użyciu Application Insights od-bywa się z poziomu Visual Studio Online. Funkcje te widoczne są, podobnie jak nasze projekty Visual Studio Online, także z poziomu portalu Azure. Dostęp do konta Visual Studio Online możliwy jest z kilku miejsc – przez stary lub nowy portal Azure, a także bezpośrednio przez witrynę visual-studio.com.

Application Insights generuje szereg zestawień i statystyk dotyczących wyko-rzystania aplikacji webowej z perspektywy

użytkownika (przeglądarki internetowej) oraz serwera. Wśród przykładowych da-nych znajdziemy informacje o samym ser-werze, obciążeniu procesora, dostępnych zasobach dyskowych itd. Wszystkie te dane mogą być przeglądane w kilku wy-miarach.

Proces powołania środowiska testowe-go do życia aż po wykonanie faktycznych testów obciążeniowych aplikacji webo-wej zajmuje nie więcej niż kilkadziesiąt minut. I co ważne, w ten sposób możemy prześledzić wydajność nawet najbardziej zaawansowanych witryn i aplikacji webo-wych, otrzymując informację zwrotną, czy wszystko działa tak, jak powinno, albo też wymaga zapewnienia dodatkowej mocy obliczeniowej w środowisku produkcyj-nym, w którym zostanie uruchomione po zakończeniu testów.

Testy obciążeniowe w praktyceTesty wydajnościowe pozwalają zweryfiko-wać, czy zasoby przypisane danej aplikacji pozwalają obsłużyć planowany ruch (ob-ciążenia) użytkowników. Prosty scenariusz takiego testu zakłada sprawdzenie, czy 4-procesorowy serwer będzie mógł wydaj-nie obsłużyć zadaną liczbę jednoczesnych użytkowników aplikacji webowej.

Przygotowanie testu wydajnościowego rozpoczynamy od powiązania konta Visual Studio Online z projektem aplikacji w usłu-dze Team Foundation Server (TFS). Projekt przykładowego test obciążeniowego może zakładać przejście przez trzy zakładki witryny SharePoint dla 200 użytkowników z przyrostem krokowym, a więc wykonu-jących operacje w witrynie w określonych interwałach czasowych. Na tym etapie możemy zdefiniować dodatkowe parametry testu, w tym wyłączyć z niego elementy, które nie są dla nas w danej chwili intere-sujące. Administrator może zdefiniować czas trwania testu, dynamikę przyrostu użytkowników, rozkład używanych przez nich przeglądarek internetowych oraz lo-kalizację, z jakiej wykonane zostaną odwo-łania do aplikacji.

Każdy test obciążeniowy kierowany jest najpierw do kolejki, aby w system mógł za-planować i zgromadzić zasoby potrzebne do jego wykonania. Właściwy test rozpo-

Proces powołania środowiska testowego do życia aż po wykona-nie faktycznych testów obciążeniowych aplikacji webowej zajmuje nie więcej niż kilkadziesiąt minut.

12

E-SEMINARIUM MICROSOFT | AMG.NET

czyna się, gdy wymagane zasoby chmury staną się dostępne dla danego projektu. Na ekranie widzimy przypisaną wirtualnym użytkownikom liczbę minut, które zostaną wykorzystane do przeprowadzenia testu. W ten sposób możemy w łatwy sposób kontrolować wydatki na testy.

Wyniki testu, przede wszystkim czasy odpowiedzi serwera, wyświetlane są na ekranie w czasie rzeczywistym. W stan-dardowym scenariuszu widzimy, jak wraz upływem czasu wrasta obciążenie ser-wera, co jest efektem zwiększającej się liczby użytkowników jednocześnie korzy-stających z monitorowanej aplikacji. Nawet w przypadku tak prostego testu można zauważyć, jak zmienia się obciążenie zaso-bów przy zwiększeniu mocy obliczeniowej serwerów (procesor, RAM) czy wydajności serwera SQL.

Funkcje raportowaniaUsługa generuje raport z wykonania testu, który można przeglądać lub przekazać np. do działu infrastruktury z wnioskiem o zwiększenie zasobów dla danej aplikacji. Zakładka Test Manager grupuje testy archi-walne, skąd można je wykonać ponownie, choćby po to, aby sprawdzić, jak zapewnie-nie dodatkowych zasobów instancji wir-tualnych wpłynęło na wydajność aplikacji webowej.

Jeśli w tym momencie wrócimy do mo-dułu Application Insights natychmiast zauważymy, jak drastycznie wzrosła liczba użytkowników generujących zapytania do serwera sieci web. Z tego poziomu może-my przeanalizować, w jaki sposób wirtu-alni użytkownicy testowali naszą farmę SharePointa.

Automatyzacja i wykorzysta-nie danych monitorowaniaOczywiście, narzędzie Application Insights warto wykorzystać w całym cyklu życia aplikacji, a nie wyłącznie na etapie jej te-stowania. Co więcej, pewne zadania uda nam się zautomatyzować, a administrator może zdefiniować własne reguły powiado-mień i alarmy w przypadku zarejestrowania niestandardowej sytuacji.

Microsoft Azure pozwala na integrację mechanizmów analitycznych z funkcjami, które umożliwiają automatyzację zadań

w chmurze, w tym z Azure Automation. Dzięki temu w przypadku wykrycia na-głego wzrostu zapotrzebowania na moc obliczeniową system może automatycznie zwiększyć zasoby instancji wirtualnych, aby wydajnie obsłużyć wszystkie żądania użytkowników.

PodsumowanieChmura Microsoft Azure oferuje sze-reg narzędzi niezbędnych do tworzenia środowisk rozwojowych i testowych dla aplikacji webowych, które możemy powo-ływać z galerii, oraz do zarządzania nimi. Administrator jest w stanie zautomatyzo-wać proces uruchamiania i wygaszania tych środowisk, monitorować ich wydaj-ność i dostępność oraz wykonywać testy obciążeniowe aplikacji webowych urucha-mianych w chmurze.

Chmura obliczeniowa zmienia sposób, w jaki tworzymy, testujemy i wdrażamy aplikacje webowe, co przekłada się na dostarczanie wymagającym klientom biznesowym lepszej jakości i bardziej stabilnego oprogramowania. Dzięki możli-wości lepszego odwzorowania środowiska produkcyjnego programiści mogą wykryć większą liczbę błędów, natomiast niemal nieograniczone zasoby chmury pozwalają uruchamiać i testować aplikacje przy alo-kacji różnej ilości zasobów i pod różnymi obciążeniami.

Chmura obliczeniowa pozwala zwięk-szyć efektywność oraz zauważalnie ogra-niczyć koszty rozwijania i testowania apli-kacji. Wynika to z możliwości szybkiego powoływania środowisk Dev&Test i R&D, płacenia tylko za faktycznie zużyte zasoby oraz automatyzacji procesów włączania i wygaszania niezbędnej infrastruktury. Chmura wprowadza także dodatkową war-stwę bezpieczeństwa dzięki możliwości przygotowywania i testowania aplikacji w ściśle izolowanym środowisku.

Efektywność, bezpieczeństwo oraz ograniczenie kosztów to trzy najważniej-sze cechy, które z perspektywy biznesu oraz działu deweloperskiego pozwalają myśleć o chmurze jako narzędziu pierw-szego wyboru w zakresie tworzenia wyso-ce wydajnych, zautomatyzowanych środo-wisk Dev&Test. I to wszystko w mniej niż 40 minut.

Chmura obliczeniowa zmienia sposób, w jaki tworzymy, testujemy i wdrażamy aplikacje webowe, co przekłada się na dostarczanie wymaga-jącym klientom bizneso-wym lepszej jakości i bardziej stabilnego oprogramowania.