Udostępnij przez


Wprowadzenie do aplikacji natywnych dla chmury

Wskazówka

Ta zawartość jest fragmentem e-książki, Architektura Cloud Native .NET Applications for Azure, dostępnej w .NET Docs lub jako bezpłatny plik PDF do pobrania, który można czytać offline.

Natywne aplikacje .NET dla chmury Azure - okładka miniatury eBooka.

Kolejny dzień, w biurze, pracując nad "następną wielką rzeczą".

Twój telefon komórkowy dzwoni. To twój przyjazny rekruter - ten, który dzwoni codziennie z ekscytującymi nowymi możliwościami.

Ale tym razem jest inaczej: Start-up, kapitał i mnóstwo finansowania.

Wzmianka o chmurze, mikrousługach i najnowocześniejszej technologii wprawia Cię w podziw.

Przewijając do przodu kilka tygodni, jesteś teraz nowym członkiem zespołu w sesji projektowej, gdzie tworzysz architekturę głównej aplikacji e-commerce. Będziesz konkurować z wiodącymi witrynami handlu elektronicznego.

Jak go zbudujesz?

Jeśli zastosujesz się do wskazówek z ostatnich 15 lat, najprawdopodobniej skompilujesz system przedstawiony na rysunku 1.1.

Tradycyjny monolityczny projekt

Rysunek 1–1. Tradycyjny monolityczny projekt

Tworzysz dużą podstawową aplikację zawierającą całą logikę domeny. Obejmuje moduły, takie jak Identity, Catalog, Ordering i inne. Bezpośrednio komunikują się ze sobą w ramach jednego procesu serwera. Moduły współdzielą dużą relacyjną bazę danych. Podstawowe funkcje uwidacznia za pośrednictwem interfejsu HTML i aplikacji mobilnej.

Gratulacje! Właśnie stworzyłeś aplikację monolityczną.

Nie wszystko jest złe. Monolity oferują pewne różne zalety. Na przykład, łatwo się je rozumie...

  • budować
  • próba
  • wdrożyć
  • rozwiązywanie problemów
  • pionowe skalowanie

Wiele udanych aplikacji, które istnieją dzisiaj, zostało utworzonych jako monolityczne struktury. Aplikacja jest hitem i nadal ewoluuje, po każdej iteracji dodając coraz więcej funkcji.

W pewnym momencie jednak zaczynasz czuć się nieswojo. Uważasz, że tracisz kontrolę nad aplikacją. W miarę upływu czasu uczucie staje się bardziej intensywne, a w końcu wchodzisz w stan znany jako Fear Cycle:

  • Aplikacja stała się tak przytłaczająco skomplikowana, że żadna osoba jej nie rozumie.
  • Obawiasz się wprowadzania zmian - każda zmiana ma niezamierzone i kosztowne skutki uboczne.
  • Nowe funkcje/poprawki stają się trudne, czasochłonne i kosztowne do zaimplementowania.
  • Każda wersja staje się jak najmniejsza i wymaga pełnego wdrożenia całej aplikacji.
  • Jeden niestabilny składnik może ulec awarii całego systemu.
  • Nowe technologie i struktury nie są opcją.
  • Wdrożenie metodologii dostarczania elastycznego jest trudne.
  • Erozja architektury zaczyna się w miarę pogarszania się stanu bazy kodu z niekończącymi się "doraźnymi poprawkami".
  • W końcu konsultanci przychodzą i mówią, żeby to przepisać.

Brzmi znajomo?

Wiele organizacji rozwiązało ten monolityczny cykl strachu, stosując podejście natywne dla chmury do tworzenia systemów. Rysunek 1–2 przedstawia ten sam system, który stosuje natywne dla chmury techniki i praktyki.

 projektCloud-Native

Rysunek 1–2. Projekt natywny dla chmury

Zwróć uwagę, jak aplikacja jest rozłożona na zestaw małych izolowanych mikrousług. Każda usługa jest samodzielna i hermetyzuje własny kod, dane i zależności. Każda z nich jest wdrażana w kontenerze oprogramowania i zarządzana przez koordynatora kontenerów. Zamiast dużej relacyjnej bazy danych każda usługa jest właścicielem magazynu danych, którego typ różni się w zależności od potrzeb związanych z danymi. Zwróć uwagę, że niektóre usługi zależą od relacyjnych baz danych, a inne od baz danych NoSQL. Jedna usługa przechowuje swój stan w rozproszonej pamięci podręcznej. Zwróć uwagę, jak cały ruch jest kierowany przez usługę API Gateway, która odpowiada za przekierowywanie ruchu do kluczowych usług zaplecza i egzekwowanie wielu kwestii przekrojowych. Co najważniejsze, aplikacja w pełni korzysta z funkcji skalowalności, dostępności i odporności dostępnych na nowoczesnych platformach w chmurze.

Przetwarzanie natywne dla chmury

Hmm... Właśnie użyliśmy terminu Cloud Native. Twoja pierwsza myśl może brzmieć: "Co to dokładnie oznacza? Kolejne branżowe hasło wymyślone przez dostawców oprogramowania, aby sprzedawać więcej rzeczy?"

Na szczęście jest to znacznie inne i miejmy nadzieję, że ta książka pomoże Ci przekonać.

W krótkim czasie technologia natywna dla chmury stała się napędzającym trendem w branży oprogramowania. Jest to nowy sposób tworzenia dużych, złożonych systemów. Takie podejście w pełni wykorzystuje nowoczesne rozwiązania programistyczne, technologie i infrastrukturę chmury. Natywna chmura zmienia sposób projektowania, implementowania, wdrażania i operacjonalizacji systemów.

W przeciwieństwie do ciągłego szumu, który napędza naszą branżę, technologie cloud-native naprawdę istnieją. Weźmy pod uwagę Cloud Native Computing Foundation (CNCF), konsorcjum ponad 400 dużych korporacji. Jej misją jest uczynienie obliczeń natywnych dla chmury wszechobecnymi we wszystkich technologiach i platformach chmurowych. Jako jedna z najbardziej wpływowych grup open source hostuje wiele najszybciej rozwijających się projektów open source w usłudze GitHub. Te projekty obejmują Kubernetes, Prometheus, Helm, Envoy i gRPC.

CNCF wspiera ekosystem oprogramowania open-source i neutralność wobec dostawców. Po tym przewodniku w tej książce przedstawiono natywne dla chmury zasady, wzorce i najlepsze rozwiązania, które są niezależne od technologii. Jednocześnie omawiamy usługi i infrastrukturę dostępną w chmurze platformy Microsoft Azure do tworzenia systemów natywnych dla chmury w chmurze.

Co dokładnie to jest chmura natywna? Usiądź, zrelaksowaj się i pozwól nam poznać ten nowy świat.