programowanie w internecie: #a skalowanie operacji
DESCRIPTION
Wprowadzenie do skalowania aplikacji webowych ze szczególnym naciskiem na skalowanie operacji.TRANSCRIPT
-
5/26/2018 Programowanie w Internecie: #A Skalowanie operacji
#A: Skalowanie operacji
Mikoaj Olszewski
Jakie pytania po lekturze?
Skalowalno
W temacie
Umiejtne przetwarzanie rosncej liczby zada
Moliwo rozbudowania / rozszerzenia
Poza tematem
Prdko, wydajno (2 GHz vs. 3 Ghz)
-
5/26/2018 Programowanie w Internecie: #A Skalowanie operacji
Systemy operacyjne (Solaris vs. Linux)
Technologia (Java vs. Python)
Platforma sprztowa (Intel vs. AMD)
System skadowania danych (SAN vs. NAS)
Optymalny kod (10 lini kodu vs. 1000 lini kodu)
Wydajno
Skalowalno
-
5/26/2018 Programowanie w Internecie: #A Skalowanie operacji
Prawdy...
1. Nie skaluje si to, co nie jest zaprojektowane do skalowania.
2. Nawet jak jest zaprojektowane do skalowania, najprawdopodobniej bdzie bolao.
Skala blu
Sposoby skalowania
Pionowe lepsze (wydajniejsze) maszyny
koszty nie skaluj si liniowo
ograniczone przez rozwj technologiczny
proste
Poziome wicej maszyn i rozdzielenie zada
trudniejsze w zaprojektowaniu i utrzymaniu
moliwe skalowanie stopniowe
Sposoby podstawowe
-
5/26/2018 Programowanie w Internecie: #A Skalowanie operacji
Wielo -wtkowy/-procesowy serwer (WSGI)
Serwowanie statycznych plikw przez dedykowany serwer
Loadbalancer dodanie kolejnych serwerw
DNS
sprztowy
software'owy
Cache'owanie
Wygeneruj raz, odczytaj wielokrotnie
Przechowywanie danych (klucz-warto)
pliki na dysku
baza danych
sowniki w pamici operacyjnej(memcached, redis)
Odwieanie danych potencjalny bl gowy
kasowanie
automatyczna anihilacja
operacje atomowe
Kolejkowanie
Kolejka pojemnik na wiadomoci
Waciwoci
asynchroniczko
wieloprocesowo
nawet wieloplatformowo (!)
-
5/26/2018 Programowanie w Internecie: #A Skalowanie operacji
Sposb zastosowania
kosztowny proces odpalany w tle
powiadomienie uytkownika o rozpocztym zadaniu
(czasem) notyfikacja zakoczenia
Kolejki produkcyjne
Gwarancja dostarczenia wiadomoci
Przeycie restartu lub zepsucia jednego wza
Standardy
JMS Java
AMQP Python
Przykady
Ghetto Queue
TheShwartz
RabbitMQ
Apache ActiveMQ
ZeroMQ
Systemy zadaniowe
Co na wzr RPC (automatyczna wielozadaniowo)
Wykorzystanie kolejek
Automatyczna serializacja zada
identyfikator funkcji/obiektu
parametry
wynik
Duo prostszy interfejs
Lepsze wykorzystanie zasobw maszyny
Elastyczno moiwo wspdziaania z rnymi transportami
Przykady: Celery, Gaerman, Huey, RQ
Dobre praktyki
Nie wynajduj koa skopiuj czyj pomys
Zachowaj prostot
Myl poziomo zamiast pionowo
Uatw sobie radzenie z bdami
izoluj usugi
nie zmieniaj za wiele na raz
Nie przeoptymalizowuj
Testuj skalowalno pod obcieniemUywaj cache'a gdziekolwiek ma to sens
Duo pamici i architektura 64-bitowa s pomocne
Analizuj funkcjonalnoci pod ktem skalowalnoci
-
5/26/2018 Programowanie w Internecie: #A Skalowanie operacji
Co dalej?