Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Wskazówka
Ta treść jest fragmentem eBooka "Architektura mikrousług .NET dla konteneryzowanych aplikacji .NET", dostępnego na .NET Docs lub jako bezpłatny plik PDF do pobrania i czytania w trybie offline.
Podsumowanie oraz najważniejsze punkty, poniżej przedstawiono najważniejsze wnioski z tego przewodnika.
Zalety korzystania z kontenerów. Rozwiązania oparte na kontenerach zapewniają istotne oszczędności kosztów, ponieważ pomagają zmniejszyć problemy z wdrażaniem spowodowane niepowodzeniem zależności w środowiskach produkcyjnych. Kontenery znacznie usprawniają operacje devOps i produkcyjne.
Kontenery będą wszechobecne. Kontenery oparte na platformie Docker stają się de facto standardem w branży, obsługiwanym przez dostawców kluczy w ekosystemach systemu Windows i Linux, takich jak Microsoft, Amazon AWS, Google i IBM. Platforma Docker prawdopodobnie wkrótce będzie wszechobecna zarówno w chmurach, jak i w lokalnych centrach danych.
Kontenery jako jednostka wdrożenia. Kontener platformy Docker staje się standardową jednostką wdrożenia dla dowolnej aplikacji lub usługi opartej na serwerze.
Mikrousługi. Architektura mikrousług staje się preferowanym podejściem do rozproszonych i dużych lub złożonych aplikacji o znaczeniu krytycznym w oparciu o wiele niezależnych podsystemów w postaci usług autonomicznych. W architekturze opartej na mikrousłudze aplikacja jest tworzona jako kolekcja usług, które są opracowywane, testowane, wersjonowane, wdrażane i skalowane niezależnie. Każda usługa może zawierać dowolną powiązaną autonomiczną bazę danych.
Projektowanie oparte na domenie i SOA. Wzorce architektury mikrousług pochodzą z architektury zorientowanej na usługę (SOA) i projektowania opartego na domenie (DDD). Podczas projektowania i opracowywania mikrousług dla środowisk z zmieniającymi się potrzebami i regułami biznesowymi należy wziąć pod uwagę podejścia i wzorce DDD.
Wyzwania związane z mikrousługami. Mikrousługi oferują wiele zaawansowanych funkcji, takich jak niezależne wdrażanie, silne granice podsystemu i różnorodność technologii. Jednak stanowią one również wiele nowych wyzwań związanych z opracowywaniem aplikacji rozproszonych, takich jak pofragmentowane i niezależne modele danych, odporna komunikacja między mikrousługami, spójność ostateczna i złożoność operacyjna, która wynika z agregowania informacji rejestrowania i monitorowania z wielu mikrousług. Te aspekty wprowadzają znacznie wyższy poziom złożoności niż tradycyjna aplikacja monolityczna. W związku z tym tylko konkretne scenariusze są odpowiednie dla aplikacji opartych na mikrousługach. Obejmują one duże i złożone aplikacje z wieloma zmieniającymi się podsystemami. W takich przypadkach warto zainwestować w bardziej złożoną architekturę oprogramowania, ponieważ zapewni lepszą długoterminową elastyczność i konserwację aplikacji.
Kontenery dla dowolnej aplikacji. Kontenery są wygodne dla mikrousług, ale mogą być również przydatne w przypadku aplikacji monolitycznych opartych na tradycyjnym programie .NET Framework podczas korzystania z kontenerów systemu Windows. Korzyści wynikające z używania platformy Docker, takie jak rozwiązywanie wielu problemów z wdrażaniem do środowiska produkcyjnego i udostępnianie najnowocześniejsze środowiska deweloperskie i testowe, mają zastosowanie do wielu różnych typów aplikacji.
CLI kontra IDE Za pomocą narzędzi firmy Microsoft można opracowywać konteneryzowane aplikacje .NET przy użyciu preferowanego podejścia. Program można opracowywać za pomocą interfejsu wiersza polecenia i środowiska opartego na edytorze przy użyciu interfejsu wiersza polecenia platformy Docker i programu Visual Studio Code. Możesz też użyć podejścia skoncentrowanego na środowisku IDE w programie Visual Studio i jego unikatowych funkcjach dla platformy Docker, takich jak debugowanie wielu kontenerów.
Odporne aplikacje w chmurze. W systemach opartych na chmurze i systemach rozproszonych zawsze istnieje ryzyko częściowej awarii. Ponieważ klienci i usługi są oddzielnymi procesami (kontenerami), usługa może nie odpowiadać w odpowiednim czasie na żądanie klienta. Na przykład usługa może być wyłączona z powodu częściowej awarii lub konserwacji; usługa może być przeciążona i wolno odpowiadać na żądania; lub może nie być dostępny przez krótki czas z powodu problemów z siecią. W związku z tym aplikacja oparta na chmurze musi obejmować te błędy i mieć strategię reagowania na te błędy. Te strategie mogą obejmować zasady ponawiania prób (ponowne wysyłanie komunikatów lub ponawianie żądań) i implementowanie wzorców wyłącznika w celu uniknięcia wykładniczego obciążenia powtarzających się żądań. Zasadniczo, aplikacje oparte na chmurze muszą posiadać odporne mechanizmy—czy to oparte na infrastrukturze chmurowej czy niestandardowej, podobne do tych wysokiego poziomu, które są udostępniane przez orkiestratory lub magistrale usług.
Bezpieczeństwo. Nasz nowoczesny świat kontenerów i mikrousług może ujawnić nowe luki w zabezpieczeniach. Istnieje kilka sposobów implementowania podstawowych zabezpieczeń aplikacji na podstawie uwierzytelniania i autoryzacji. Jednak zabezpieczenia kontenerów muszą uwzględniać dodatkowe kluczowe składniki, które powodują z natury bezpieczniejsze aplikacje. Krytycznym elementem tworzenia bezpieczniejszych aplikacji jest bezpieczny sposób komunikowania się z innymi aplikacjami i systemami, co często wymaga poświadczeń, tokenów, haseł i podobnych, często nazywanych wpisami tajnymi aplikacji. Każde bezpieczne rozwiązanie musi przestrzegać najlepszych rozwiązań w zakresie zabezpieczeń, takich jak szyfrowanie wpisów tajnych podczas przesyłania i przechowywania oraz zapobieganie wyciekowi wpisów tajnych podczas korzystania z ostatecznej aplikacji. Te tajne informacje muszą być bezpiecznie przechowywane i chronione, tak jak w przypadku korzystania z usługi Azure Key Vault.
Orkiestratorzy. Orkiestratory oparte na kontenerach, takie jak Azure Kubernetes Service i Azure Service Fabric, są kluczowym elementem każdej znaczącej mikrousługi i aplikacji opartej na kontenerach. Te aplikacje niosą ze sobą dużą złożoność, potrzeby skalowalności i przechodzą przez stałą ewolucję. Ten przewodnik wprowadził orkiestratorów i ich rolę w rozwiązaniach opartych na mikrousługach i opartych na kontenerach. Jeśli twoje potrzeby aplikacji kierują cię ku złożonym aplikacjom konteneryzowanym, przydatne będzie znalezienie dodatkowych zasobów, aby dowiedzieć się więcej o orkiestratorach.