Skalowalne aplikacje internetowe wysokiej dostępności



Podobne dokumenty
Tworzenie aplikacji bazodanowych

Opis wdrożenia Platformy Technologicznej epodreczniki.pl na zasobach Poznańskiego Centrum Superkomputerowo-Sieciowego

Problemy niezawodnego przetwarzania w systemach zorientowanych na usługi

Przetwarzanie i zabezpieczenie danych w zewnętrznym DATA CENTER

Klastrowe architektury serwera aplikacji Oracle Application Server 10g

Wydajny Linux. Jakub Woźniak KN Sieci Komputerowych i Systemów Rozproszonych Tenesys

Service Level Agreement Pisemna gwarancja jakości

Typy przetwarzania. Przetwarzanie zcentralizowane. Przetwarzanie rozproszone

Autorytatywne serwery DNS w technologii Anycast + IPv6 DNS NOVA. Dlaczego DNS jest tak ważny?

Projektowanie i implementacja wysokowydajnych aplikacji w języku

Sieci komputerowe. Wykład 8: Warstwa zastosowań: FTP i HTTP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

Zarządzanie wieloserwerowym środowiskiem SAS z wykorzystaniem SAS Grid Managera. Katarzyna Wyszomierska

Parametry wydajnościowe systemów internetowych. Tomasz Rak, KIA

Sposoby klastrowania aplikacji webowych w oparciu o rozwiązania OpenSource. Piotr Klimek. piko@piko.homelinux.net

Wybrane działy Informatyki Stosowanej

Klient SmartMedia Sp. z o.o., Dziennikus Sp. z o.o. Branża. IT, software. Okres realizacji. Lipiec nadal. Rodzaj usługi:

OAS Web Cache: przegląd zastosowań

Koszty budowy infrastruktury wewnętrznej: hardware, administracja, zespół utrzymaniowy

Serwer aplikacji OracleAS 10g w architekturach o podwyższonej niezawodności

PureSystems zautomatyzowane środowisko aplikacyjne. Emilia Smółko Software IT Architect

I. Postanowienia ogólne. a. Definicje

Jarosław Kuchta. Administrowanie Systemami Komputerowymi. Klastry serwerów

Zaawansowane Techniki WWW (HTML, CSS i NODE.JS)

Popularne dostępne rozwiązania. Najpopularniejsze środowiska programistyczne:

Wprowadzenie. Co to jest klaster? Podział ze względu na przeznaczenie. Architektury klastrów. Cechy dobrego klastra.

Ponad 2 miliony zdjęć bonprix w chmurze e24cloud. bezpieczeństwo. wsparcie klienta

Systemy rozproszone System rozproszony

współbieżność - zdolność do przetwarzania wielu zadań jednocześnie

Prestige MJM Case Study

Zagadnienia egzaminacyjne INFORMATYKA. Stacjonarne. I-go stopnia. (INT) Inżynieria internetowa STOPIEŃ STUDIÓW TYP STUDIÓW SPECJALNOŚĆ

PRZETARG 01/EU/2016/SERVERS NA DOSTAWĘ, MONTAŻ I URUCHOMIENIE SERWERÓW, WIRTUALIZATORÓW, MACIERZY I OPROGRAMOWANIA ORAZ WYKUP STAREGO SPRZĘTU

Działanie komputera i sieci komputerowej.

Spis treści. Podziękowania 13 Wstęp 15 Informacje o autorach 19. Rozdział 1. Zarządzanie projektem i komunikacja 33

Projekt Fstorage. Łukasz Podkalicki Bartosz Kropiewnicki

Wybrane działy Informatyki Stosowanej

Wyciąg z ogólnej analizy ataków na witryny administracji państwowej RP w okresie stycznia 2012r.

Architektura systemów webowych wysokiej przepustowości. na przykładzie Wikia

Wybrane działy Informatyki Stosowanej

W3 Total Cache. Skuteczne przyśpieszanie WordPressa. Bartosz Romanowski

Autor: inż. Wojciech Zatorski Opiekun pracy: dr inż. Krzysztof Małecki

Spis treści. 1 Wprowadzenie. 1.1 Podstawowe pojęcia. 1 Wprowadzenie Podstawowe pojęcia Sieci komunikacyjne... 3

Zagadnienia na egzamin dyplomowy

