Co to jest chmura (Cloud Computing)? Według jednej z teorii chmura to przeniesienie pewnych zasobów (serwerów, danych, aplikacji) z naszej firmy/serwerowni w inne miejsce. I to bez względu na to czy to będzie tylko sprzęt, czy to będzie maszyna wirtualna, czy to będą dane, czy to będzie cała aplikacja. Chmury i ich skróty Przy takiej uproszczonej definicji zobaczycie, że w pewnym sensie chmury istnieją już od dawna, tylko stają się coraz bardziej zaawansowane. Po prostu dostosowują się do potrzeb rynku. Zacznijmy od pewnego schematu i jego omówienia krok po kroku: Kolokacja Kolokacja to najstarsza i najprostsza forma usług w chmurze. Płacimy za użyczenie miejsca w serwerowni, która jest poza naszą firmą. 1
IaaS = Infrastructure as a Service IaaS to rozszerzenie kolokacji o zapewnienie sprzętu przez dostawcę. To dostawca daje nam sprzęt. Naszym zadaniem jest dostarczyć system operacyjny, oprogramowanie i aplikacje. W starszym przypadku (dedykowany serwer) płacimy za określony sprzęt (jako pudełko), ponadto często jest to droższa sprawa i mniej elastyczna (bo dokupienie np. 5 serwerów to może nie być kwestia godzin tylko dni). W przypadku nowszych rozwiązań (wirtualne maszyny) płacimy tylko za faktycznie zużytą moc serwerów i elastyczność jest praktycznie nieograniczona (możemy np. uruchomić 10 dodatkowych serwerów w 30 minut). Nowsze podejście to np. chmura Amazon EC2 oraz Azure Virtual Machines. PaaS = Platform as a Service W wypadku PaaS otrzymujemy to wszystko co było w IaaS, ale dostawca dorzuca nam do tego całą platformę aplikacyjną. Przestajemy się martwić o system operacyjny (w tym jego utrzymanie, zarządzanie, patchowanie), a zajmujemy się tylko pisaniem aplikacji i ich utrzymaniem. Aplikacje możemy użytkować sami lub po prostu je sprzedawać jako usługi. To daje nam Microsoft w postaci Windows Azure, gdzie system operacyjny jest zapewniony przez Microsoft. Dodatkowo zapewniona jest baza danych (Windows Azure SQL Database) oraz kilka innych elementów. Ważne jest to, że Microsoft zapewnia również platformę do pisania aplikacji, czyli.net Framework. Ale co równie ciekawe - aplikacje w chmurze Microsoft mogą być też pisane w językach takich jak PHP, Python czy Java. Podobny rodzaj chmury oferuje Google (choć w dużo mniejszym zakresie i o dużo mniejszych możliwościach). 2
W tym wypadku rozliczamy się za zużycie zasobów (czas procesora, miejsce na dysku, liczbę zapytań czy transfer danych). SaaS = Software as a Service To sytuacja kiedy dostawca zajmuje się wszystkim, od sprzętu, poprzez system operacyjny aż do finalnej aplikacji. My korzystamy tak naprawdę tylko z określonej aplikacji i jej funkcjonalności. Czyli kupujemy gotowe pudełko z aplikacją, ale nie instalujemy jej u nas na komputerze tylko korzystamy z niej w chmurze (przez Internet). W tym wypadku rozliczamy się najczęściej w modelu opłata za jednego użytkownika za miesiąc korzystania z aplikacji. Minusem jest to, że nie możemy zmienić nic w tej aplikacji ani nie mamy wpływu na jej rozwój (a przynajmniej nie decydujący wpływ). I to z jednej strony jest coś w czym Microsoft siedzi od lat bo mamy przecież Hotmail/Outlook.com (największa na świecie aplikacja w chmurze) czy inne tego typu aplikacje (Live, SkyDrive, itp.). Z drugiej strony w obecnej chwili tak dużo się o tym mówi, bo Microsoft przenosi swoje koronne i kluczowe aplikacje (działające do tej pory na komputerze/serwerze lokalnym) do chmury. Co bardzo ważne Microsoft zainwestował mnóstwo pieniędzy i zasobów w to, aby większość produktów pudełkowych była w niedługiej przyszłości dostępna w chmurze. Inwestycje są rzędu 2.3 miliarda dolarów w ostatnim roku oraz 30.000 inżynierów pracujących nad tymi aplikacjami. Tego typu chmurę ma aktualnie też m.in. Google (ze swoimi Google Apps) oraz Salesforce.com (ze swoim systemem CRM, znanym bardziej na świecie niż w Polsce). 3
Software + Services Do całego obrazu brakuje nam jednego dodatkowego wyjaśnienia. Chodzi o wymieszanie tego co mamy teraz (czyli serwery w firmie, aplikacje na komputerach) z tym co daje chmura (serwery i aplikacje poza firmą). Generalnie często nazywa się to właśnie jako Software + Services. Czyli z jednej strony możliwości korzystania z klasycznego oprogramowania (Software), z drugiej strony możliwość skorzystania z tego na zasadzie usługi (Service). To od nas ma zależeć co dla nas jest lepsze, bo wcale nie zawsze chmura będzie właściwym rozwiązaniem. A w obecnej chwili tylko Microsoft ma możliwość dania nam tego wyboru, bo w swojej ofercie ma zarówno klasyczne pudełka (z oprogramowaniem wszelkiego rodzaju) jak i ich odpowiedniki w chmurze (tych na razie jest kilka, niedługo będzie pewnie zdecydowana większość). 4
Czym jest programowanie na platformę chmury? Chmura oznacza komputery i aplikacje, zarządzane zdalnie, do których dostęp uzyskuje się przez Internet. Środowiska chmury składają się z maszyn wirtualnych, które pracują w dużych centrach przetwarzania danych. Fizycznie zastępują one komputery i serwery. Zagregowanie potrzeb obliczeniowych wielu użytkowników w jednym centrum przetwarzania danych, pozwala na uzyskanie oszczędności skali. W efekcie daje to spore korzyści, takie jak niższe zużycie energii, prostsze konfigurowanie i utrzymanie oraz łatwiejsze zwiększanie pojemności i wydajności. W przypadku wielu aplikacji, nie trzeba w nich niczego zmieniać, aby wdrożyć je w chmurze zamiast na lokalnych komputerach lub serwerach. Microsoft Azure (wcześniej: Azure Services Platform, Windows Azure) to platforma chmurowa firmy Microsoft stworzona w modelu PaaS (Platform as a Service). Udostępnia ona mechanizmy pozwalające przetwarzać dane (Windows Azure Compute), a także je składować (Windows Azure Storage, SQL Azure). Platforma Windows Azure występowała pod nazwa kodową Red Dog. W trakcie konferencji PDC 2008 w Los Angeles nastąpiła pierwsza prezentacja Platformy Windows Azure. 1 lutego 2010 nastąpiła publiczna premiera tej platformy i udostępnienie jej do użytku komercyjnego. Połączenie usług IaaS i PaaS Platforma Azure to jedyna duża platforma chmury oceniana przez firmę Gartner jako lider branżowy usług IaaS (infrastruktury jako usługi) i PaaS (platformy jako usługi). To potężne połączenie zarządzanych i niezarządzanych usług umożliwia tworzenie i wdrażanie aplikacji oraz zarządzanie nimi w dowolny sposób, co zapewnia wysoką wydajność. 5
Gotowa na rozwiązania hybrydowe Niektórzy dostawcy usług w chmurze zobowiązują klienta do wyboru między własnym centrum danych a chmurą publiczną. Platforma Azure oparta na hybrydowych rozwiązaniach i sprawdzona przez firmy daje korzyści płynące z obu podejść oferując więcej opcji infrastruktury informatycznej bez nadmiernej złożoności. Na platformie Azure przechowywanie danych, wykonywanie kopii zapasowych i odzyskiwanie są wydajniejsze i bardziej ekonomiczne. Łatwiej jest też budować aplikacje, które sięgają zarówno do zasobów lokalnych, jak i do chmury. Jest otwarta i elastyczna System Azure obsługuje każdy system operacyjny, język, narzędzie i strukturę od systemu Windows do Linux, od oprogramowania SQL Server do Oracle, od języka C# do Java. 6
Zawsze pracuje, zawsze działa Masz do dyspozycji tę samą platformę przetestowaną w firmach, które stanowią siłę napędową usług Skype, Office 365, Bing i Xbox. Platforma Azure oferuje umowę SLA obejmującą dostępność na poziomie 99,95%, całodobową pomoc techniczną i ciągłe monitorowanie kondycji usługi. Ekonomiczne i skalowalne rozwiązanie System Azure można szybko skalować w górę i w dół odpowiednio do wymagań, dlatego płaci się tylko za rzeczywiste użycie. Naliczanie wg minut i zaangażowanie w oferowanie konkurencyjnych cen dla popularnych usług infrastruktury, takich jak moc obliczeniowa, magazyn i przepustowość, oznaczają, że zawsze dostaniesz najlepszą cenę za otrzymaną wydajność. Jest wszędzie Platforma Azure opiera się na rosnącej globalnej sieci centrów danych zarządzanych przez firmę Microsoft w 19 regionach. Dzięki temu masz wiele możliwości uruchamiania aplikacji przy zapewnieniu ciągłej wysokiej wydajności u klientów. 7
Budowa platformy Azure Platforma zbudowana jest z grupy trzech technologii zapewniających specjalizowany zestaw możliwości dla programistów. Co więcej, platforma Windows Azure może być wykorzystywana zarówno przez aplikacje uruchamiane lokalnie na komputerach użytkowników, jak i aplikacje uruchomione w chmurze. Platforma Windows Azure składa się z następujących elementów: Windows Azure To zoptymalizowany do pracy w chmurze system operacyjny. Zapewnia środowisko uruchomieniowe dla aplikacji oparte na systemie operacyjnym bazującym na Windows Server, a także przestrzeń do składowania danych. System ten uruchamiany jest na maszynach wirtualnych. W jego skład wchodzą: Compute odpowiada za zadania obliczeniowe hostowanych aplikacji. To moc obliczeniowa, która jest dostępna w postaci już skonfigurowanych maszyn wirtualnych. Z założenia nie oferują one pełnego dostępu do warstwy sprzętowej, dzięki czemu jest możliwe bardzo szybkie ich powielenie w przypadku wzrostu zapotrzebowania, czy też przełączenie pomiędzy ich instancjami w momencie kiedy nastąpi awaria. Każda maszyna pozwala na uruchomienie jednej lub więcej ról (ang. roles), czyli trybów pracy środowiska Azure. Mamy do dyspozycji takie role jak: web role - oferuje m.in. możliwość hostowania aplikacji ASP.NET, worker role - pozwala uruchomić dowolny program i aplikację w chmurze, win role - pozwala na migrację istniejących programów działających pod kontrolą Windows Server do chmury Windows Azure. Dzięki temu możliwe staje się uruchamianie w chmurze wirtualnych dysków z systemem Windows Server, które są przygotowane w środowisku lokalnym. Storage odpowiada za przechowywanie danych w chmurze. Jest to przestrzeń magazynowa w ramach Windows Azure, która ma strukturę nierelacyjnego składowiska danych nadającego się do magazynowania i szybkiego dostępu do dużej ilości informacji, np. dane binarne, grafika, 8
filmy, obrazy. Takie podejście umożliwia szybką i łatwą integrację z wewnętrznymi serwisami. Management odpowiada za zarządzanie i monitorowanie aplikacji uruchomionych w chmurze, a także nadzór maszyn działających w centrum obliczeniowym. SQL Azure Zapewnia możliwość używania relacyjnej bazy danych zaimplementowanej do uruchamiania w chmurze. SQL Azure oferuje nam dostęp do gotowego silnika bazy danych, który można wykorzystać do składowania danych relacyjnych, do platformy raportującej oraz do synchronizacji danych za pomocą Microsoft Sync Framework. Zaletą skorzystania z SQL Azure jest to, że nie trzeba martwić się administracyjną częścią zarządzania takim serwerem, ponieważ nasza baza jest zarządzana automatycznie przez platformę. Windows Azure Platform AppFabric Komponent dostarczający dodatkowe funkcjonalności w formie usług. Wśród nich znajdziemy następujące mechanizmy: Service Bus pozwala tworzyć chmurę hybrydową i zapewnia bezpieczne połączenie między zasobami zdalnymi i lokalnymi, zwana szyną. Wyobraźmy sobie, że mamy zadanie skomunikowania ze sobą różnych serwisów, które znajdują się w różnych sieciach. Szyna pozwala na łatwy kontakt pomiędzy takimi serwisami. Access Control Services mechanizm odpowiadający za kontrolę dostępu do usług (wykorzystywany jest np. przez Service Bus). Kontrola dostępu to mechanizmy pozwalające na rozwiązanie często spotykanych, ale równocześnie trudnych w realizacji scenariuszy, które są związane np. z uwierzytelnianiem użytkowników w oparciu o zewnętrzne systemy zarządzania tożsamością, jak Active Directory. Caching rozproszony cache w pamięci. Pozwala na cachowanie naszej aplikacji webowej. 9
Warto jeszcze przypomnieć odnośnie samego Windows Azure, że programy, które będziemy pisać na całą platformę Azure nie muszą być pisane tylko i wyłącznie za pośrednictwem.net, można korzystać z innych języków programowania takich jak Java, PHP, Pyton czy Ruby. Źródła https://msdn.microsoft.com/pl-pl/ff380142.aspx http://azure.microsoft.com/pl-pl/overview/what-is-azure/ http://channel9.msdn.com/series/pierwsze-kroki-z-windows-azure-kurs-od-podstaw http://pl.wikipedia.org/wiki/microsoft_azure http://channel9.msdn.com/series/pierwsze-kroki-z-windows-azure-kurs-od-podstaw https://msdn.microsoft.com/pl-pl/centrum-windows-azure.aspx https://www.visualstudio.com/get-started/set-up-vs https://www.visualstudio.com/pl-pl/products/free-developer-offers-vs.aspx http://azure.microsoft.com/pl-pl/documentation/articles/web-sites-dotnet-get-started/ 10