fbpx
devstyle.pl - Blog dla każdego programisty
devstyle.pl - Blog dla każdego programisty
16 minut

Chcesz zostać Cloud Developerem? Oto 12 usług w Azure, które MUSISZ znać!


28.06.2018

Chmura staje się powoli kluczowym elementem środowisk IT. Większość naszych klientów oczekuje, aby nowe aplikacje powstawały z jej wykorzystaniem, były rozproszone i łatwo skalowalne. Aby zrealizować te wymagania, developerzy muszą wciąż poznawać nowe komponenty i usługi, które wykorzystują w codziennej pracy.

Dzisiaj przedstawię Ci kilka strategicznych usług, bez których nie obejdzie się żadne szanujące się wdrożenie w Azure.

Damian Mazurek Autor tekstu: Damian Mazurek, CTO w Chmurowisku. Programista i architekt, specjalista od Azure. Jeden z prekursorów Azure w Polsce.

Po lekturze tekstu zachęcam do przesłuchania odcinka podcasta DevTalk #82, w którym Damian dużo i ciekawie opowiada o chmurze w ogóle i Azure w szczególności.

Usługi, które omówię, są dostarczane w modelu PaaS – Platform as a Service. Jest to rodzaj usług, w których otrzymujemy gotowe rozwiązanie, bez konieczności stawiania pod spodem maszyn wirtualnych, na których instalujemy nasze oprogramowanie. W modelu PaaS dostajemy gotową do działania usługę, w której umieszczamy nasz kod, dane czy aplikacje.

App Service – łatwe i szybkie publikowanie aplikacje w chmurze

App Service jest podstawową usługą pozwalająca na hosting aplikacji w chmurze MS Azure. Pozwala ona na wystawianie aplikacji internetowych, interfejsów REST API i backendu dla aplikacji mobilnych. Obsługuje wiele technologii takich jak .Net, .Net Core, Java, NodeJS, PHP, Ruby i wiele innych. Aplikacje można skalować i uruchamiać w środowiskach opartych na systemach Windows czy Linux bądź na kontenerach Dockerowych.

Kluczowe zalety:

  • Wsparcie wielu technologii w tym: ASP.NET, ASP.NET Core, Java, Ruby, Node.js, PHP i Python.
  • Łatwa skalowalność i automatyczny load balancing.
  • Wysoka dostępność zapewniona przez dostawcę.
  • Prosta integracja z popularnymi serwerami buildów.
  • Możliwość bardzo prostej integracji z logowaniem na poziomie Azure Active Directory lub danych logowania z serwisów społecznościowych (Facebook, Google, Twitter, Microsoft) na poziomie platformy.
  • Dobra integracja z Visual Studio.
  • Deployment slots, czyli dodatkowe środowiska dla aplikacji pozwalające na wdrożenie aplikacji z zerowym czasem przestoju.
  • Integracja z AppInsight pozwalająca na prostą obsługę logów i monitorowanie aplikacji.

Azure Functions – budowanie systemów serverless

Azure Functions jest usługą pozwalającą w prosty sposób budować systemy serverless. Dzięki dynamicznej alokacji zasobów uruchomieniowych oraz rozbudowanym bindingom do istniejących usług Azure, nie musimy troszczyć się praktycznie o nic innego jak tylko nasz kod. Pozwala nam to zaoszczędzić naprawdę sporo czasu na etapie developmentu, szczególnie w przypadku event sourcingu.

Kluczowe zalety:

  • Różne języki programowania: C#, F# lub JavaScript.
  • Płatność tylko za faktyczne wywołania.
  • Łatwa integracja z wieloma usługami Azure za pomocą wejść i wyjść z funkcji.
  • Open source – dostęp do środowiska uruchomieniowego Azure Functions.
  • Możliwość uruchomienia funkcji w momencie przyjścia żądania HTTP, wiadomości w kolejce, wrzucenia pliku na storage, dokumentu do Cosmos DB lub innych zdarzeń.
  • Dobre wsparcie z poziomu Visual Studio.
  • Łatwy sposób tworzenia rozwiązań CI i CD z wykorzystaniem Visual Studio Team Services.
  • Dynamiczne skalowanie zapewniające możliwość przetwarzania równoległego wielu zdarzeń.
  • Lekkie i szybkie rozwiązanie.

