• Przejdź do treści
  • Przejdź to drugiego menu
  • Przejdź do głównego paska bocznego
  • Przejdź do stopki
  • START
  • BLOG
  • NEWSLETTER
  • KIM JESTEM
  • KONTAKT
Cegładanych

Cegładanych

Dane - Databricks i Chmura Azura

  • Azure
  • Databricks
  • Spark
  • Etl
  • Engineering
  • AI

Podstawy architektury Azure

16.03.2021 Krzysztof Nojman

Podczas projektowania rozwiązań należy wziąć pod uwagę kilka ważnych kwestii. Istnieją podstawowe zasady, które powinny kierować każdym projektem w chmurze. Jako architekt na etapie projektowania musisz wziąć pod uwagę kilka katastrof. Potrzebujesz planu w każdym scenariuszu. Posiadanie planu pomoże ci stworzyć systemy, które będą odporne i przygotowane na każdą katastrofę.

Istnieją cztery główne tematy, które musisz omówić podczas projektowania rozwiązania. Jeśli wcześniej się przygotujesz, pisząc wiele pytań. Pomoże ci i będzie działać jako punkt kontrolny. Podczas projektowania wystarczy przejrzeć listę i zaznaczyć wszystkie pola. Pomoże to w zaprojektowaniu dobrego rozwiązania.

Architektura polega na planowaniu i przygotowaniu na każdą sytuację. Spodziewaj się niespodziewanego. Musimy zaplanować i zaprojektować rozwiązanie, które poradzi sobie z krytycznymi katastrofami. Kluczem jest wdrożenie naszego projektu, tak aby był on odporny na awarie i umożliwiał łatwe ulepszanie. Systemy muszą być elastyczne i skalowalne, aby sprostać stale zmieniającym się wymaganiom biznesowym.

Budowanie świetnego systemu to praca wieloetapowa. Przy każdej iteracji musimy skoncentrować się na konkretnym problemie. Musisz ocenić różne zagrożenia i być przygotowanym na ich ograniczenie.

Zaprojektuj dla bezpieczeństwa

Obecnie dane są zasobem biznesowym i powinny być traktowane z powagą. Najwyższym priorytetem musi być ich ochrona. Zasoby systemowe muszą być odporne na luki w sieci. Powinien być chroniony szyfrowaniem zarówno podczas transportu, jak i przechowywania. Bezpieczeństwo to koncepcja, która ma zastosowanie do całego cyklu życia aplikacji. Chmura zapewnia dodatkowe korzyści bezpieczeństwa, takie jak dołączone DDoS lub wykrywanie włamań do sieci. Ale to architekt odpowiada za należyte zapewnienie bezpieczeństwa aplikacji.

Musisz zadać sobie kilka pytań, aby rzucić wyzwanie i znaleźć dobre rozwiązanie.

Jak zabezpieczyć system przed włamaniem?

Co zrobić, jeśli zostaniemy zaatakowani?

Skąd mam wiedzieć, czy zostałem ofiarą hakera?

Jak zachować dostęp do danych, aby zapobiec nieautoryzowanemu użyciu?

W każdej firmie są poufne dane, które muszą być chronione przed złośliwymi ludźmi. Jak powiedziałem wcześniej, dane są zasobem i muszą być traktowane jako zasób firmy. Ponieważ mamy surowe zasady ochrony danych osobowych RODO, istnieje dodatkowy aspekt, o którym musimy pomyśleć. Zgodność z przepisami i cała administracja to coś, czego nie lubisz, ale musisz temu stawić czoła. Będzie to dotyczyło danych osobowych twojego personelu lub klientów. Co z ich płatnościami, w tym celu mamy kolejny standard regulacyjny, którego musimy przestrzegać. Musimy pamiętać, że chmura może mieć luki w zabezpieczeniach, więc nie bierz rzeczy za pewnik.

Zamki bezpieczeństwa

Aby mechanizm bezpieczeństwa był skuteczny, musimy rozważyć kilka warstw. Każda warstwa działa jak ogrodzenie. W prawdziwym świecie, jeśli postawisz 10 ogrodzeń wokół domu, intruzowi będzie bardzo trudno przejść. Ta sama zasada dotyczy chmury. Nazywa się to „głęboką obroną” i obejmuje następujące elementy

  • Dane
  • Aplikacje
  • VM / Komputacje
  • Sieć
  • Obwód
  • Zasady i dostęp
  • Bezpieczeństwo fizyczne

