wtorek, marca 15

Kilka terminów IT

Witam,
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, że opisuje ona coś ważnego. Rozmawiałem kiedyś ze znajomym i on powiedział mi, że terminu architektura używamy w rozmowie by podkreślić, że 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, nawet 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, że 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. Jeżeli 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.