API Management – bezproblemowe zarządzanie własnym API

Zarządzanie interfejsem API w przypadku architektury mikroserwisów jest naprawdę trudne. Setki serwisów udostępniających swoje API czy to wewnętrznie, czy zewnętrznie wymagają dokumentacji i kontroli dostępu. Często buduje się różnego rodzaju wrappery, których zadaniem jest przetwarzanie treści żądań w locie.

Wszystkie te funkcjonalności znajdziesz w usłudze Azure API Management, która została stworzona, aby pomóc ogarnąć programistom chaos związany z ogromną liczbą mikroserwisów;) To PaaS-owe rozwiązanie pozwala na zarządzanie interfejsem API udostępnionym przez nasz backend, przekształcanie treści komunikatów w locie, kontrolę dostępu oraz tworzenia dokumentacji dla API i udostępnianie jej za pomocą dedykowanego portalu. Jest to potężne narzędzie, które warto znać, budując rozproszone aplikacje chmurowe oparte o mikroserwisy lub SOA.

Kluczowe zalety:

  • Przyjmowanie żądań API i kierowanie ich do odpowiedniego backendu.
  • Weryfikowanie kluczy interfejsu API, tokenów JWT, certyfikatów i innych poświadczeń.
  • Wymuszanie przydziałów użycia i ograniczeń liczby wywołań.
  • Przekształcanie interfejsu API na bieżąco, bez modyfikacji kodu.
  • Buforowanie odpowiedzi backendu w skonfigurowanym miejscu.
  • Rejestrowanie w dzienniku metadanych żądań w celu dalszych analiz.
  • Przeglądanie dokumentacji interfejsu API za pomocą dedykowanego portalu developerskiego.
  • Testowanie interfejsu API za pośrednictwem interaktywnej konsoli.

Service Bus, Event Hub i Event Grid – asynchroniczna komunikacja między usługami

Komunikacja pomiędzy usługami w aplikacjach rozproszonych opartych o mikrousługi lub SOA jest jednym z podstawowych wyzwań w takich rozwiązaniach. Zadanie to staje się piekielnie skomplikowane, jeśli aplikacje mają przesyłać setki Mb/s danych i zapewniać pełne bezpieczeństwo i wysoką dostępność. Dodatkową trudność wprowadza asynchroniczna komunikacja oparta o różnego rodzaju systemy kolejkowe.

Na szczęście znów z pomocą przychodzi nam chmura. MS Azure udostępnia aż trzy usługi w modelu PaaS pozwalające w prosty sposób zrealizować asynchroniczną transmisję danych (jest jeszcze Kafka w ramach pakietu HDInsight, ale pomijam ją w tym zestawieniu, ponieważ nie jest ona rozwiązaniem w pełni PaaS).

Event Grid

To usługa pozwalająca na transportowanie danych pomiędzy usługami MS Azure takimi jak storage, event huby, czy IoT huby, a docelowymi wyjściami lub funkcjami przetwarzającymi. Stosowana jest w systemach reaktywnych, które muszą szybko reagować na zmiany stanów poszczególnych elementów. Wydawcy emitują zdarzenia, ale nie mają żadnych oczekiwań dotyczących tego, które zdarzenia zostaną obsłużone. Subskrybenci decydują, które zdarzenia chcą obsłużyć.

Event Hub

Event Hub pozwala na transmisję milionów komunikatów na sekundę i idealnie nadaje się jako potok danych dla rozwiązań big data. Usługa zapewnia rozwiązanie umożliwiające szybkie pobieranie danych na potrzeby przetwarzania w czasie rzeczywistym oraz powtarzane ponowne odtwarzanie przechowywanych nieprzetworzonych danych w przypadku awarii systemu.

Service Bus

Service Bus to usługa do komunikacji kolejkowej gwarantująca niezawodność oraz odporna na utratę danych czy ich duplikację. Udostępnia ona zaawansowane funkcje obsługi wiadomości takie jak FIFO, tworzenie partii / sesje, transakcje, obsługa utraconych komunikatów, kontrola czasowa, routing i filtrowanie oraz wykrywanie duplikatów.

Event Grid, Event Hub i Service Bus – porównanie usług

Poniższa tabela prezentuje krótkie porównanie trzech usług:

