Tworzenie aplikacji dla Windows Azure
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ą.
- Tutorial: Azure Storage – Queue – przegląd API pozwalającego na pracę z kolejkami,
- Tutorial: Azure Storage – Blob – przegląd API pozwalającego na pracę z Azure Blob,
- Tutorial: Azure Storage – Table – przegląd API pozwalającego na pracę z tabelami.
- 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.