COMPUTERWORLDGUiDE Platforma Microsoft Azure
Platforma Microsoft Azure Computerworld Guide Cloud usuwa bariery Dotychczas tworzenie oprogramowania dla dużych instytucji wymagało solidnych nakładów finansowych i ogromnego zaplecza technologiczno-kapitałowego. Obecnie nawet firma małej wielkości może tworzyć innowacyjne rozwiązania informatyczne i odnosić sukcesy na rynkach dotychczas dla niej niedostępnych. Z Robertem Gajdą, Business Development Managerem w Microsoft, rozmawiamy na temat nowych możliwości, oferowanych przez model cloud i platformę Azure. Dlaczego architekt oprogramowania powinien zainteresować się Microsoft Azure? Robert Gajda: Powinien zainteresować się i zapewne interesuje się przetwarzaniem w chmurze. Przetwarzanie w chmurze daje wiele wymiernych korzyści. Jesteśmy teraz w momencie, w którym zmienia się postrzeganie roli IT i modelu jej działania. Nie zadajemy już sobie pytania czy warto w ogóle zajmować się chmurą i przejść na ten model funkcjonowania, tylko kiedy i w jakim momencie skorzystać z tego modelu, jak tego dokonać?, jaki obszar wykorzystać?. Korzyści, jakie daje chmura, są powszechnie znane: zwiększenie elastyczności organizacji, zwiększenie szybkości wdrożenia usług i poprawa ich dostępności. Ale z punktu widzenia organizacji i działu IT równie istotne jest to, że dzięki chmurze może się on zająć tworzeniem rozwiązań innowacyjnych, które będą w stanie zwiększyć konkurencyjność na rynku, zamiast tak jak obecnie zajmować się standardowymi czynnościami operacyjnymi. Uruchamianie projektu nie wymaga dzięki chmurze dużo czasu, kosztownych zakupów inwestycyjnych, ale może być zrealizowane praktycznie od ręki wystarczy zamówić zasoby obliczeniowe u dostawcy chmury, co trwać może co najwyżej godziny, a nie jak dotychczas tygodnie. Zmniejsza się także ryzyko projektu. Zamawiamy zasoby
Computerworld Guide Platforma Microsoft Azure na czas jego uruchomienia, testowania i programu pilotażowego. Jeżeli wszystko pójdzie po naszej myśli, możemy elastycznie zwiększać zasoby informatyczne wraz ze wzrostem przychodów generowanych przez projekt. Jeśli okaże się, że należy go zakończyć, wówczas straty przedsiębiorstwa są dużo niższe niż w przypadku gdy konieczne jest poczynienie zakupów sprzętu i oprogramowania w klasycznym modelu biznesowym. Ta drobna wydawałoby się zmiana niesie istotne konsekwencje, bo zwiększa możliwości uruchamiania nowych, innowacyjnych projektów, które wcześniej nie miały szans na rozpoczęcie, bo ryzyko ewentualnej porażki i straty finansowe z tym związane były zbyt duże. Czy oznacza to, że chmura zabiera część kompetencji działom IT? Dzięki przetwarzaniu w chmurze działy IT skupiają się na tworzeniu innowacji i wpływie IT na konkurencyjność biznesu, zamiast tak jak dotychczas, na czynnościach operacyjnych związanych z utrzymaniem w sprawności i gotowości urządzeń i systemów. Ciężar odpowiedzialności IT przenosi się na kreowanie usług wspierających działanie instytucji. Jakie korzyści odniosą mniejsze przedsiębiorstwa, które nie zawsze mają ambicje wyprzedzania konkurencji innowacyjnymi rozwiązaniami? Mniejsze organizacje dzięki chmurze zyskują dostęp do najnowszych rozwiązań technologicznych, które dotychczas zarezerwowane były wyłącznie dla firm o dostatecznie dużej sile kapitału. Obecnie nic nie stoi na przeszkodzie, by mniejsze przedsiębiorstwo korzystało z usługi IT w chmurze będącej odpowiednikiem specjalizowanej aplikacji, której jednorazowe koszty licencyjne przekraczały dotychczas możliwości tego małego przedsiębiorstwa. Podobnie jak duże firmy, te mniejsze mogą również korzystać z elastyczności chmury. W scenariuszach chociażby takich jak przykładowa kampania marketingowa, która wymaga dodatkowych zasobów informatycznych przez krótki okres, rzędu dni lub tygodni, chmura sprawdza się idealnie. Dlaczego platforma Azure, a nie inny sposób realizacji przetwarzania w chmurze? Wndows Azure obejmuje swoim zasięgiem wszystkie trzy dobrze znane obszary modelu cloud, czyli Platform as a Service, Infrastructure as a Service i wreszcie najciekawszy Software as a Service. W tym przypadku jest ono doskonałym narzędziem do tworzenia własnych rozwiązań informatycznych udostępnianych w modelu Software as a Service. Użytkownik otrzymuje zatem pełne spektrum możliwości korzystania z chmury i może wybrać ten model, który mu najbardziej odpowiada. Uzyskuje dostęp do usług, które są mu faktycznie potrzebne, czyli moc obliczeniową dla swoich aplikacji, przestrzeń dyskową, czy dostęp do platformy programistycznej z odpowiednim poziomem bezpieczeństwa. Narzędzia zarządzania platformą pozwalają uzyskać właściwy dla każdej instytucji poziom SLA. A co z narzędziami, czy programista musi posiadać umiejętności programowania w Microsoft.NET? Polecamy Microsoft.NET i Microsoft SQL jako platformę programowania, ale równie dobrze może to być PHP. W trybie Worker Role można tworzyć aplikacje praktycznie w dowolnym języku Java, C#. Przy wykorzystaniu mechanizmu takich narzędzi jak Windows Azure AppFabric można także łączyć już funkcjonujące aplikacje z aplikacjami napisanymi w chmurze. Oznacza to pełną elastyczność tworzenia oprogramowania można pisać aplikacje od nowa, można rozbudowywać już istniejące. Architekt oprogramowania i programista mają pełną dowolność. Jednym z podstawowych narzędzi do tworzenia oprogramowania jest Microsoft Visual Studio, zawierające wiele bibliotek, w tym także bibliotek ułatwiających programowanie w środowisku cloud i umożliwiających tworzenie aplikacji klienckich i aplikacji webowych, mogących istnieć w środowisku tradycyjnym on-premise, jak również w środowisku cloud. Od czego zacząć naukę programowania na platformie Azure? Dla rozpoczynających przygodę z programowaniem w środowisku cloud polecam książkę Windows Azure Platforma Cloud Computing dla programistów wydaną przez pracowników Developer & Platform Group (DPG) polskiego oddziału firmy Microsoft. Jest to kompendium wiedzy dla programistów.net, PHP i Javy, którzy w łatwy sposób mogą tworzyć skalowalne rozwiązania w oparciu o platformę Windows Azure. Polecam również szkolenia wprowadzające Akademii Azure, gdzie jest możliwość praktycznego zapoznania się z możliwościami oferowanymi przez Windows Azure i SQL Azure. (http://www. microsoft.com/poland/aa/default.aspx) Jeżeli jestem programistą lub mam firmę zajmującą się tworzeniem oprogramowania jakie otrzymuję korzyści wynikające z wykorzystania platformy Azure? Cloud oferuje każdej firmie, zwłaszcza firmom małym, dostęp do zaawansowanych technologii tworzenia programowania i dotarcie z tymi produktami do dużych klientów. Bariera wejścia na rynek oprogramowania cloud jest postawiona bardzo nisko. Dotychczas przetestowanie zachowania się aplikacji w dużych środowiskach obejmujących tysiące urządzeń klienckich i sprawdzenie jak będzie się zachowywał tworzony system było dużym przedsięwzięciem, wymagającym kosztownego zasymulowania tak dużej liczby użytkowników. W większości przypadków realizacja takich testów i przedstawienie ich wyników potencjalnemu klientowi, takiemu jak na przykład duża instytucja z sektora finansów, było niemożliwe dla informatycznych firm małej i średniej wielkości. Teraz usuwamy tę barierę, otwierając nowe możliwości dla wszystkich firm zajmujących się tworzeniem oprogramowania. Elastyczność dodawania nowych zasobów obliczeniowych jest kluczową przewagą przetwarzania w chmurze. Dzięki niej projekt każdej wielkości można szybko rozpocząć, w przypadku niepowodzenia zakończyć przy znacznie zmniejszonym poziome kosztów poniesionych na uruchomienie projektu, a w przypadku sukcesu sprzedawać masowo. Czy aplikację dla Windows Azure tworzy się łatwiej czy trudniej w porównaniu ze znanymi programistom metodami tworzenia aplikacji on-premise? W większości przypadków wykorzystujemy te same narzędzia, co w tradycyjnym programowaniu. Zasady pisania kodu są podobne, różnią je co najwyżej niuanse. W programowaniu w chmurze należy szczególnie uważać na to, jaki ruch w sensie przesyłanych danych generuje aplikacja, bo wpływa to na koszty utrzymania całego systemu. Zmusza to programistów do oszczędnego kodowania, by program nie zużywał niepotrzebnie zasobów czy łączy telekomunikacyjnych na wymianę danych, które z biznesowego punktu widzenia nie są istotne i można je bez straty dla funkcji usługi pominąć. W efekcie wpływa to także pozytywnie na wykorzystanie infrastruktury IT, gdyż odciąża je od niepotrzebnego ruchu. Te oszczędnościowe właściwości chmury sprawiają, że model biznesowy oparty na chmurze poprawia zyskowność projektu i sprzyja mniejszym wydatkom. W symulacjach modeli biznesowych, które przeprowadzałem dla naszych klientów, sprawdzaliśmy opłacalność modelu cloud versus tradycyjne środowisko uruchomione w tzw. modelu on premise. Uwzględnialiśmy w nich szereg elementów takich jak żądana funkcjonalność, liczba użytkowników, liczba transakcji, koszty zużywanych przez nich łączy i energii elektrycznej, koszty związane z licencjami na oprogramowanie oraz koszty operacyjne. Braliśmy także pod uwagę czas wdrożenia symulowanego projektu i różne warianty określające ryzyko powodzenia projektu w modelu Cloud vs on-premise. Zazwyczaj w tego typu symulacji staramy się odwzorować łatwe do przewidzenia koszty wdrożenia tradycyjnych aplikacji on premise w środowisku chmury i porównać efekty finansowe. Biorąc pod uwagę moje dotychczasowe doświadczenia, mogę stwierdzić, że o przewadze platformy Azure w zestawieniu z tradycyjnym modelem biznesowym na ogół decydują niższe koszty operacyjne oraz elastyczność zarządzania zasobami w przypadku chmury, czyli model pay as you go.
Platforma Microsoft Azure Computerworld Guide Budowa i działanie platformy Azure Windows Azure to system nazywany często chmurą Microsoft. Platforma ta służy do uruchamiania aplikacji, która wykorzystując infrastrukturę sprzętową zarządzaną przez Microsoft, zapewnia nowy sposób udostępniania oprogramowania użytkownikom. System jest w pełni skalowalny, dzięki czemu ma zdolność zaspokajania potrzeb nawet największych organizacji. W praktyce oznacza to, że centra danych udostępniające platformę Windows Azure nie mają ograniczeń wydajnościowych. W każdej sytuacji klient wykorzystuje dokładnie taki zakres zasobów, jaki jest mu niezbędny, kupując, w zależności od potrzeb, mniej lub więcej usług. Architektura i organizacja usługi na platformie Azure Platforma Azure składa się z trzech części: Windows Azure, Microsoft SQL Azure i Windows Azure AppFabric. Windows Azure stanowi podstawę i najistotniejszy element tej konstrukcji, ale trudno wyobrazić sobie platformę do przetwarzania w chmurze bez zaplecza w postaci relacyjnych baz danych, czyli SQL Azure i komponentów służących do komunikacji chmury z otoczeniem wraz z elementami zapewniającymi bezpieczny dostęp do danych. Windows Azure zapewnia zasoby obliczeniowe dla chmury, dostęp do danych poprzez przestrzeń magazynową, zarządzanie i komunikację przez sieć. W praktyce jest odpowiednikiem systemu operacyjnego dla usług w chmurze znanego nam z komputerów PC. Platforma Windows Azure ma wbudowane mechanizmy do rozkładu przychodzącego ruchu (load balancing), kontroli dostępności serwisów czy ich okresowej aktualizacji, przy założeniu ciągłości pracy aplikacji. Dzięki udostępnionemu Management API mamy możliwość wykorzystania części z tych funkcji do Windows Azure zapewnia zasoby obliczeniowe dla chmury, dostęp do danych poprzez przestrzeń magazynową, zarządzanie i komunikację przez sieć. W praktyce jest odpowiednikiem systemu operacyjnego dla usług w chmurze znanego nam z komputerów PC. własnych celów, np. monitorowania użytkowania naszego systemu czy rejestrowania własnych zdarzeń. Windows Azure AppFabric Aktualizacja centrów danych obejmująca zarówno usuwanie usterek, jak i drobne poprawki odbywa się regularnie co kilka tygodni. Oficjalne nowe wersje środowisk wprowadzające istotne modyfikacje i wzbogacenie funkcjonalności realizowane są co kilka miesięcy, co pokazuje, jak wielka jest dynamika tych zmian. Windows Azure AppFabric to dwie usługi pomagające w integracji rozproszonych systemów informatycznych, zapewniające kontrolę dostępu i usługi komunikacyjne na szynie danych. Kontrola dostępu (access control) pozwala na rozwiązanie powszechnych i często trudnych w realizacji scenariuszy związanych z potrzebą uwierzytelniania użytkowników dzięki zewnętrznym systemom zarządzania tożsamością, opartym np. na Active Directory czy innych usługach katalogowych. Dzięki udostępnianym przez AppFabric mechanizmom kontroli dostępu programista ma możliwość znacznie łatwiejszej implementacji takich zadań, wykorzystując do tego celu otwarte standardy, niezależne od stosowanej platformy i technologii. Ważnym zadaniem jest konieczność skomunikowania ze sobą dwóch lub więcej pracujących niezależnie systemów informatycznych lub pracujących w różnych organizacjach, a komunikacja musi się odbywać poprzez sieć publiczną. W Windows Azure AppFabric służy do tego szyna danych (service bus). Oferowana przez Windows Azure AppFabric szyna danych oferuje rozwiązanie takich problemów, pozwalając Podstawowe komponenty platformy Azure
Computerworld Guide Platforma Microsoft Azure na łatwe i bezpieczne komunikowanie się systemów. Dzięki wykorzystaniu standardowych protokołów użycie Service Bus nie wymaga żadnych rekonfiguracji urządzeń sieciowych, pozwalając na łatwą wymianę zdarzeń, udostępnianie dostępnych do tej pory wewnętrznie usług sieciowych czy tunelowanie protokołów pomiędzy rozproszonymi topologicznie systemami. Dane w chmurze Aby zapewnić skalowalność danych na miarę ogólnoświatowej chmury, Microsoft stworzył koncepcję Azure Storage, a wraz z nią kilka nowych mechanizmów składowania i przekazywania informacji: blobs, queries, tables oraz bliższy dotychczasowemu, relacyjnemu światu SQL Azure. Niektóre z tych koncepcji nawiązują do bardzo starych rozwiązań, takich jak wymiana przez pliki, kolejki MSMQ. Z usług tych możemy korzystać zarówno z poziomu aplikacji uruchamianych na Windows Azure, jak i zupełnie zewnętrznych, hostowanych poza centrami Microsoftu. Mechanizm kolejek (queries) wykorzystywany jest do łączenia poszczególnych elementów aplikacji. Instancja, czyli pojedyncza cegiełka zasobów stosowanych na platformie Azure, o najbardziej uniwersalnym przeznaczeniu worker role, może wprowadzać komunikaty do AppFabric to dwie usługi pomagające w integracji rozproszonych systemów informatycznych, zapewniające kontrolę dostępu i usługi komunikacyjne na szynie danych. kolejki, z której później pracujące instancje pobierają je i przetwarzają. Kolejki mogą być udostępniane publicznie, co dodatkowo zwiększa spektrum możliwości integracji wielu niezależnych składników. Blob storage (etymologia słowa blob sięga do popkultury Blob, zabójca z kosmosu ) jest usługą pozwalającą na przechowywanie nieustrukturyzowanych danych w plikach o rozmiarach nawet rzędu gigabajtów. Pliki te przechowywane są w tzw. kontenerach, które można porównać do katalogów klasycznego systemu plików. Możemy określić prawa dostępu do poszczególnych kontenerów. Niektóre z nich mogą być dostępne publicznie dla dowolnej innej aplikacji internetowej, inne podlegać będą restrykcjom w dostępie ze względu na bezpieczeństwo znajdujących się w nich danych. Ciekawą funkcją mechanizmu blobów jest ich automatyczna replikacja w sieci, gdy tylko zyskają one popularność i są często wykorzystywane przez użytkowników. Sieć Azure automatycznie powiela je, by łatwiej było się do nich dostać. Bardziej skompilowanym sposobem przechowywania danych są tablice (Table Storage). Mechanizm różni się znacznie od tradycyjnego przechowywania danych w relacyjnej bazie danych. Programista otrzymuje zestaw encji (entities) z zestawem właściwości (properties), przy czym każda z encji może mieć inny zestaw właściwości. Programiści mają możliwość określenia tzw. partition keys klucza partycji, które decydują o tym, jak dane będą partycjonowane. Wybór klucza wpływa na to, w jaki sposób aplikacja uzyskuje dostęp do danych, co przekłada się bezpośrednio na wydajność. SQL Azure Poza omówionymi wcześniej sposobami składowania danych możliwa jest opcja najprostsza i zapewne najczęściej używana, czyli wykorzystanie relacyjnej bazy danych Microsoft SQL Server. SQL Azure jest bardzo podobna w funkcjonalności do klasycznej bazy danych SQL Server, ale występują też pewne różnice. Z perspektywy architektury SQL Azure wyróżnić można cztery warstwy: warstwę klienta, warstwę usługi, warstwę platformy i warstwę infrastruktury. Warstwa klienta może być umieszczona albo w centrum danych Microsoft, albo poza nią (u klienta). SQL Azure korzysta z tego samego protokołu co standardowa baza danych SQL Server, dlatego też możliwe jest wykorzystanie tych samych narzędzi do administrowania obiema bazami danych. W warstwie usługi wyróżnione zostały provisioning, czyli połączenie baz danych z kontem w usłudze Azure, billing odpowiadający za gromadzenie informacji o zużyciu zasobów konta klienta i routing połączeń między aplikacją klienta a fizycznymi serwerami, na których znajdują się dane klienta. W warstwie platformy następuje zarządzanie przez SQL Azure Fabric, obejmujące automatyczne przełączanie po awarii (failover), wyrównywanie obciążenia serwerów (load balancing), oraz automatyczna replikacja między serwerami. Warstwa infrastruktury służy do administrowania fizycznym sprzętem oraz systemami operacyjnymi, które wspierają warstwę usług. Dzięki skorzystaniu z gotowego silnika bazy danych programiści mają możliwość wykorzystania swoich dotychczasowych umiejętności, takich jak tworzenie procedur składowanych, funkcji i wyzwalaczy w języku T-SQL, dostęp do danych za pośrednictwem ADO.NET i LINQ czy zarządzanie za pomocą aplikacji SQL Server Management Studio. Usługa gwarantuje wysoką dostępność danych i odciąża administratora od konieczności instalacji i utrzymania całego środowiska serwerowego. Dzięki wsparciu dla sterowników ODBC i JDBC SQL Azure możliwe jest zastąpienie instalowanych lokalnie repozytoriów danych. Dotyczy to również scenariuszy mieszanych, kiedy to sama aplikacja uruchamiana zostaje w lokalnym środowisku organizacji. Innym ważnym zastosowaniem SQL Azure są usługi synchronizacji danych. Oparte na Microsof Sync Framework pozwalają na zautomatyzowanie procesu wymiany informacji pomiędzy różnymi instancjami baz danych, pracującymi lokalnie i zdalnie. SQL Azure może być w ten sposób wykorzystany jako mechanizm agregacji i jednolitego dostępu do gromadzonych w sposób rozproszony danych. Różnice Większość czynności znanych programistom z prac nad aplikacjami działającymi w środowisku sieciowym wykonywalna jest także przy programowaniu w chmurze. Różnice dotyczą szczegółów. Przykładowo, testowanie nawet prostej aplikacji składa się nie tak jak zazwyczaj, ze sprawdzenia poprawności działania na maszynie, na której kompilowany jest kod plus ewentualnie testy wydajnościowe, ale wymaga aż trzech etapów. SQL Azure korzysta z tego samego protokołu co standardowa baza danych SQL Server, dlatego też możliwe jest wykorzystanie tych samych narzędzi do administrowania obiema bazami danych. W pierwszym etapie testowania sprawdzana jest funkcjonalność aplikacji działających na maszynie lokalnej programisty, wykorzystując mechanizmy wbudowane w SDK Windows Azure, czyli lokalne zasoby na dane (tzw. pojemnik) i lokalne środowisko do testowania (Developmnet Fabric). Tak jak zwykle programista może korzystać z debugera, ustawiać pułapki czy podglądać wartości zmiennych. W drugim etapie sprawdzane jest wykorzystanie mechanizmów składowania danych w bazach danych SQL, czyli pojemników na dane. Dopiero trzeci etap to sprawdzanie działania gotowej usługi w chmurze, środowisku testowym, pod tymczasowym adresem URL, a następnie, po pomyślnie zakończonych testach, usługa przenoszona jest do środowiska produkcyjnego, gdzie widoczna jest dla użytkownika końcowego. W całym procesie testowania praktycznie nie ma możliwości sprawdzenia, w jaki sposób usługa konsumować będzie zasoby na platformie Azure. Aby sprawdzić jak przedstawiają się te wartości, wykorzystywane są liczniki wydajności, logi i inne mechanizmy rejestrujące operacje wykonywane przez system i aplikację. Niestety, także w środowisku Azure istnieje odpowiednik poważnego błędu aplikacji znanego z aplikacji klienckich na komputerach PC, kończącego się błękitnym ekranem. Tak jak w aplikacjach klienckich wiedzę o tym, co się wydarzyło, można uzyskać, analizując zrzut pamięci, czyli tzw. Crush dump. Nie jest to jednak zadanie łatwe, bo np. dla obszernych aplikacji (instancji XXL) jest to aż 12 GB zrzutu pamięci.
Platforma Microsoft Azure Computerworld Guide Tworzenie aplikacji w środowisku Azure Tworzenie oprogramowania dla platformy Azure nie różni się wiele od kodowania tradycyjnych aplikacji działających w Internecie. Wykorzystanie środowiska Visual Studio dodatkowo upraszcza ten proces. Przeniesienie napisanej i przetestowanej aplikacji do środowiska chmury jest zautomatyzowane i nie powinno sprawiać problemów. Dostępna w postaci prekonfigurowanych maszyn wirtualnych (instancji) moc obliczeniowa pozwala na szybkie powielanie gotowych komponentów w przypadku wzrostu zapotrzebowania na zasoby i w momencie wystąpienia awarii. Każda taka maszyna umożliwia uruchomienie jednej lub więcej ról (roles). Rola to inaczej tryb pracy środowiska Windows Azure. Obecnie dostępne są do wyboru dwie role web oraz worker. Pierwsza z nich oferuje możliwość hostowania aplikacji ASP.NET, zaś druga uruchomienie praktycznie dowolnego oprogramowania, napisanego w dowolnym języku. W ramach środowiska Windows Azure możemy zatem efektywnie uruchamiać nie tylko aplikacje tworzone na platformie.net, ale również w innych językach programowania, takich jak Java, PHP, Python czy Ruby. Przestrzeń magazynowa pozwala na dostęp do nierelacyjnej składnicy danych, nadającej się do składowania i szybkiego dostępu do bardzo dużych ilości informacji (w tym danych binarnych, takich jak pliki graficzne czy wideo). Jest to alternatywa dla relacyjnej bazy danych SQL Azure. Dostęp do wszystkich zgromadzonych danych realizowany jest poprzez proste w użyciu API oparte na protokole REST, co umożliwia szybką i łatwą integrację również z zewnętrznymi serwisami. Ponadto Windows Azure Storage oferuje mechanizm kolejek, pozwalających na budowę wydajnych, asynchronicznych mechanizmów komunikacji pomiędzy usługami. Narzędzia dla programistów Warto zauważyć, że podobnie jak Windows Azure, tak i narzędzia programistyczne nie wymagają od tworzących kod doświadczenia na platformie Azure. Podstawowy zestaw narzędzi dla programistów tworzących w chmurze to Windows Azure SDK, które jest regularnie, co kilka miesięcy aktualizowane. Pakietem uzupełniającym środowisko pracy dla większości programistów będzie zapewne Windows Azure Tools for Visual Studio, zawierające zbiór rozszerzeń dla tego popularnego narzędzia. Przydatna jest również możliwość zdalnej kontroli uruchomionych już serwisów za pomocą okna Server Explorer w Visual Studio, dzięki czemu można sprawdzić stan usług lub zajrzeć do Windows Azure Storage. Jeśli przygotowywana aplikacja ma docelowo komunikować się ze światem poprzez integrację z zewnętrznymi usługami, należy skorzystać z Windows Azure AppFabric. Warto wspomnieć także o konsoli zarządzania Windows Azure MMC, która pozwala szybko zapoznać się z aktualnym stanem naszej instancji lub obejrzeć i zmodyfikować zawartość naszych tabel, kolejek i obiektów binarnych składowanych w przestrzeni Windows Azure. Alternatywą dla konsoli graficznej może być zbiór gotowych skryptów, czyli dodatków do powłoki PowerShell automatyzujących najczęściej wykonywane zadania o nazwie Windows Azure Service Managenet CmdLets. Jednak Windows Azure nie ogranicza programistów do stosowania konkretnej platformy aplikacyjnej i zestawu narzędzi. Programiści tworzący swoje rozwiązania na platformach innych niż.net mogą skorzystać z gotowego pakietu umożliwiającego rozwój i wdrażanie aplikacji na Windows Azure bezpośrednio ze środowiska Eclipse. Windows Azure Tools for Eclipse zapewnia zbliżone funkcje do analogicznego rozszerzenia dla Visual Studio, czyli tworzenie nowych i migrację już istniejących projektów dla PHP, Storage Explorer pozwalającej na pełną kontrolę nad przechowywanymi w chmurze danymi, testy w ramach Development Fabric oraz łatwe wdrażanie usług w instancji produkcyjnej. Programowanie aplikacji-usług Azure odbywa się obecnie najczęściej w Visual Studiu. W tym środowisku może być także testowana poprawność działania aplikacji dla pojedynczego klienta. Jednak aby aplikację można było przenieść do chmury jako usługę, konieczne 1. Visual Web Developer 2010 Express umożliwia dodanie do środowiska dodatkowych komponentów, takich jak najbardziej znane narzędzia do zarządzania treścią strony (Content Management Systems), np. WordPress czy Joomla!, które także możemy wykorzystać w chmurze. 2. Tworzenie projektu w środowisku cloud. Wybieramy z menu Visual Web Developer 2010 Express nowy projekt i schemat Cloud oraz język programowania albo Visual Basic, albo Visual C#.
Computerworld Guide Platforma Microsoft Azure 3. W kolejnym kroku wybieramy rolę tworzonej aplikacji, np. ASP.NET, czyli usługę z interfejsem użytkownika w przeglądarce. 4. Po przygotowaniu kodu możemy skompilować i uruchomić naszą aplikację w środowisku testowym Visual Web Developer 2010 Express. jest uruchomienie jej w środowisku Development Fabric na Windows Azure. Stworzenie działającej usługi wymaga przygotowania plików konfiguracyjnych ServiceDefinition. csdef i ServiceConfiguration.cscfg, które przenoszone są do środowiska Development Fabric. Pliki te zawierają m.in. informacje na temat roli, w jakiej działać będzie usługa (Web role lub Worker role) i liczby wykorzystywanych instancji. W praktyce programista korzystający ze środowiska Visual Studio nie musi jednak tworzyć tych plików ręcznie, bo po wybraniu odpowiedniego schematu tworzą się one automatycznie. Po zaemulowaniu działania usługi w środowisku Development Fabric można przejść do wdrożenia usługi na platformie Windows Azure. Uruchomienie programu CSPack.exe pozwala na wygenerowanie pakietu, który następnie może być wdrożony za pomoca serwisu konfiguracyjnego https://windows.azure.com. Alternatywą jest skorzystanie z gotowych mechanizmów automatyzujących ten proces, znajdujących się w środowisku Visual Studio. Moja pierwsza aplikacja w chmurze Aby rozpocząć przygodę z programowaniem w chmurze na platformie Azure, wystarczy mieć podstawową wiedzę na temat tworzenia oprogramowania. Prostotę tworzenia aplikacji w środowisku Visual można zweryfikować wykorzystując darmowe narzędzia udostępniane przez Microsoft w sposób test drive, czyli w wolnym tłumaczeniu na polski 5. Emulacja środowiska chmury oznacza przydzielenie zasobów storage. wsiadasz i jedziesz. Oczywiście, żeby zostać Robertem Kubicą programowania w chmurze potrzebna jest wiedza i doświadczenie, ale rozpoczęcie przygody z platformą Azure jest naprawdę proste. Zaczynamy od pobrania pakietu Visual Web Developer 2010 Express ze strony https://windows.azure.com/ wraz z innymi potrzebnymi narzędziami. Jest kilka modułów i dodatkowych narzędzi, które potrzebne są do tego, by w Visual Web Developer 2010 Express stworzyć i przetestować własną aplikację dla platformy Azure. Nie ma jednak potrzeby ich wszystkich wymieniać, ponieważ jeżeli podczas jej tworzenia będzie nam coś dodatkowo potrzebne, wówczas środowisko programistyczne samo zasugeruje pobranie i instalację uzupełniających komponentów. Aby stworzyć aplikację dla chmury, wybieramy w menu New Project, a następnie język programowania w chmurze, czyli w Cloud albo Visual Basic, albo w C#. Podczas tworzenia projektu z pomocą wizarda w kolejnym kroku wybieramy rolę tworzonej aplikacji, np. ASP.NET, czyli usługę z interfejsem użytkownika w przeglądarce. W tym momencie, po potwierdzeniu otrzymujemy gotowy schemat aplikacji do przetwarzania w chmurze z wszystkimi potrzebnymi plikami z kodem i z konfiguracją. Następnie dla celów testowych możemy w kilka minut rozbudować kod przykładowej aplikacji w taki sposób, jak my to zrobiliśmy zrzut ekranu 4. Warto pamiętać o tym, że środowisko Windows Azure jest 64-bitowe. Jeżeli zbudujemy aplikację na komputerze z 32-bitowym systemem operacyjnym, to oczywiście będziemy mogli ją przetestować i sprawdzić jej działanie, ale dla Windows Azure potrzebować będziemy aplikacji pracującej w nowszej wersji systemów operacyjnych. Aby przetestować aplikację w chmurze Visual Web Developer 2010 Express, musimy uruchomić to narzędzie z prawami Administratora. Przetestowanie tak przygotowanej aplikacji odbywa się w środowisku Development Fabric. Tworzymy usługę z aplikacji Po pomyślnym przetestowaniu należy opublikować aplikację. W oknie Solution Explorer należy wybrać nasz projekt, kliknąć prawym klawiszem myszy i uruchomić proces Publish, dzięki czemu wygenerowany zostanie plik wykonywalny dla platformy Windows Azure zrzut ekranu 7. W kolejnych krokach należy założyć konto na Windows Azure Developers Portal, jeżeli go jeszcze nie mamy. Konto to należy założyć, postępując zgodnie ze wskazówkami dostawcy pod adresem http://windows.azure.com. Po pomyślnym założeniu konta i zalogowaniu się wchodzimy w zakładkę Summary. Należy w niej założyć nowy projekt, a następnie otworzyć zakładkę Project. Potem trzeba kliknąć znajdujący się w prawym górnym rogu zakładki Project link New Service, co spowoduje otwarcie zakładki Create a new service. Należy wybrać znajdujący się tam link Hosted Services, który otworzy zakładkę Create a Service. Potem uzupełnić pola Service Label nazwą naszej usługi, a Service Description opisem. Następnie kliknąć guzik Next. Przenosi on nas do sekcji Hosted Services, w której wpisujemy poddomenę, a w niej działać będzie nasz serwis. W efekcie utworzymy link (URL) do usługi. Nazwa poddomeny musi być unikalna w obrębie wszystkich działających na platformie Azure usług, nie tylko twoich, ale także stworzonych przez innych użytkowników platformy. Następnie w sekcji Hosted Service Affinity Group wybieramy opcję No, this service is not related to any of my other hosted services or storage accounts and does not need to be stored in the same region. Co oznacza, że nasza usługa nie jest powiązana z innymi usługami w tym regionie i nie musi być składowana
Platforma Microsoft Azure Computerworld Guide 6. W czasie testowania aplikacji na komputerze uruchamia się emulator Windows Azure. 7. Publikacja aplikacji. w tym samym miejscu, co inne nasze usługi. Następnie wybieramy region geograficzny właściwy dla naszego serwisu, czyli Europę. Dzięki temu Data Center Microsoft będzie mógł właściwie przewidywać szczyty obciążenia aplikacji i z wyprzedzeniem rezerwować zasoby obliczeniowe. Po wykonaniu tych czynności klikamy guzik Create, który stworzy nam serwis i jednocześnie otworzy ekran programistyczny dla niego. W tym momencie usługa już została uruchomiona w środowisku Windows Azure, ale nie została jej przypisana jeszcze żadna instancja, czyli zasoby obliczeniowe. Możemy zatem przystąpić do włączenia usługi, wybierając albo środowisko testowe, albo produkcyjne. W tym przypadku opiszemy sposób uruchomienia oprogramowania w środowisku produkcyjnym. W sekcji Hosted Service, pod Production wybieramy i klikamy guzik Deploy, który otworzy ekran Production Deployment. Klikamy Browse w Application Package i znajdujemy na naszym komputerze plik pakietu aplikacji z rozszerzeniem cspkg, ten sam, który utworzyliśmy wcześniej i który widać na zrzucie ekranu numer 7 w naszym przypadku jest to plik Aplikacja Computerworld.cspkg. Następnie wybieramy Browse Configuration Setting i wskazujemy, gdzie na naszym dysku znajduje się plik ServiceConfiguration.cscfg stworzonej przez nas aplikacji (ścieżkę do tego pliku możemy podejrzeć, klikając w Visual Web Developerze w panelu Solution Explorer plik prawym klawiszem i wybierając Properties). Ustawienia Operating System Settings pozostawiamy domyślne. Wybieramy nazwę usługi w polu Service Deployment Name i klikamy guzik Deploy. W tym momencie rozpoczyna się proces uruchomienia usługi na platformie Azure. Po zakończeniu tego procesu pojawi się przycisk służący do modyfikacji stanu właśnie uruchomionego serwisu. Na początek nasza aplikacja znajduje się w stanie zatrzymanym Stopped. Aby ją uruchomić, klikamy Run. Z poziomu interfejsu programistycznego możemy sprawdzać stan naszej usługi. Aby zobaczyć jak zachowuje się ona w środowisku produkcyjnym, wystarczy skopiować link stworzonej wcześniej poddomeny naszego serwisu na platformie Azure do przeglądarki. Powinniśmy zobaczyć wówczas ten sam efekt działania programu, który widzieliśmy wcześniej podczas testowania go w Development Fabric w Visual Web Developperze (ekran 4). Pamiętajmy, że pozostawienie programu testowego działającego nawet w środowisku nieprodukcyjnym powoduje, że zużywa on zasoby platformy Azure, za które będziemy musieli zapłacić. Aby skasować naszą testową usługę, musimy ją najpierw przestawić w stan zawieszenia Suspend, a następnie skasować Delete. Windows Azure Platforma Cloud Computing dla Programistów Książka do kupienia na stronie www.ksiazki.promise.pl i w księgarniach specjalistycznych