Zasady licencjonowania produktów bazodanowych ORACLE

Wprowadzenie SYSTEMY SIECIOWE. Michał Simiński

ZAŁOŻENIA PROJEKTOWE I SPECYFIKACJA USŁUG

Wykorzystanie wirtualizacji w kluczowych scenariuszach data-center

Architektura i mechanizmy systemu

Co to jest chmura (Cloud Computing)?

Koncepcja wirtualnej pracowni GIS w oparciu o oprogramowanie open source

ZPKSoft WDoradca. 1. Wstęp 2. Architektura 3. Instalacja 4. Konfiguracja 5. Jak to działa 6. Licencja

Języki i narzędzia programowania III. Łukasz Kamiński Wykład I

Tworzenie aplikacji Web Alicja Zwiewka. Page 1

Referat pracy dyplomowej

Wstęp. Historia i przykłady przetwarzania współbieżnego, równoległego i rozproszonego. Przetwarzanie współbieżne, równoległe i rozproszone

Sprawozdanie nr 4. Ewa Wojtanowska

Portal Security - ModSec Enterprise

Projektowanie architektury systemu rozproszonego. Jarosław Kuchta Projektowanie Aplikacji Internetowych

Nowoczesny dział IT w chmurze

Szybki przewodnik po produkcie. EMC DataDomain

Rok szkolny 2015/16 Sylwester Gieszczyk. Wymagania edukacyjne w technikum

Keszowanie i systemy peer-to-peer. Paulina Kania i Łukasz Osipiuk

Nowe aplikacje i usługi w środowisku Grid

Instalacja SQL Server Express. Logowanie na stronie Microsoftu

Sieci komputerowe. Wykład 12: Sieci peer-to-peer. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

Oferta hostingu dla sklepów Magneto

- pierwszy w Polsce Hosting zorientowany na lokalizację Klienta

OGŁOSZENIE O ZAPROSZENIU DO SKŁADANIA OFERT NA PRZEDMIOT ZAMÓWIENIA NUMER OGŁOSZENIA 09/MKS/2013

Języki i narzędzia programowania III. Łukasz Kamiński Wykład II

Klastry wysokiej dostępności - idea, koncepcje,

Rozwiązania HPE Storage jak zapewnić pełne bezpieczeństwo Twoich danych?

Przedmowa...9. Wprowadzenie...11

Jarosław Kuchta Administrowanie Systemami Komputerowymi. Internetowe Usługi Informacyjne

Zapewnienie dostępu do Chmury

Dokumentacja techniczna SIS2-SAD

LANDINGI.COM. Case Study. Klient Landingi.com. Branża IT, marketing i PR. Okres realizacji od grudnia 2013 do chwili obecnej.

Systemy operacyjne. Systemy operacyjne. Systemy operacyjne. Zadania systemu operacyjnego. Abstrakcyjne składniki systemu. System komputerowy

Projektowanie zabezpieczeń Centrów Danych oraz innych systemów informatycznych o podwyższonych wymaganiach bezpieczeństwa

DZANIA I MARKETINGU BIAŁYSTOK,

IBM DCE/DFS. Mikołaj Gierulski. 17 stycznia 2003

Analiza technik buforowania w aplikacjach internetowych

SIECI KOMPUTEROWE. Podstawowe wiadomości

Fujitsu World Tour 2019

Bazy danych - ciągłość działania, spójność danych i disaster recovery. Daniel Polek-Pawlak Jarosław Zdebik

Systemy rozproszone. na użytkownikach systemu rozproszonego wrażenie pojedynczego i zintegrowanego systemu.

Wykład 2. Temat: (Nie)zawodność sprzętu komputerowego. Politechnika Gdańska, Inżynieria Biomedyczna. Przedmiot:

Rozwiązanie Compuware Data Center - Real User Monitoring

Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15 Artur.Kalinowski@fuw.edu.

Red Hat Network Satellite Server

Plan wykładu. Domain Name System. Hierarchiczna budowa nazw. Definicja DNS. Obszary i ich obsługa Zapytania Właściwości.

Wykład Nr Sieci bezprzewodowe 2. Monitorowanie sieci - polecenia

ARCHIWUM PAŃSTWOWE W ZIELONEJ GÓRZE. Parametry graniczne i wymagalne dla sprzętu dostarczonego przez oferenta.

