6

Chcę zbudować aplikację mikroserwisu opartą na usłudze Azure Service Fabric. W przypadku niektórych usług lub aktorów stanowych chcę uzyskać dostęp do państwa z zewnątrz za pośrednictwem interfejsu internetowego.Kompromisy i najlepsze praktyki budowania mikroserwisów z usługą Azure Service Fabric

Jakie są ogólne kompromisy i najlepsze praktyki dla takiego projektu usługi Fabric odnośnie do:

  1. wykorzystujące jeden vs wielu usług w jednej aplikacji? Dlatego jeśli używam jednej usługi na aplikację, będę mieć wiele aplikacji do mojego projektu. Kiedy przydatne jest korzystanie z jednej usługi na aplikację?

  2. używanie jednego kontra wielu podmiotów w jednej usłudze? Kiedy przydatne jest posiadanie więcej niż jednego aktora na usługę?

  3. przy użyciu jednej usługi bezstanowego web api dla całego projektu w porównaniu z wieloma bezpaństwowymi usługami sieciowymi dla każdej usługi stanowej lub dla każdej aplikacji?

Wiem, że decyzje te są oparte na konkretnym projekcie. Ale może są ogólne zalety i wady dla trzech punktów powyżej.

+0

Zobacz ["Czy pytania powinny zawierać" znaczniki "w tytułach?] (Http://meta.stackexchange.com/questions/19190/should-questions-include-tags-in-their-titles) , gdzie konsensus jest "nie, nie powinien"! –

+0

@AndreasNiedermair Zmieniłem tytuł. – CPA

Odpowiedz

4

Simon Houlton pokryte kompromisów całym microservices całkiem dobrze w swojej odpowiedzi, więc oto kilka odpowiedzi specjalnie do usługi pytań tkanina:

  1. Aplikacje są ugrupowania skonstruować usług. Teoretycznie usługi, które współpracują ze sobą w celu stworzenia spójnego zestawu funkcji lub osiągnięcia pojedynczego celu biznesowego, są zwykle zgrupowane w aplikację. W praktyce:

    • Aktualizacje są stosowane na poziomie aplikacji. Usługi, które na ogół wymagają aktualizacji, powinny znajdować się w tej samej aplikacji. Ale nadal możesz uaktualnić usługę w ramach aplikacji indywidualnie.
    • Stan zdrowia jest zwinięty na poziomie aplikacji, dzięki czemu uzyskujesz kompleksowy przegląd usług w ramach aplikacji.
    • Oprzyrządowanie Visual Studio ułatwia pracę z aplikacją, która ma wiele usług.
  2. Zazwyczaj usługa jest gospodarzem wielu przypadki jednego aktora typu. Innymi słowy, zazwyczaj mapujesz jednego aktora typu na jeden typ usługi. Następnie możesz utworzyć instancję wielu instancji tego typu aktora w usłudze.

  3. Zależy od tego, czego naprawdę chcesz. Co robi bezpaństwowa służba? Jeśli potrzebujesz jednego punktu dostępu dla swoich użytkowników, powinieneś mieć jedno bezpaństwowe API dla całego projektu. To dość standardowe. Może masz drugą usługę bezpaństwową nasłuchującą na innym porcie tylko dla administratorów lub coś takiego. Jeśli masz usługę bezstanowego dostępu do Internetu dla każdej usługi stanowej, musisz się martwić o kierowanie użytkowników do właściwej usługi bezpaństwowej.
4

Trudno wyliczyć sobie różne opcje, ponieważ niekoniecznie muszą się one wzajemnie wykluczać, ale w niektórych punktach, o których wspomniałeś, jest trochę początku, wiem też, że niekoniecznie musi to dotyczyć Twojej Usługi Pytanie o materiał, ale mam nadzieję, że nadal będzie użyteczne.

Środowisko mikro usług jest świetne z punktu widzenia kodu, dzięki czemu programiści mogą z łatwością pracować. Dzięki scentralizowaniu funkcjonalności do jednej usługi oznacza to, że mogą skupić się na problemie bez myślenia o niepotrzebnych zależnościach. Na przykład, gdybyś zgrupował wszystkie swoje metody w jednym projekcie i musiałeś zmienić interfejs, możesz zdecydować o utworzeniu nowego punktu końcowego. W tym przykładzie może trzeba wziąć pod uwagę konsumentów metod, które się nie zmieniają, czy chcemy zmusić ich do podniesienia lub jesteśmy szczęśliwi, że wskazują na poprzednią wersję, ale oczywiście obsługujemy wiele wersji.

Duży problem polega na tym, że mikroserwisy hodują wyizolowaną wiedzę i przyjmując podejście, że twórca jednej usługi nie musi wiedzieć, kto lub co ją zużywa, oznacza, że ​​nie jesteś w stanie odpowiedzieć na to, co często jest bardzo ważnym pytaniem tego, kto lub co zajmuje się tą usługą i czy musimy ją zmusić do wzniesienia się do nowego punktu końcowego. W praktyce może to sprawić, że twoje serwery sieciowe będą trochę zawiedzione, a stare usługi nie będą musiały tego robić.

Niezależnie od tego, jakie jest Twoje rozwiązanie, zawsze staram się pogrupować Twoją logikę i umieścić podobne metody w tym samym projekcie. Myślę, że musisz zaakceptować, że podejmujesz decyzje, nie mając pełnej wiedzy o tym, jak rozwinie się to rozwiązanie w przyszłości i dlatego będziesz musiał potasować rzeczy.

Kolejnym zagadnieniem będzie zarządzanie wymaganiami i równoległy rozwój. Dzięki usługom mikro prawdopodobnie łatwiej będzie zarządzać wymaganiami biznesowymi niż pojedynczą usługą. Załóżmy, że dostajesz 10 wymagań i żądasz dostarczenia 5 w następnym miesiącu, a pozostałych 5 w następnym miesiącu. Załóżmy na przykład, że pierwsze 5 wymagań skupia się na logice biznesowej a na następnej partii w logice biznesowej b, jeśli masz dwóch programistów, możesz sprawić, by pracowali nad tym równolegle bez konieczności rozgałęziania i scalania. Jest to oczywiście dobry przykład do zilustrowania tego punktu, ale jest to relacja relatywnie łatwa, jeśli są podzielone na różne usługi, ponieważ łatwo jest powiedzieć przedstawicielom firmy, że logika biznesowa A musi iść w parze.

Internetowe usługi stanowe mogą być trudne do szybkiego przetestowania, co prawda można je obejść, ale zawsze lubię być w stanie wysłać zgłoszenie do usługi i uzyskać odpowiedź, jeśli muszę przygotowywać rzeczy, to spowalnia mnie to i może to być frustrujące podczas diagnozowania problemów na żywo.

Powiązane problemy