często zdarza się nam rozmawiać na tematy około architektoniczne, używamy wielu pojęć których znaczenie i definicje dla nas są zgoła odmienne. Za kilka dni będę potrzebował zbiór takich pojęć, dlatego postanowiłem zebrać definicje pewnych terminów w jednym miejscu.
Definicje starałem się opracować na podstawie wiedzy jaką posiadam, na podstawie informacji znalezionej w sieci, oraz intuicji.
Architektura (en: architecture) - nie będę się starał definiować tego słowa, posiada one przynajmniej tyle definicji ile wynosi silnia z ilość liter w tym wyrazie. Pozostanę tylko przy stwierdzeniu, iż opisuje ona coś ważnego. Rozmawiałem kiedyś ze znajomym i on powiedział mi, iż terminu architektura używamy w rozmowie by podkreślić, iż mówimy coś ważnego i chcemy być w tym momencie słuchani.
Czas odpowiedzi (en: response time) - czas potrzeby do przetworzenia żądania.
Czas reakcji (en: responsiveness) - to szybkość z jaką system potwierdza odebranie żądania, niezależenie od jego przetwarzania.
Latencja (en: latency) - to minimalny czas wymagany do otrzymania jakiejkolwiek odpowiedzi, choćby wtedy, gdy aplikacja nie musi wykonać żadnych obliczeń. Nie mamy prawie wpływu na latencje, dlatego takie ważne jest ograniczanie ilość wywołań w systemach zdalnych.
Przepustowość (en: throughput) - to ilość operacji jakie może wykonać system w jednostce czasu. W aplikacjach typu enterprice typową miarą są transakcje na sekundę (en: transaction per second - tps).
Wydajność (en: performance) - może być rozumiana jako przepustowość lub czas odpowiedzi, zależy co jest ważniejsze w kontekście systemu.
Obciążenie (en: load) - polega na podaniu czasu odpowiedzi na typowe żądanie, przy ustalonej liczbie jednoczesnych żądań.
Wrażliwość na obciążenie (en: load sensitivity) - podaje jak zmienia się czas odpowiedzi, gdy rośnie obciążenie systemu. Najlepiej zobrazuje to porównanie, system 'A' ma czas odpowiedzi 0,5 sekundy przy jednoczesnych 20 żądaniach, a system 'B' posiada czas odpowiedzi 0,2 przy 20 jednoczesnych żądaniach. Ale gdy zwiększymy ilość żądań do 25 to system 'A' posiada czas odpowiedzi 0,6, a system 'B' posiada czas odpowiedzi 2. Oznacza to, iż system 'A' posiada niższą wrażliwość na obciążenie niż system B.
Degradacja (en: degradation) - odnosząc pojęcie do powyższego przykładu. System 'B' podlega większej degradacji niż system 'A'.
Efektywność (en: efficiency) - to wydajność podzielona przez zasoby. o ile system 'A' posiada wydajność 30 tps na maszynie z 2CPU, a system 'B' posiada wydajność 40 tps na maszynie z 4CPU, to system 'A' posiada większą wydajność.
Pojemność (en: capacity) - to minimalna wartość wydajności zdefiniowana np. przez wymagania użytkownika.
Skalowalność (en: scalability) - mówi o tym jak zmienia się wydajność podczas dodawania nowych zasobów do systemu. Dwie poniższe definicje precyzują pojęcie skalowalności.
Skalowalność pionowa (en: vertical scalability), Skalowalność w górę (en: scaling up) - to zwiększanie mocy pojedynczego serwera.
Skalowalność pozioma (en: horizontal scalability), Skalowalność w szerz(en: scaling out) - polega na dodawaniu nowych serwerów do systemu.
O to i powstał zbiór pojęć jakie będą mi potrzebne w najbliższym czasie. Definicje w takiej postaci są zrozumiałe dla mnie, wam polecam poszukanie definicji tych samych w necie i opracowanie własnej definicji.