Jeśli wprowadzimy te wszystkie elementy to zapewnimy dogłębną ochronę. Każda warstwa ma na celu ochronę innego obszaru. Jeśli jedna zawiedzie, są jeszcze inne bramy, które nas chronią. Tworząc więcej warstw, zwiększamy odpornośc systemu. Bezpieczeństwo powinno obejmować ludzi i procesy.

Każda warstwa ma pewne szczególne słabości, z którymi musisz się zmierzyć i być przygotowanym, przeważnie na najgorsze.

  • Dane: Konieczne jest silne szyfrowanie. Zarówno podczas przechowywania, jak i transportu.
  • Aplikacje: Musimy chronić przed wstrzykiwaniem kodu, SQL injection i skrypty cross-site scripting (XSS).
  • VM / Komputacje: ochrona przed uruchomieniem kodu w zainfekowanym systemie.
  • Sieć: głównym problemem to otwarte porty, a pozostawienie SSH lub RDP otwartego dla VM może być dużym problemem.
  • Obszar: Ataki typu „odmowa usługi” znajdują się w tej warstwie, co spowoduje wyłączenie serwerów i innych zasobów.
  • Zasady i dostęp: Chodzi o uwierzytelnianie, Active Directory, Kerberos, OAuth. Chroń swoje dane uwierzytelniające i uruchom monitorowanie, aby wiedzieć, co się dzieje i kiedy.
  • Bezpieczeństwo fizyczne: chroń swoje obiekty, wszędzie zamykaj zamki i sprawdzaj, kto ma do nich dostęp.

Musisz pamiętać, że będąc w chmurze, udostępniasz zabezpieczenia platformie Azure. W zależności od tego, jakie jest twoje rozwiązanie modelowe, takie jak IAAS, PAAS lub SAAS. Na tej podstawie możesz wywnioskować, co chronić. Im bliżej SAAS, tym mniej masz obaw. Zarządzanie IAAS jest najbardziej złożone, ponieważ jesteś odpowiedzialny za system operacyjny i aplikacje.

Architektura zapewniająca wydajność i skalowalność

Nasze systemy muszą być zdolne do skalowania przy zwiększonym zapotrzebowaniu na zasoby. System powinien być w stanie zrobić to automatycznie bez interwencji człowieka. Niektóre usługi platformy Azure ma wbudowany mechanizm, który umożliwia skalowanie aplikacji w górę lub w dół w zależności od potrzeb. Tego rodzaju architektura musi być wykonana na poziomie aplikacji i na poziomie zasobów chmurowych. Powinieneś być w stanie odpowiedzieć na pytanie, czy możemy poradzić sobie z gwałtownym wzrostem zapotrzebowania na zasoby?

Pomimo całej tej automatyzacji platformy Azure możesz przeanalizować systemy, zidentyfikować wąskie gardła i zastosować optymalizację. Optymalizacja może obejmować testowanie prędkości sieci lub operacji wejścia / wyjścia w rozwiązaniu pamięci masowej. Należy pomyśleć o każdym systemie niezależnie. Patrząc na kod lub logi. Analiza wydajności to cykliczny proces, który ma zastosowanie do każdego komponentu systemu. Po zidentyfikowaniu potencjalnych problemów z architektonicznego punktu widzenia łatwiej będzie zaplanować rozwiązanie.

Skalowalność

Podobnie jak w życiu nasze wyniki zależą od tego, co chcemy osiągnąć. Musisz podjąć decyzję, czy skalowanie w górę jest lepsze niż skalowanie horyzontalne. Zwiększenie skali powoduje, że zasoby stają się większe i silniejsze. Na przykład możesz dodać więcej pamięci RAM lub procesora.

Kiedy zastosujesz skalowanie horyzontalne dodajesz kolejne zasoby.

Oba sposoby poprawią wydajność twoich systemów. Musisz wybrać, który z nich jest bardziej wydajny w twoim rozwiązaniu. Każde z rozwiązań będzie łączyło się  z pewnymi konsekwencjami np. kosztów, o których musisz wiedzieć.

Wzorce wydajnościowe

Możesz zmierzyć się ze skalowalnością i wydajnością, postępując zgodnie z pewnymi zasadami.

Partycjonowanie danych