Zastosowania PKI dla wirtualnych sieci prywatnych

Bezpieczne strony WWW dla edukacji, organizacji non-profit i uŝytkowników indywidualnych.

Podstawy Informatyki DMA - Układ bezpośredniego dostępu do pamięci

Zarządzanie farmami serwerów Linux

Sterowanie ruchem w sieciach szkieletowych

27/13 ZAŁĄCZNIK NR 4 DO SIWZ. 1 Serwery przetwarzania danych. 1.1 Serwery. dostawa, rozmieszczenie i zainstalowanie 2. serwerów przetwarzania danych.

Zenoss. Monitorowanie nowoczesnej serwerowni

USŁUGI TFTP. W dokumentacji RFC 1350 zamieszczony jest opis obowiązującej obecnie 2 wersji protokołu TFTP.

Szczegółowy opis przedmiotu zamówienia

Transkrypt:

Skalowalne aplikacje internetowe wysokiej dostępności Dariusz Dwornikowski 22.05.2010

Plan wykładu Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [1/37] Skalowalność, Niezawodność i dostępność, Studium przypadku

Definicja skalowalności Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [2/37] Skalowalność systemu oznacza jego zdolność do obsłużenia rosnącej ilości żądań do zasobów. Skalowalność oznacza łatwość rozbudowy systemu, tak aby mógł obsłużyc rosnące wymagania.

Skalowalność w pionie Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [3/37] Skalowanie w pionie: zwiększenie zasobów sprzętowych w ramach serwera (RAM, Dysk, drugi procesor). zwiększenie ilości procesów np. serwera HTTP, zwiększenie ilości maszyn wirtualnych w ramach węzła fizycznego.

Skalowalność w pionie Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [4/37] Wady: Prawo Moore a, Niezawodność, Szybkie wysycenie, I/O dysku się nie skaluje, problematyczność.

Skalowalność w poziomie Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [5/37] Skalowalność w poziomie: dodanie dodatkowego komponentu (serwera, urządzenia) Wady: Koszt, System rozproszony, Większa złożoność, Nie wszystko się da.

Niezawodność Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [6/37] Niezawodność jest własnością systemu, mówiącą o tym, czy pracuje on poprawnie przez wymagany czas. Formalnie jest to prawdopodbieństwo, że system będzie działał poprawnie w danym przedziale czasu. R(t) = P (t τ) R(t) niezawodność t czas pracy bez awarii τ założony czas bez awarii

Niezawodność Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [7/37] MTBF (ang. Mean time between failures) średni czas pomiędzy awariami MTTF (ang. Mean time to failure) średni czas do awarii MTTR (ang. Mean time to recovery) średni czas do naprawy

Niezawodność Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [7/37] MTBF (ang. Mean time between failures) średni czas pomiędzy awariami MTTF (ang. Mean time to failure) średni czas do awarii MTTR (ang. Mean time to recovery) średni czas do naprawy MT BF = MT T F + MT T R

Niezawodność Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [8/37]

Dostępność Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [9/37] Dostępność to bezawaryjne działanie systemy w trakcie całego czasu jego działania.

Dostępność Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [9/37] Dostępność to bezawaryjne działanie systemy w trakcie całego czasu jego działania. λ = 1 MT T F i µ = 1 MT T R

Dostępność Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [9/37] Dostępność to bezawaryjne działanie systemy w trakcie całego czasu jego działania. λ = 1 MT T F i µ = 1 MT T R λ P up = µ P down

Dostępność Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [9/37] Dostępność to bezawaryjne działanie systemy w trakcie całego czasu jego działania. A = P up = µ µ+λ = λ = 1 MT T F i µ = 1 MT T R λ P up = µ P down 1/MT T R 1/MT T R+1/MT T F = MT T F MT T F +MT T R = R(t)dt

Klasy dostępności Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [10/37] Klasa Dostępność Niedostępny (min/rok) Typ systemu 1 90% 52560 Niezarządzany 2 99% 5256 Zarządzany 3 99,9% 526 Dobrze zarządzany 4 99,99% 52,6 Odporny na awarie 5 99,999% 5,3 Wysoko dostępny 6 99,9999% 0,53 Bardzo wysoko dostępny 7 99,99999% 0.0053 Ultra dostępny

