Tworzenie aplikacji dla Windows Azure  Udostępnij na: Facebook

Autor: Tomasz Kopacz

Opublikowano: 2010-09-21

Windows Azure to nowa platforma do uruchamiania rozwiązań informatycznych działających w chmurze (ang. Cloud Computing). Architekt projektujący rozwiązanie dysponuje zwirtualizowanym środowiskiem oferującym praktycznie nieograniczone możliwości skalowania, olbrzymią wydajność i gigantyczny pojemnik do przechowywania danych. Jest to rozwiązanie klasy tzw. Platform As a Service  (PaaS), oferujące programiście specjalną platformę do budowy rozwiązań informatycznych.

Fizycznym utrzymaniem Windows Azure zajmuje się organizacja Microsoft Global Foundation Services, część Microsoft odpowiedzialna za utrzymywanie centrów danych.

W przypadku zastosowania tej platformy opłaty są proporcjonalne do stopnia wykorzystania platformy (tzw. model pay as you go), czyli zajętej przestrzeni dyskowej, mocy obliczeniowej i pasma (transfer danych do i z chmury). Taki system opłat zapewnia bardzo dużą elastyczność i nie wymaga inwestowania we własną serwerownię (sprzęt, licencje, obsługę itp.). Na przykład sklep internetowy, planując promocje, może na chwilę (nawet na moment rzędu pojedynczych minut czy godzin) zwiększyć używane zasoby, a po okresie intensywnego ruchu oddać je (i opłaty będą niższe).

Platforma Azure składa się z następujących głównych elementów:

  • Windows Azure – środowisko, w którym uruchamiane są poszczególne aplikacje (hostujące kod). Może to być aplikacja ASP.NET, usługa WCF, kod PHP czy po prostu – proces Windows. Płaci się za czas zarezerwowanych zasobów sprzętowych używanych do uruchomienia danego kodu oraz za dane przesłane do/z datacenter Windows Azure.
  • Azure Storage zapewniające niezawodne i niesamowicie skalowalne mechanizmy przechowywania informacji. Płaci się za czas przechowywania danych i transfer poza datacenter Windows Azure. Dostępne są trzy typy pojemników:
    • Azure Table – do przechowywania miliardów wierszy,
    • Azure Blob – do przechowywania danych binarnych,
    • Azure Queue – kolejki do szybkiej wymiany informacji.
  • SQL Azure – relacyjna baza danych (w dużej części zgodnej z Microsoft SQL Server). Płaci się stałą opłatę za bazę o ustalonym maksymalnym rozmiarze oraz za transfer.
  • Windows Azure AppFabric (dawniej .NET Services) – komponent odpowiadający za połączenie chmury publicznej i usług lokalnych. Składa się on z dwóch składników:
    • Access Control – umożliwia definiowanie mechanizmów kontroli dostępu, autoryzacji, uprawnień itp. w oparciu o federację;
    • Service Bus – pozwala w elegancki, bezpieczny, ale prosty sposób udostępnić usługi z lokalnej serwerowni czy wręcz laptopa. Obsługuje wiele gotowych wzorów komunikacyjnych (publish-subscribe, multicast, buforowane itp.), a także pozwala nie martwić się tym, że usługa znajduje się za NAT-em czy firewallem.
  • Microsoft Codename „Dallas” – usługa pozwalająca sprzedawać i kupować dane przechowywane w chmurze (np. dane analityczne).

Pełny cennik Windows Azure znajduje się tutaj (w Polsce obowiązują ceny w euro). Warto zapoznać się z jego podstawowymi pozycjami, i tak:

mała instancja (small) – $ 0.12 / 0,0852 € za godzinę rezerwacji zasobu (np. godzinę obliczeń z obciążeniem procesora 100% lub godzinę przy średnim obciążeniu 11%);

  • $ 0.15 / 0,1064 € za przechowanie gigabajta w Azure Storage (w dowolnej postaci);
  • $ 0.10 / 0,071€ za 1 GB danych wysłanych do Azure;
  • $ 0.15 / 0,1064 € za 1 GB pobrany z Azure;
  • $ 9.99 / 7,085 € miesięcznie za SQL Azure o rozmiarze do 1 GB;
  • $ 49.95 / 35,425 € miesięcznie za SQL Azure o rozmiarze do 5 GB (i proporcjonalnie dalej; największa baza może mieć 50 GB).

