Programowanie w Internecie: #A Skalowanie operacji

download Programowanie w Internecie: #A Skalowanie operacji

of 6

description

Wprowadzenie do skalowania aplikacji webowych ze szczególnym naciskiem na skalowanie operacji.

Transcript of Programowanie w Internecie: #A Skalowanie operacji

  • 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?