Читать книгу Wzorce Cloud Native - Cornelia Davies - Страница 21

1.2.1. Definiując cloud-native

Оглавление

Co charakteryzuje oprogramowanie cloud-native? Przeanalizujmy wcześniejsze wymagania nieco głębiej i zobaczmy, dokąd prowadzą. Rysunek 1.4 podejmuje kilka pierwszych kroków, wymieniając wymagania u góry i pokazując związki przyczynowe, kierując się w dół. Prezentowana lista wyjaśnia szczegóły:


Rysunek 1.4. Wymagania użytkownika dotyczące oprogramowania kierują jego rozwój w kierunku dogmatów cloud-native odnośnie do architektury i zarządzania

 Oprogramowanie, które jest zawsze dostępne, musi być odporne na awarie infrastruktury i zmiany, tak planowane, jak i nieplanowane. Jako że kontekst, w którym działa, doświadcza nieuniknionych zmian, oprogramowanie musi być zdolne do adaptacji. Kiedy jest prawidłowo skonstruowane, wdrożone i zarządzane, kompozycja niezależnych części może ograniczyć zasięg rażenia dowolnej awarii, która wystąpi; to kieruje cię do modułowego projektowania aplikacji. A ponieważ wiesz, że żadna pojedyncza jednostka nie może zagwarantować, że nigdy nie zawiedzie, w designie aplikacji uwzględniasz redundancję.

 Twoim celem jest częste wydawanie aplikacji, a monolityczne oprogramowanie na to nie pozwala; zbyt wiele współzależnych części wymaga czasochłonnej i skomplikowanej koordynacji. W ostatnich latach zostało solidnie udowodnione, że oprogramowanie złożone z mniejszych, często luźniej powiązanych i niezależnie wydawanych komponentów (niekiedy zwanych mikroserwisami) pozwala na zwinniejszy model wydawania oprogramowania.

 Użytkownicy nie są już ograniczeni w korzystaniu z cyfrowych rozwiązań do czasu, który spędzają przed swoimi komputerami. Wymagają dostępu za pomocą urządzeń mobilnych, których używają 24/7. Także obiekty niebędące ludźmi, jak sensory czy kontrolery urządzeń, są podobnie zawsze podłączone do sieci. Oba z tych scenariuszy powodują ogromną falę zapytań i ilość danych, która może bardzo dynamicznie się zmieniać, a co za tym idzie – wymaga oprogramowania, które skaluje się dynamicznie i nadal działa prawidłowo.

Niektóre z tych cech mają architektoniczne implikacje: wynikowe oprogramowanie jest złożone z uruchomionych redundantnych, niezależnych komponentów. Inne cechy adresują praktyki zarządzania wykorzystywane do dostarczania cyfrowych produktów: wdrożenie musi się dostosować do zmieniającej się infrastruktury i fluktuacji ilości przetwarzanych danych. Biorąc ten zestaw cech jako całość, sprowadźmy tę analizę do konkluzji, zaprezentowanej na rysunku 1.5:


Rysunek 1.5. Zasady architektury i zarządzania prowadzą do rdzennych cech oprogramowania cloud-native: jest wysoko rozproszone i musi działać w nieustannie zmieniającym się środowisku, nawet gdy oprogramowanie wciąż ewoluuje

 Oprogramowanie, które jest stworzone jako zestaw niezależnych komponentów, niezależnie wdrażanych, implikuje rozproszenie elementów systemu. Gdyby twoje nadmiarowe kopie były uruchomione blisko siebie, byłoby większe ryzyko, że lokalne awarie miałyby daleko idące konsekwencje. Aby efektywnie wykorzystać zasoby infrastruktury, które posiadasz, uruchamiając dodatkowe instancje swojej aplikacji, żeby obsłużyć rosnącą ilość żądań, musisz mieć możliwość umieszczania ich na szerokiej powierzchni dostępnej sobie infrastruktury – nawet, być może, takiej od dostawców usług chmurowych, jak AWS, Google Cloud Platform (GCP) czy Microsoft Azure. Wskutek czego wdrażasz moduły swojego oprogramowania w wysoce rozproszony sposób.

 Oprogramowanie zdolne do adaptacji jest z definicji „zdolne do dostosowania się do nowych warunków” i warunki, do których się tu odnoszę, są związane z infrastrukturą i zestawem powiązanych ze sobą modułów oprogramowania. Są one wewnętrznie powiązane: wraz ze zmianą infrastruktury zmienia się oprogramowanie i vice versa. Częste wydania nowych wersji aplikacji oznaczają częste zmiany, a dostosowywanie się do fluktuacji ilości obsługiwanych żądań przez operacje skalowania reprezentują ciągłe dostosowywanie się. To jasne, że twoje oprogramowanie i środowisko, w którym ono działa, ciągle się zmieniają.

DEFINICJA Oprogramowanie cloud-native jest wysoko rozproszone, musi działać w nieustannie zmieniającym się środowisku i samo również wciąż się zmienia.

Wiele drobniejszych szczegółów wchodzi w skład procesu wytwarzania oprogramowania cloud-native (dokładne informacje wypełniają strony tej książki). Ale w ostatecznym rozrachunku wszystkie sprowadzają się do tych rdzennych cech: wysoko rozproszone i ciągle zmienne. To będzie twoją mantrą podczas zapoznawania się z materiałem, a ja wielokrotnie będę cię sprowadzać z powrotem do systemów ekstremalnie rozproszonych i ciągłych zmian.

Wzorce Cloud Native

Подняться наверх