Poniższa tabela pokazuje standardowe rozmiary instancji obliczeniowych Windows Azure.

Nazwa instancji CPU Pamięć Pojemnik w ramach instancji Wydajność I/O Koszt w $
Small 1.6 GHz 1.75 GB 225 GB Umiarkowana $     0.12
Medium 2 x 1.6 GHz 3.5 GB 490 GB Wysoka $     0.24
Large 4 x 1.6 GHz 7 GB 1,000 GB Wysoka $     0.48
Extra large 8 x 1.6 GHz 14 GB 2,040 GB Wysoka $     0.96

Warto dodać, że pewna „ilość” platformy Azure jest też dostępna za darmo dla subskrybentów MSDN (czyli np. uczestników programu BizSpark). W ciągu 16 miesięcy dostępne są następujące parametry (do użycia każdego miesiąca!):

Dostępne element Premium, Ultimate & BizSpark
Windows Azure Tzw. small compute instance 750 godzin/miesiąc
Pojemnik 10 GB
Liczba operacji na pojemniku z danymi 1 000 000/miesiąc
AppFabric Połączenia Service Bus
(odpowiada mniej więcej 5 różnym aplik.
5/miesiąc
Transakcje wykorzystujące Access Control  1 000 000/miesiąc
SQL Azure Bazy danych Web Edition (rozmiar do 1 GB) 3
Data Transfers Europa i Ameryka Północna 7 GB odebranych/miesiąc
14 GB wysłanych/miesiąc
Azja 2,5 GB odebranych/miesiąc
5 GB wysłanych/miesiąc

Dokładny opis tej oferty można znaleźć na tej stronie. W przypadku potrzeby użycia większej ilości zasobów Windows Azure, są one rozliczanie na normalnych zasadach „pay as you go” lub można skorzystać z odpowiednich promocji – wszystkie elementy są opisane tutaj. Warto zwrócić uwagę, że 750 h to na przykład ok. 31 dni ciągłej pracy (24h/dobę) jednej małej instancji Azure. Ale to też na przykład ponad 4 małe instancje uruchamiane w czasie normalnych godzin pracy każdego dnia roboczego w miesiącu (zakładamy 20 dni roboczych po 8 h). Jest to również na przykład 10 h ciągłej pracy 75 instancji! Albo 15 dni ciągłej pracy średniej (Medium) instancji.

Aby zacząć pracę z Windows Azure, należy ściągnąć Windows Azure Tools for Microsoft Visual Studio 1.2 – dodatek do Visual Studio 2010 pozwalający pisać i automatycznie wgrywać aplikację w “chmurę”. Jeżeli ktoś nie posiada Visual Studio, narzędzie będzie działać z darmowym Microsoft® Visual Web Developer® 2010 Express. Jednak ze względu na duże ułatwienie, jakie daje mechanizm IntelliTrace przy śledzeniu aplikacji, warto pobrać wersję testową Visual Studio Ultimate (lub skorzystać z oferty MSDN w BizSpark).

W tej serii artykułów przedstawione zostaną podstawy tworzenia aplikacji dla Windows Azure. Ta platforma to „prawie” normalny Windows. Działa na tym ASP.NET, ASP.NET MVC .NET 4.0 (z wszystkimi mechanizmami, np. związanymi z programowaniem równoległym), czy nawet technologie takie jak PHP czy Java. Słowem – wszystko to, co da się uruchomić na Windows. Z tego punktu widzenia migracja rozwiązań niemal nie wymaga żadnych zmian.

Ale jak każda platforma programistyczna, także Windows Azure ma swoją specyfikę. Dostosowanie rozwiązania do jego możliwości przyniesie jednak duże zyski – zarówno jeśli chodzi o wydajność/skalowalność, jak i o koszty. W kolejnych artykułach poruszane będą zagadnienia przybliżające platformę Azure i możliwości, jakie daje ona programiście czy architektowi.

  • [Windows Azure SDK 1.3](gg477429(v=msdn.10).md) - artykuł zawiera krótkie podsumowanie nowych elementów dostępnych na platformie Azure wraz z wprowadzeniem SDK 1.3.
  • Pierwsza aplikacja w Windows Azure  – artykuł, w którym czytelnik zostanie przeprowadzony krok po kroku od założenia konta Azure po wgranie tam prostej aplikacji ASP.NET.
  • Debugowanie aplikacji Azure – Intellitrace - w artykuł pokazuje, w jaki sposób wykorzystać mechanizm IntelliTrace z Visual Studio 2010 w połączeniu z aplikacjami uruchomionymi na Windows Azure, czyli - jak zobaczyć instrukcje, jakie wykonała chmura.
  • SQL Azure – jak wykorzystać we własnej aplikacji - w tym artykule pokazane będą podstawowe różnice w stosunku do dużego SQL Server, a także  jak podejść do migracji rozwiązań bazujących na SQL do chmury.
  • Różne pojemniki Windows Azure – który wybrać i kiedy. W przypadku każdej aplikacji internetowej to sposób realizacji dostępu do danych i wybór pojemnika decyduje o maksymalnej skalowalności i wydajności rozwiązania. Z drugiej strony, chcąc dany projekt zrealizować w jak najkrótszym czasie, warto skorzystać z rozwiązań dysponujących bogatszym API. W tym artykule omówione będą zastosowania poszczególnych typów pojemników oraz w jaki sposób można (i warto) je połączyć, by współpracowały ze sobą.
  • Jak napisać naprawdę skalowalną aplikację, wykorzystując Windows Azure, Queue,Blob, Table. W tym artykule omówiony zostanie podstawowy schemat architektoniczny zapewniający wysoką skalowalność rozwiązania na Windows Azure.
  • Zarządzanie i diagnostyka Windows Azure. Co prawda Windows Azure samodzielnie zarządza infrastrukturą i np. restartuje role w razie potrzeby, ale zawsze warto mieć „własną” warstwę monitorującą i zarządzającą konkretną aplikacją. W tym artykule omówione będą dwa elementy Azure – Management i Diagnostics API.
  • Samoskalująca się aplikacja na Windows Azure.  Ten artykuł pokaże, w jaki sposób można, wykorzystując mechanizmy diagnostyki Azure, automatycznie zwiększać lub zmniejszać liczbę instancji obsługujących ruch przychodzący z Internetu.
  • Tomcat na Windows Azure - na Windows Azure można uruchomić niemal dowolne rozwiązanie działające na Windows Server. W tej publikacji opisano sposób uruchomienia Javy (pojemnika servletów/JSP, Tomcat) na Windows Azure.
  • Możliwości Windows Azure AppFabric. W tym artykule omówione będą możliwości AppFabric – zarówno jeśli chodzi o łączność, jak i autoryzację.
  • Jak czytać ze zrozumieniem cennik Azure? I jak planować architekturę aplikacji? Windows Azure to pierwsza platforma, w której tak wyraźnie widać związek między decyzjami architektonicznymi a kosztami utrzymania aplikacji. Od tego, jak będzie zorganizowana warstwa dostępu do danych, logika czy interfejs użytkownika zależy opłata miesięczna! W tym artykule prześledzimy na przykładzie, w jaki sposób można podejmować decyzje wyważając z jednej strony czas realizacji zadania, a z drugiej – przybliżoną cenę utrzymania rozwiązania i wydajność bazowych elementów Azure.
  • PHP oraz platforma Azure - w tym artykule pokazano, w jaki sposób można tworzyć rozwiązania wykorzystujące PHP i uruchamiać je na Windows Azure.
  • Azure Drive - w artykule omówiony został mechanizm Azure Drive, pozwalający montować pliki VHD umieszczone w Azure Blob jako dyski w instancji roli.
  • IIS w Windows Azure - Jednym z nowych elementów w Azure SDK 1.3 jest możliwość użycia standardowego IIS - takiego samego jak w Windows Server. W tym artykule pokazano, jak można wykorzystać ten mechanizm do hostowania w jednej roli typu Web różnych witryn.
  • OData – nowy standard udostępniania i korzystania z danych - Ta seria artykułów ma na celu przedstawienie protokołu począwszy od informacji o samym protokole, sposobów korzystania z takiego źródła danych, manipulowania tymi danymi oraz tworzenia własnych źródeł, które będą udostępnione za pomocą nowego mechanizmu.
  • Zdalny pulpit w Azure - W artykule omówiony jest sposób podłączenia się do instancji Windows Azure za pomocą mechanizmu zdalnego pulpitu (Remote Desktop). Jest to jedna z nowości, jaka pojawiła się w listopadowym Azure SDK (w 2010 roku).
  • [Azure AppFabric](gg650380(v=msdn.10).md) – artykuł zawiera przegląd Azure AppFabric - komponentu pozwalającego budować hybrydowe aplikacje, z których część działa we własnej serwerowni, a część w Windows Azure.
  • [Multicasting w Azure AppFabric](gg697592(v=msdn.10).md) - Jedną z ciekawszych cech Azure AppFabric Service Bus jest możliwość równoczesnego rozsyłania komunikatu do wielu klientów (oczywiście rozproszonych po całym świecie). W tym artykule pokazano, w jaki sposób można taką usługę zaimplementować.
  • [Płatności Windows Azure](gg710570(v=msdn.10).md) - Artykuł ma na celu wyjaśnienie sposobu płatności za wykorzystywanie zasobów Azure. Po przeczytaniu artykułu temat płatności nie powinien budzić żadnych wątpliwości.
  • [Azure AppFabric i Access Control Service](gg715575(v=msdn.10).md) - Mechanizm Access Control Services pozwala zbudować aplikację wykorzystującą zewnętrzne mechanizmy autoryzacji. W tym artykule przedstawiono, w jaki sposób wykorzystać ACS do zabezpieczenia aplikacji ASP.NET (w tym przypadku działającej na lokalnym IIS).
  • [Windows Azure AppFabric - połączenia bezpośrednie](gg723681(v=msdn.10).md) - Połączenia hybrydowe w Azure AppFabric, w których, dzięki specjalnej konfiguracji, nawiązywanie połączenia odbywa się za pośrednictwem Service Bus, ale podczas przesyłania danych pakiety są transmitowane tylko w sieci lokalnej.
  • [Windows Azure AppFabric Cache – wprowadzenie](gg998755(v=msdn.10).md) - Mechanizm Azure AppFabric Cache, dzięki któremu programista ma do dyspozycji gigantyczną, rozproszoną farmę serwerów cache . W odróżnieniu od CDN - tu dane przechowywane są w pamięci, a z poziomu aplikacji traktuje się cache niemal jak normalną kolekcję w C#.
  • [Windows Azure AppFabric – autoryzacja dostępu do operacji WCF za pomocą tokenów SWT](gg191223(v=msdn.10).md) - ACS może służyć również do autoryzacji użytkowników chcących wywołać konkretne metody na usłudze WCF. Mechanizm ACS jest oparty na żądaniach (claim-based security).
  • Integracja Windows Azure AppFabric Caching z sesjami ASP.NET - W klasycznym ASP.NET sesja może być przechowywana w InProc, StateServer lub SQLServer. Dzięki AppFabric Caching, programiści otrzymują czwartą możliwość stanowiącą rozproszoną i skalowalną pamięć, która z pewnością nadaje się dla skomplikowanych aplikacji webowych.
  • [ASP.NET MVC 3.0 w Azure](hh204606(v=msdn.10).md) - Nowa wersja ASP.NET MVC dostarcza wiele usprawnień, a prosta składnia Razor z pewnością ułatwia tworzenie aplikacji webowych. Niestety, aktualnie Azure nie zawiera bibliotek ASP.NET MVC 3.0 – należy samodzielnie zainstalować wymagane pliki.