Usługa Przeznaczenie Typ Kiedy ją stosować
Event Grid Programowanie reaktywne Dystrybucja zdarzeń (odrębne) Reagowanie na zmiany stanu
Event Hub Potok danych big data Przesyłanie strumieniowe zdarzeń (serie) Przesyłanie strumieniowe rozproszonych danych i telemetrii
Service Bus Obsługa komunikatów o wysokiej wartości w przedsiębiorstwie Komunikat Przetwarzanie krytycznych danych biznesowych, wymagających wielkiej niezawodności, jednak nie potrzebujących pracy w trybie real time

 

Kluczowe zalety:

  • Małe opóźnienia i możliwość przetwarzania milionów komunikatów na sekundę za pomocą Event Hub.
  • Niezawodne asynchroniczne dostarczanie komunikatów w usłudze Service Bus.
  • Zaawansowane funkcje obsługi wiadomości takie jak FIFO, tworzenie partii/sesji, transakcje, obsługa utraconych komunikatów, kontrola czasowa, routing i filtrowanie oraz wykrywanie duplikatów w usłudze Service Bus.
  • Dynamiczna skalowalność.
  • Niski koszt.
  • Możliwość subskrypcji na poszczególne dane potrzebne przez odbiorców.
  • Bardzo dobra integracja z innymi usługami MS Azure.
  • Komunikacja asynchroniczna HA.
  • SDK dla wielu platform i języków programowania: .Net, NodeJS, Java i wiele innych.

Data Lake Store i Data Lake Analytics – big data w chmurze

Większość aplikacji chmurowych prędzej czy później kończy jako systemy big data. Coraz większe ilości danych spływające ze wszystkich stron, ich analiza i prezentacja często stanowią wyzwanie dla developerów.

MS Azure przychodzi nam z pomocą, udostępniając dwie usługi, Data Lake Store i Data Lake Analytics. Obydwie służą gromadzeniu dużej ilości danych i ich procesowaniu w postaci zadań batchowych.

Data Lake Store pozwala na przechowywanie nieograniczonej liczby danych w postaci plikowej. Możemy przechowywać w niej najróżniejsze pomiary, dane tekstowe, zdjęcia czy nawet video. Data Lake Analytics natomiast jest usługą udostępniającą moc obliczeniową, która operuje bezpośrednio na DLS i wdraża mechanizmy MapReduce.

Obydwie usługi idealnie nadają się do przechowywania danych wszelkiego typu spływających z różnego rodzaju źródeł i wykonywania operacji wsadowych, których wyniki niosą wartość dla użytkownika.

Kluczowe zalety:

  • Nieograniczona przestrzeń w Data Lake Store.
  • Kompatybilność z API REST WebHDFS.
  • System plikowy zgodny z Hadoop Distributed File System (HDFS).
  • Nieograniczony magazyn i możliwość przechowywania petabajtowych plików.
  • Prosta integracja z innymi usługami Azure.
  • SDK dostępne dla wielu języków i platform min.: .Net, NodeJS, Python, Java.
  • Kontrola dostępu z dokładnością do pliku za pomocą Azure Active Directory.
  • Możliwość dynamicznego skalowania mocy obliczeniowej w Data Lake Analytics.
  • Implementacja mechanizmu MapReduce w DLA.
  • Język U-SQL stworzony dla developerów .Net w celach ułatwienia pracy z Big Data.
  • Dobra integracja z Visual Studio.
  • Dynamiczne skalowanie mocy dla jobów obliczeniowych.

Azure SQL – fundamentalny element systemów IT w modelu PaaS

Jednym z podstawowych elementów praktycznie każdej aplikacji są relacyjne bazy danych. W MS Azure mamy możliwość wykorzystania trzech silników bazodanowych w modelu PaaS: MS SQL, MySQL i PostgreSQL. Najbardziej dojrzałą usługą jest oczywiście MS SQL i na niej się skoncentruję.

W przeszłości praca z bazami danych często wymagała zatrudnienia administratorów specjalizujących się w obsłudze takich baz i zajmujących się wyłącznie nimi. Microsoft postanowił wyjść naprzeciw oczekiwaniom developerów i uprościć zarządzanie bazami. W tym celu firma wypuściła bazę w modelu PaaS. Dzięki niej developerzy mogą skupić się na developmencie bez zamartwiania się o serwery i ich konfigurację.