Modelowanie, planowanie Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [11/37] wydajnościowe algebry procesów, teoria kolejek, sieci Petriego, predykcja, prognozowanie, modele matematyczne.

Umowy SLA Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [12/37] Umowa SLA (ang. Service Level Agreement) to wynegocjowany poziom świadczenia usługi. Umowa pomiędzy dostawcą, a odbiorcą.

Umowy SLA Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [12/37] Umowa SLA (ang. Service Level Agreement) to wynegocjowany poziom świadczenia usługi. Umowa pomiędzy dostawcą, a odbiorcą. 1 Dostawca łącza gwarantuje minimalną przepustowość łącza na poziomie 2Mbit w okresie 99,9%. 2 Dostawca usługi gwarantuje czas odpowiedzi nie wyższy niż 30ms w okresie 99%. 3 Usługa hostingu gwarantuje dostępność na poziomie 99%. UWAGA Pamiętajmy o tabelce!!

Skalowalność aplikacji Web Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [13/37] Prosta aplikacja wszystko na jednym węźle fizycznym.

Skalowalność aplikacji Web Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [14/37] Wydzielamy bazę danych na drugi węzeł. Skalujemy, a co z niezawodnością?

Skalowalność aplikacji Web Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [15/37] Wydzielamy bazę danych na drugi węzeł. Skalujemy, a co z niezawodnością?

Skalowalność aplikacji Web Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [16/37] Nasza baza danych działa dobrze, nigdy jeszcze nam nie padła. Jednak serwer WWW nie daje rady. CO ROBIĆ?

Skalowalność aplikacji Web Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [16/37] Nasza baza danych działa dobrze, nigdy jeszcze nam nie padła. Jednak serwer WWW nie daje rady. CO ROBIĆ? Oczywiście dokładamy kolejny serwer WWW.

Równoważenie obciążeń Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [17/37] Wysyłanie żądań do dwóch lub więcej serwerów, Poziom DNS: kilka adresów IP dla jednej domeny, Poziom HTTP (serwer Reverse Proxy), Transparentne dla użytkownika, Stanowe / Bezstanowe, Algorytmy dystryucji żądań: round robin, weighted round robin, oparte na klasie użytkownika, oparte na historii, oparte na pomiarach.

Load balancer Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [18/37]

Load balancer Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [19/37]

Skalowalność aplikacji Web Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [20/37] Mamy już dość sensowne rozwiązanie. O serwery WWW jesteśmy spokojni. A co z bazą danych?

Skalowalność bazy danych Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [21/37] W przypadku baz danych (oraz innych aplikacji stanowych) sytuacja nie jest tak prosta. W grę wchodzi spójność danych, nie możemy dystrybuować żądań pomiędzy kilka osobnych baz. Na szczęście można ten problem rozwiązać dostawcy baz danych dostarczają rozwiązania do klastrowania.

Klaster Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [22/37] Klaster jest systemem złożonym z wielu węzłów, jednakże dla użytkownika wydaje się jedną maszyną, systemem operacyjnym. Klaster jest systemem rozproszonym zasoby współdzielone są poprzez komunikację. Przykłady: rozproszone systemy plików, sieciowe pamięci masowe, bazy danych, klastry obliczeniowe, serwery aplikacyjne.

Klaster wysokiej dostępności Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [23/37] Klaster wysokiej dostępności (HA cluter) składa się z 2 lub więcej węzłów, realizujących ten sam cel przetwarzania. Może pracować w trybach: Aktywny / Aktywny węzły pracują jednocześnie i obsługują żądania, Aktywny / Pasywny (lub Master Slave) jeden węzeł pracuje, drugi jest w zapasie. Oczywiście można to uogólnić na n węzłów: Active / (n-1) Active, (n/2) Active / (n/2) Passive, (n-f) Active / f Passive.

Klaster typu Active / Passive Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [24/37] Mechanizm detekcji awarii bicie serca (heartbeat). Passive sprawdza czy Active działa jeśli nie przejmuje jego rolę. Strategie po tym jak Active wstanie są dowolne. W jednych Active synchronizuje się z Passive i odzyskuje dawną rolę, w innych zostaje Passivem.

Klaster typu Active / Passive Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [25/37]

Klaster typu Active / Passive Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [26/37]

Klaster typu Active / Passive Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [27/37]

Niezawodność + skalowalność Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [28/37]