Aby poprawić wydajność dostępu do danych, możemy je podzielić na partycje. Co oznacza umieszczanie danych w osobnych grupach. Ten rodzaj separacji pomaga, ponieważ kiedy potrzebuję konkretnego elementu, wiem dokładnie, w jakim jest schowku. Upraszcza to proces ekstrakcji.

Buforowanie

Buforowanie oznacza posiadanie pod ręką najnowszych danych. Na poziomie aplikacji możesz umieścić najczęściej używane dane w pamięci, aby czas pobierania był minimalny. Jest często używany w aplikacji internetowej, aby zaoszczędzić czas podczas udostępniania danych klientowi. Aplikacja nie musi za każdym razem łączyć się z bazą danych.

Automatyczne skalowanie

Jest to świetna funkcja wielu usług platformy Azure. Możesz zautomatyzować proces skalowania i uruchomić go dynamicznie w określonych warunkach. Na przykład możesz ustawić limit wydajności procesora. Gdy aplikacja przekroczy wykorzystanie procesora na w 75%, usługa automatycznie zwiększy jego wydajność, aby zaspokoić zapotrzebowanie aplikacji.

Oddzielenie intensywnych zadań

W tle można uruchamiać bardzo ciężkie zadania wymagające intensywnych obliczeń lub długotrwałych przepływów danych. Powoduje to oddzielenie od interfejsu użytkownika i ostatecznie przyspiesza aplikację. Aplikacja ładuje się szybciej, co znacznie oszczędza czas.

Wiadomości

Jeśli dwie usługi muszą się ze sobą komunikować. Skuteczne będzie umieszczenie między nimi mechanizmu przesyłania wiadomości. W tym scenariuszu komunikaty są przekazywane asynchronicznie. Ma to mniejszy wpływ na wydajność, ponieważ aplikacja może przetwarzać zadania jeden po drugim. W ten sposób jest bardziej odporny na bardziej czasochłonne wiadomości.

Monitoruj wydajność

Aplikacje w chmurze korzystają z kilku usług. To sprawia, że ​​rozwiązanie jest bardzo złożone. Bardzo trudno jest określić, w jaki sposób każdy element wykorzystuje system. Musisz wprowadzić dobry mechanizm diagnostyczny. Stałe monitorowanie systemów zapewni cenny wgląd w operacje. Jak mówią, tym, co jest mierzone, można zarządzać.

Architektura pod kątem dostępności i możliwości odzyskania

W dzisiejszych czasach firma wymaga, aby systemy działały 24 godziny na dobę, 7 dni w tygodniu. Nie ma uzasadnienia dla przestojów. Każdy element rozwiązania powinien być przygotowany na awarię. Musi być plan awaryjny? Użytkownicy nie powinni nawet zauważać awarii systemu. Powinno to dotyczyć aplikacji i jej danych. Najważniejsze pytanie, jakie przychodzi mi na myśl, czy architektura może poradzić sobie z awarią jednego lub więcej komponentów?

Żadna firma nie lubi jak system przestaje działać, więc naszym zadaniem jest to, aby rozwiązanie było nie do złamania. Jest to część projektu architektonicznego, który należy przygotować na awarie różnych usług i komponentów aplikacji. Wysoka dostępność musi ograniczać wpływ awarii. Jeśli tak się stanie, aplikacja musi sobie z tym poradzić, aby nie miało to wpływu na użytkowników.

Możliwość odzyskania danych oznacza, że ​​w przypadku katastrofy nadal mogę mieć dostęp do moich danych? Nie powinno dojść do utraty danych. proces odzyskiwania danych po awarii powinien przebiegać automatycznie. Automatyzacja poprawi czas pełnego uruchomienia systemu. Musisz przeanalizować każdy składnik i dodać redundancję, aby ograniczyć możliwość awarii. W rzeczywistości powinniśmy pozwolić na utratę danych. Pozwoli to zaoszczędzić mnóstwo pieniędzy. Zawsze występuje kompromis między kosztami a złożonością rozwiązania.

Projektowanie pod kątem wydajności i działania