Większość funkcjonalności bazy jest łatwo konfigurowalna, a replikacje i backupy są dostarczane w modelu out of the box. Skalowanie jest proste, monitoring odbywa się za pomocą dedykowanych narzędzi, a dodatkowo do bazy są podpięte mechanizmy uczenia maszynowego nieustannie monitorujące  jej wydajność i udzielające rekomendacji odnośnie wydajności.

Kluczowe zalety:

  • Wbudowana replikacja podstawowa bazy danych zapewniająca wysoką dostępność.
  • Automatyczne backupy – usługa SQL Database automatycznie wykonuje pełne i różnicowe kopie zapasowe oraz kopie zapasowe dziennika transakcji.
  • Point in time restore – możliwość odtworzenia bazy do dowolnego punktu w czasie w ciągu ostatniego miesiąca.
  • Aktywna georeplikacja (read-only) pozwalająca na odczyt danych z innych regionów.
  • Grupy typu failover – mechanizm zapewniający przełączanie się automatyczne aplikacji na bazy z innych regionów w przypadku awarii geolokalizacyjnych.
  • Automatyczne monitorowanie i dostosowywanie wydajności.
  • Automatyczne zarządzanie indeksami.
  • Automatyczna korekta planu zapytań.
  • Szyfrowanie danych.
  • Dynamiczne maskowanie danych wrażliwych.
  • Automatyczne wykrywanie problemów z dziedziny bezpieczeństwa.

Azure Cosmos DB – przenieś swoje dane w kosmos

Azure Cosmos DB jest rozproszoną bazą NoSQL wykorzystywaną w aplikacjach, które charakteryzują się niską tolerancją opóźnień oraz wymagają skalowalności. Idealnie sprawdza się w scenariuszach obsługi systemów gamingowych, IoT i każdych innych, gdzie oczekuje się replikowalności, wysokiej skalowalności i szybkiego dostarczania danych dla klientów.

Jest to usługa, którą musisz poznać jako cloud developer!

Kluczowe zalety:

  • Kilka modeli danych: dokumentowy, grafowy, tabelaryczny.
  • Elastyczny i dynamiczny schemat modelu danych dzięki dokumentowemu modelowi bazy danych.
  • Możliwość pracowania na grafach.
  • Możliwość dostępu do bazy za pomocą wielu API w tym: MongoDB, Cassandra, Gremlin czy Azure Table.
  • Dostępność z wielu regionów Azure.
  • Możliwość tworzenia baz multi-master (zapisy i odczyty z replik znajdujących się w wielu regionach i ich synchronizacja).
  • Bardzo niska latencja.
  • SDK dostępne dla wielu języków i platform, min.: .Net, NodeJS i Java.
  • Możliwość tworzenia procedur składowanych, triggerów oraz UDF za pomocą JavaScript.
  • Partycjonowanie danych opartych o daną właściwość w formacie JSON.
  • Doskonała integracja z innymi usługami MS Azure.
  • Możliwość wykorzystania bazy jako message brokera w podejściu event sourcingu.

Azure Kubernetes Services – kontenery jeszcze nigdy nie były takie łatwe

Konteneryzacja to temat, który powinien poznać każdy cloud developer. Co jednak zrobić, gdy chcemy stworzyć zarządzane klastry, na których umieścimy setki lub tysiące kontenerów i chcielibyśmy im zapewnić wysoką dostępność? Z pomocą przychodzą nam tzw. orkiestratory.

Najpopularniejszym z nich jest Kubernetes, który bardzo szybko zdominował rynek. Aby ułatwić pracę z klastrami, Microsoft udostępnił tę usługę w modelu PaaS. Dzięki niej nie musisz martwić się o deployment ekosystemu Kubernetesa, gdyż dostaniesz go jako rozwiązanie gotowe do użycia. Pozwoli Ci to skoncentrować się w pełni na procesie developmentu aplikacji.

