Tuż po zakończeniu wczorajszej prezentacji dotyczącej nowych możliwości technologii Microsoft HoloLens, przyszedł czas na pierwszą w pełni techniczną sesję tegorocznej konferencji Build. Na specjalnie przygotowaną scenę powrócił Mark Russinovich, który przez wyznaczone mu 60 minut opowiadał o nadchodzących nowościach, jakie wkrótce zagoszczą na platformie obliczeniowej Azure.
Na sesję zatytułowaną "The Next Generation of Azure Compute Platform" złożyły się trzy główne termaty: Azure Resource Manager, będący udostępnionym niedawno ogólnym modelem aplikacji Azure; nowe, dedykowane mu API do zarządzania zasobami w postaci maszyn wirtualnych, magazynu oraz sieci, jak również zapowiedziana w zeszłym tygodniu, oparta na mikro-usługach platforma orkiestracji Azure Service Fabric z dedykowanym jej SDK. Jako że sesja ta miała charakter czysto techniczny, zaprezentowane podczas jej trwania informacje postaramy się podać Wam w możliwie zwięzły i przystępny sposób.

Pierwszym omawianym tematem był Azure Resource Manager. Jak określił to prowadzący - należy traktować go jako całkowicie nowe spojrzenie na aplikacje w chmurze, które zastępuje dotychczasowy model aplikacji w postaci usług chmury Azure, wymuszający na nas ręczne posklejanie poszczególnych warstw naszego wdrożenia w spójną całość. Resource Manager pozwala grupować odrębne jak do tej pory zasoby, i w ten sposób tworzyć z nich częściowe lub pełne aplikacje. W modelu tym każdy zasób ma określony typ, definiowany jest przez określonego (rejestrowalnego) dostawcę oraz musi przynależeć do co najmniej jednej i tylko jednej grupy. Konteneryzacja zasobów będzie więc obowiązkowa i pozwoli na sprawne zarządzanie pełnym cyklem życia danej grupy zasobów, umożliwiając ich szybkie i kontrolowane wdrażanie, usuwanie lub aktualizowanie, co pośrednio ułatwi również pomiary wykorzystania konkretnych zasobów, a także uprości proces wyliczania kosztów, czy też określania limitów dla danej grupy zasobów.
Dodatkową zaletą tego rodzaju konteneryzacji jest możliwość zastosowania w stosunku do zasobów kontroli dostępu opartej na rolach (role-based access control, RBAC), szczegółowo definiującej uprawnienia dostępu do wybranych grup zasobów. Grupy zasobów otrzymają również odpowiednie tożsamości, przez co komunikacja pomiędzy zasobami danej grupy będzie mogła przebiegać bez konieczności dysponowania stosownymi poświadczeniami lub certyfikatami. Azure Resource Manager dostarcza i bazuje ponadto na odpowiednich usługach, oferujących m.in. scentralizowane inspekcje operacji, proste znakowanie i grupowanie zasobów z możliwością ich późniejszego wyszukiwania, a także spójną kontrolę dostępu.
Zdaniem Russinovicha jedną z ważniejszych cech nowego modelu aplikacji są wdrożenia z użyciem szablonów, stanowiących deklaratywne (z wykorzystaniem notacji JSON) podejście do specyfikacji zasobów wraz z ich konfiguracją, kodem i rozszerzeniami. Tu od siebie możemy dodać, że szablony te przypominają nieco swoim działaniem funkcję Desired State Configuration powłoki Windows PowerShell, z tym że zamiast deklarować powiedzmy końcowy stan serwerów, definiujemy nimi pożądane grupy zasobów. Krótko mówiąc, szablony umożliwią proste definiowanie struktury aplikacji. Jeśli zachodzi taka potrzeba, można je odpowiednio sparametryzować, co jeszcze bardziej rozszerza możliwości wdrażania zaplanowanych rozwiązań. Russinovich zademonstrował działanie jednego z takich sparametryzowanych szablonów (Web app + SQL), budując go w zawierającym ku temu stosowne narzędzia środowisku Visual Studio, a następnie wdrażając go prostym sposobem w chmurze publicznej Azure.
Obecnie obsługiwanych jest nieco ponad 40 typów zasobów, przy czym standardowe utworzenie nowej maszyny wirtualnej nie umożliwi nam wykorzystania pełnych możliwości oferowanych przez nowe grupy zasobów. Zaoferują to dopiero nowe API do zarządzania zasobami, którym poświęcona była kolejna część sesji, zawierająca również niewielkie demo prezentujące wdrożenie identycznego szablonu, tym razem w ramach infrastruktury chmury prywatnej. Jedną z pozostałych nowości prezentowanych w ramach tej części sesji były również zapowiedziane na przyszłość skalowalne maszyny wirtualne. Te można by przyrównać do ról roboczych Azure nowej generacji, znoszących dotychczasowe ograniczenia w kwestii skalowalności i doboru niestandardowych obrazów, co poniekąd czyni je idealnymi dla klastrów. Prócz tego miała miejsce także zapowiedź rozszerzeń dla maszyn wirtualnych, pozwalających na dynamiczne wstrzykiwanie do nich kodu i konfiguracji.

Chwilę później Mark powrócił do tematu wstępnie poruszonych w porannej sesji kontenerów Docker, tym razem zachwalając je pod kątem aplikacji bazujących na mikro-usługach, będących zdekomponowanymi na mniejsze części aplikacjami w chmurze. Taka segmentacja pozwala na łatwe i zdecentralizowane rozwijanie, testowanie czy aktualizowanie odrębnych komponentów aplikacji, bez konieczności zajmowania się całością. Jako że potrzebna jest w tym celu odpowiednia platforma umożliwiająca uruchamianie i zarządzanie poszczególnymi mikro-usługami, toteż Microsoft zaimplementował takie rozwiązanie w postaci platformy Azure Service Fabric. Jej zadaniem jest zapewnienie w zakresie mikro-usług m.in. wysokiej dostępności, obsługi szablonów, replikacji, skalowania i migracji. Kilka działających na tejże platformie mikro-usług Microsoft już działa - są to chociażby usługi Azure Database, Azure Power BI, Azure Networking, Service Bus, Intune oraz Bing Cortana.