Wydajny pod względem biznesowym oznacza opłacalny. System musi wykorzystywać wszystkie dostępne zasoby. Nie możesz pozwolić na jakiekolwiek marnotrawstwo. Podobnie jak w japońskim Kaizen, musisz zajrzeć do każdej części systemu i poszukać ulepszeń. Na platformie Azure płacisz za sekundę, za minutę lub za godzinę. Kiedy przychodzi na platformę Azure, „czas to pieniądz”, jeśli niepotrzebny proces pochłania zasoby, powinieneś go kontrolować. Na szczęście platforma Azure udostępnia narzędzia do mierzenia i monitorowania całego użycia. Monitorowanie kosztów jest działaniem ciągłym, na ogół każda aplikacja będzie miała własny mechanizm monitorujący, który wykona takie zadanie.

Najczęściej przyczyną wyższych kosztów jest zużywanie większej ilości zasobów niż jest to wymagane. Lub płacenie za zasoby, które są bezczynne przez większość czasu. W jednym z projektów maszyny wirtualne działały tylko od 9:00 do 5:00. Zamykają się automatycznie, aby zaoszczędzić pieniądze. Musi istnieć proces ciągłego monitorowania zasobów. Wszelkie anomalie należy natychmiast poprawić. Może to obejmować zmianę rozmiaru maszyn wirtualnych. Gdzie możesz spróbować przenieść się do PAAS, który jest tańszy niż IAAS.

Należy położyć duży nacisk na automatyzację zarządzania zasobami. My, ludzie, wciąż jesteśmy trochę powolni i wadliwi. Popełniamy zbyt wiele błędów. Automatyzując typowe zadania poprawiamy wydajność i redukujemy ewentualne błędy.

Wspólna odpowiedzialność

Wspólna odpowiedzialność to koncepcja, która dotyczy środowiska chmury. W zależności od wybranego modelu usługi będziesz odpowiedzialny za zarządzanie niektórymi częściami systemu. To zależy, czy korzystasz z IAAS, PAAS, czy SAAS. Im bardziej jesteś od zera, tak jak w IAAS, musisz zarządzać danymi, aplikacjami i systemem operacyjnym. W modelu SAAS nie bierzesz żadnej odpowiedzialności za usługę lub podkreślanie oprogramowania lub sprzętu.

Idealne rozwiązanie

Jeśli szukasz idealnego rozwiązania, musisz być przygotowany na pewne kompromisy. W rzeczywistości, jeśli planujemy stworzyć systemy, które są zawsze dostępne, wydajne, bezpieczne i szybkie, to patrzymy na ogromne koszty lub długi czas dostawy. Istnieją pewne kompromisy w celu zrównoważenia kosztów z rzeczywistością. Decyzja biznesowa, aby wybrać najwyższy priorytet. Na szczęście dla nas dobrzy ludzie stworzyli użyteczne wzory, których możemy użyć. Oszczędzą czas i zapewnią cenną pomoc.

W kategorii:Azure Tagi:Architektura, Azure

Big Data ebook
Subskrybuj
Powiadom o
guest

guest

0 Komentarze
Najstarsze
Najnowsze Najwięcej głosów
Opinie w linii
Zobacz wszystkie komentarze

Pierwszy panel boczny

O MNIE

Narzędzia i dobre procesy do przetwarzania danych to podstawa sukcesu i wartości dla firmy. Czytaj więcej…

big data ebook

Ostatnie wpisy

spark joins

Jak Spark robi join?

13.01.2025 By Krzysztof Nojman

Czy JSON to samo zło

04.01.2025 By Krzysztof Nojman

VS Code nowości AI 

09.12.2024 By Krzysztof Nojman

Linki społecznościowe

  • Facebook
  • GitHub
  • LinkedIn
  • YouTube

Wyszukiwanie

Footer

Najnowsze wpisy

  • Jakość danych w Databricks DQX
  • Jak Spark robi join?
  • Czy JSON to samo zło
  • VS Code nowości AI 
  • Lista narzędzi AI dla każdego inżyniera, które warto znać
  • Kilka pomysłów na konfigurację Databricks
  • Co pamięta wykonawca (executor🧠)

Tagi

AI Apache Spark Architektura Azure BIg Data Certyfikat cloud Databricks Data Factory Dataframe DQX ETL Hurtownia Danych Intellij IoT Jaka technologia Join Kod Konfiguracja lakehouse Narzędzia Optymalizacja pyspark Spark Windows 10 zadania

Informacje Prawne

To jest nudna część lecz wymagana, wszystkie notki prawne o stronie znajdziecie tutaj.

Polityka Prywatności

Regulamin

Copyright © 2025 · Wszelkie prawa zastrzeżone. Krzysztof Nojman

wpDiscuz