Gotowe środowisko Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [29/37] Posiadamy niezawodne, skalowalne środowisko. Nasz portal ma miejsce by obsłużyć więcej użytkowników, a administratorzy mogą spać spokojnie. Występuje jednak pewien problem. Okazuje się, że większość stron WWW portalu nie jest często zmieniania, niepotrzebnie generujemy je za każdym razem, niepotrzebnie też przesyłamy materiały statyczne przy każdym żądaniu (zdjęcia, pliki CSS, pliki JavaScript, itd).

Gotowe środowisko Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [29/37] Posiadamy niezawodne, skalowalne środowisko. Nasz portal ma miejsce by obsłużyć więcej użytkowników, a administratorzy mogą spać spokojnie. Występuje jednak pewien problem. Okazuje się, że większość stron WWW portalu nie jest często zmieniania, niepotrzebnie generujemy je za każdym razem, niepotrzebnie też przesyłamy materiały statyczne przy każdym żądaniu (zdjęcia, pliki CSS, pliki JavaScript, itd). Sięgamy po rozwiązania z zakresu optymalizacji wydajnościowej aplikacji WWW. Jednym z nich jest caching.

Cache Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [30/37] W naszym przypadku możemy użyć kilku rodzajów cachowania. 1 Cache na poziomie obiektów w aplikacji (memcache)

Cache Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [30/37] W naszym przypadku możemy użyć kilku rodzajów cachowania. 1 Cache na poziomie obiektów w aplikacji (memcache) 2 Cache na poziomie serwera aplikacji (akceleratory)

Cache Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [30/37] W naszym przypadku możemy użyć kilku rodzajów cachowania. 1 Cache na poziomie obiektów w aplikacji (memcache) 2 Cache na poziomie serwera aplikacji (akceleratory) 3 Cache na poziomie żądań HTTP (serwer Proxy Cache)

Cache Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [30/37] W naszym przypadku możemy użyć kilku rodzajów cachowania. 1 Cache na poziomie obiektów w aplikacji (memcache) 2 Cache na poziomie serwera aplikacji (akceleratory) 3 Cache na poziomie żądań HTTP (serwer Proxy Cache) 4 Cache na poziomie przeglądarki klienta (delegowanie cachowania do klienta)

Cache Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [30/37] W naszym przypadku możemy użyć kilku rodzajów cachowania. 1 Cache na poziomie obiektów w aplikacji (memcache) 2 Cache na poziomie serwera aplikacji (akceleratory) 3 Cache na poziomie żądań HTTP (serwer Proxy Cache) 4 Cache na poziomie przeglądarki klienta (delegowanie cachowania do klienta) 5 Cache geograficzny (wyspecjalizowane rozwiązania, np. Akamai)

Cache Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [31/37] Cache na poziomie obiektów w aplikacji (memcache)

Cache Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [32/37] Cache na poziomie serwera aplikacji. języki interpretowane (PHP, Python) każde odwołanie to interpretacja i wykonania koszt akceleratory kompilują do formy wykonywalnej przy pierwszym odwołaniu np. PHP Xcache, PHP eaccellerator, mechanizmy w Django dla Javy wbudowane w serwery aplikacyjne przede wszystkim oszczędza CPU i skraca czas potrzebny na obsłużenie żądania

Cache Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [33/37] Cache na poziomie żądań HTTP (serwer Proxy Cache) działa jak serwer proxy HTTP, strona raz wygenerowana zapamiętana w cache.

Cache Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [34/37] Cache na poziomie przeglądarki korzystając z nagłówków HTTP ustawiamy przesłanki dla przeglądarki (max-age, Cache-Control, Expires, ETag) przeglądarki wstawiają odpowiednie elementy do cachu lokalnego trzeba bardzo uważać z tym mechanizmem, bo nie mamy nad nim kontroli obejście: <a href= zdjecie.png?v2 >

Cache Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [35/37] Cache geograficzny CDN (ang. Content Delivery Network) materiały statyczne widoczne są pod innymi adresami URL, korzystanie z zewnętrznych dostawców przestrzeni Amazon, Akamai,... zalety to szybsze otwieranie się strony (przeglądarka otwiera 2 połączenia na URI) geograficznie rozproszony otrzymujemy treści z bliższej lokalizacji wadą może być niekiedy koszt (łącz, użytkowania)

Gotowe środowisko Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [36/37]

Dziękuję Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [37/37]?