Kluczowe zalety:

  • Automatyczne udostępnianie nowych wersji w usłudze AKS, za pomocą których można uaktualnić klaster przy użyciu witryny Azure Portal lub Azure CLI. (FAQ: Are security updates applied to AKS agent nodes?)
  • Łatwe skalowanie klastra.
  • Wysoka niezawodność aplikacji umieszczonych w kontenerach.
  • Wykorzystanie natywnych usług MS Azure jako elementów wykorzystywanych przez K8s.
  • Oszczędność – płacisz tylko za uruchomione node’y (nie płacisz za maszyny master).
  • Możliwość prostej orkiestracji cyklem życia poszczególnych aplikacji.
  • Możliwość izolowania zasobów dla danych kontenerów.
  • Dobra integracja z popularnymi serwerami buildów.
  • Mechanizm service discovery i load balancigu.
  • Dynamiczne skalowanie aplikacji.
  • Wysoka dostępność aplikacji poprzez wbudowane mechanizmy platform K8s.

Azure Service Fabric – superskalowalna aplikacja stanowa

Azure Service Fabric to platforma umożliwiająca zarządzanie i wdrażanie systemów rozproszonych, często opartych o architekturę mikroserwisów. Usługa zapewnia obsługę całego cyklu życia aplikacji i CI/CD aplikacji chmurowych oraz kontenerów. Proces ten obejmuje etapy począwszy od programowania przez wdrożenie, bieżące zarządzanie i utrzymanie, aż do ostatecznego wycofania aplikacji.

Service Fabric może być używany nie tylko w MS Azure, ale także w on-premises lub każdej innej chmurze. Pozwala to na budowanie wysoko przenaszalnych i hybrydowych rozwiązań z jej wykorzystaniem.

Kluczowe zalety:

  • Wdrażanie aplikacji na platformie Azure lub w lokalnych centrach danych z systemem Windows lub Linux bez konieczności wprowadzania zmian w kodzie.
  • Tworzenie skalowalnych aplikacji złożonych z mikrousług przy użyciu modeli usługi Service Fabric, kontenerów lub dowolnego kodu.
  • Tworzenie niezawodnych mikroserwisów stanowych i bezstanowych.
  • Korzystanie z modelu programowania Reliable Actors w celu tworzenia obiektów z autonomicznym kodem i stanem.
  • Wdrażanie i koordynowanie kontenerów, między innymi kontenerów systemu Windows i Linux.
  • Stanowa orkiestracja kontenerów uwzględniająca dane.
  • Równoległe wdrażanie różnych wersji jednej aplikacji i uaktualnianie poszczególnych aplikacji niezależnie od pozostałych.
  • Zarządzanie cyklem życia aplikacji bez przestoju, włącznie z uaktualnieniami przerywającymi i nieprzerywającymi działania aplikacji.
  • Skalowanie liczby węzłów w klastrze w górę i w dół. Aplikacje będą skalowane automatycznie wraz ze skalowaniem węzłów.
  • Monitorowanie i diagnozowanie kondycji aplikacji oraz określanie zasad wykonywania automatycznej naprawy.

W ramach ciekawostki dodam, że spora część usług Azure jest właśnie zbudowana na Service Fabric.

Tę usługę na pewno powinieneś poznać, aby zostać topowym specjalistą.

Podsumowanie – 12 kroków do kariery Cloud Developera

Platforma MS Azure dostarcza nam wiele naprawdę pomocnych narzędzi, które są w stanie skrócić czas developmentu, podnieść wydajność aplikacji, czy zapewnić ich nieprzerwane działanie. Dzisiaj przedstawiłem tylko kilka z nich. Potraktuj je jako niezbędnik, z którym koniecznie należy się zaznajomić.

Jeśli chcesz poznać więcej podobnych narzędzi, odkryć, na czym polega siła chmury i dowiedzieć się, dlaczego to technologia, którą każdy powinien znać, zapraszam Cię na wyjątkowy, w 100% praktyczny kurs online o usługach Microsoft Azure!

Kurs będzie realizowany w ramach Szkoły Chmury, która tylko w tym roku przeszkoliła już ponad 1100 osób z podstaw Microsoft Azure. Teraz nadszedł czas na nowy poziom i… nowe rozdanie.

Najbardziej praktyczny trening Azure na świecie.

Mamy też mega bonus dla czytelników devstyle.pl – Wejdź na stronę devstyle.pl/chmurowisko i użyj kodu devstyle, aby otrzymać 20% zniżki na kurs!!! Zapraszam!

Uwaga, na kurs można się zapisać tylko do piątku, 29 czerwca!

 

Comments are closed.

Kurs Gita

Zaawansowany frontend

Szkolenie z Testów

Szkolenie z baz danych

Książka

Zobacz również