370 likes | 489 Views
Stabilność , skalowalność i diagnozowalność. czyli lubię spać w nocy …. Inspiracja. “Feature complete” is not the same as “production ready” Michael T. Nygard. Czego chce klient ?. Funkcjonalność !. O czym nie myśli się w czasie implementacji. Reakcja na sytuacje wyjątkowe
E N D
Stabilność, skalowalnośćidiagnozowalność czylilubięspać w nocy….
Inspiracja “Feature complete” is not the same as “production ready” Michael T. Nygard
Czegochceklient? Funkcjonalność!
O czymniemyślisię w czasieimplementacji • Reakcjanasytuacjewyjątkowe • Problemy z siecią/serwisami • Instalacja • Diagnostyka • Przywracaniesystemu do życia • Monitoring
Integration point • I haven’t seen a “pure-website” project since about 1996. If your projects are like mine, they have probably been enterprise integration projects that happen to have an HTML-based front end. • Punktstyku 2 podsystemów: • RPC, wołanie Com-a, Socket, WCF • Bazadanych?
Punktupadku? Każdypunktintegracjikiedyśwybuchnie. Niewiadomotylko: • Kiedy • Jakczęsto to siępowtórzy • Jakiebędąobjawy… • Błądprzewidywalny • Błądnieprzewidziany • Dużeopóznienie • Zwistotalny… • Mega wielkizwrot
Wartorozmawiać… Należy • PoszukaćPunktówintegracjiizastanowićsię: • Jakiebłędysąobsługiwane? • Co jeślipojawisięnieoczekiwanybłąd? • Co jeślisterowanieniewróci w ogóle? • Co gdyniebedziebłędu ale danebędąbezsensu –np. pustyzwrot? • Co gdyzwrotbędzieolbrzymi? • Co będziegdybędziemycośzmieniać w serwisie?
Brakodpowiedzi… • Czymożemyżyćbezdziałającejusługi? czyli jaka jest różnicamiędzy 5x9 a 2x8 99.999% vs 88%
Dostępnośćsystemu • Różnicamiędzy 99.999% a 88% wynosi 1051h w skaliroku • Przykoszcieopóźnieńrzędu 1k$/h daje to kwotę ponadmilion $ • Wiele firm wycenia 1h na 100k$
Czy to naprawdępotrzebne? DB - klienci Serwisobsługaklientów DB - księgowość Serwisksięgowy Serwisreklamowy DB - cennik Aplikacja WWW Przeglądarka
Czy to naprawdępotrzebne? • Czy do pokazaniatowarówpotrzebaaktualnychreklam ? Promocji? • Czymożnażyćnp. bezdanychklientów? Czasemmożna – czasemmamy je w cisteczkachi w sytuacjiwyjątkowejmożemyichniedoczytywać z serwisu.
Fail Fast • Dużolepiejszybkozasygnalizowaćbłądniżpróbowaćobsłużyć go naniskimpoziomienp. przezpowtórzenia • Dlabazydanychpowtórzeniemożemiećsens (np. w przypadku deadlock-ów) • Lepiejzwalidowaćdaneprzed a nienakońcutransakcji • Lepiejupewnićsię, żemamypotrzebnewszsytkiezasobyzanimrozpoczniemyczasochlonneprzetwarzanie (np. zawołamyzewnętrzneserwisy)
Fail Fast – czarnyscenariusz • bazaserwisuobsługaklientówledwożyje (właśnieliczony jest rocznyraport). • próbujemykupićcoś w sklepie (jakwieluinnych) ?
Time Out • Zawszegdytylkomożnapowinienbyćustawiany • Zwyklewartodaćmożliwośćkonfiguracji
Circuit Breaker • Jeśliserwisnp. marketingustwierdza, że ma problem z baza (npdługiczasodpowiedzi) odrazuraportujebłądnp. przez 1 min żebydaćczasbazienapodniesieniesię.
Hand Shaking • Zamiastodrazupytaćserwis o pot dużedane (zwłaszanastarcielubpojakimśczasiebezczynności) możnanajpierwzapitać go o status • Start systemu – porestarcie …
Slow responses Ulubionezajęcieznudzonegoklienta: “Odśwież” Długiczasodpowiedzi: • Blokujełańcuchpytających - wątki, pamięć Ew. timeout iponowienienieanulująpoprzedniegożądania, czyli jest jeszczegorzej. Co z pomysłem by nieobsługiwaćkolejnyćżadań z tegosamego IP?
Co to jest? Zasadaodwróconego SLA.
Jedno z rozwiązań - publish DB - klienci DB – księgowość + Obrazdanychklientów Serwisobsługaklientów Serwisksięgowy DB – cennik + Obrazdanychksięgowych, klienckich Serwisreklamowy Aplikacja WWW Przeglądarka
Użytkownicy to zło ... konieczne Sąrózni – wieluprzeglądamałokupuje Dodatkowosą: • promocje • boty • hakerzy
Sesje Pyt: długieczykrótkie ? Odp: Lekkie, a najlepiejwcale • Użytkownikniewie co to zamykaniesesji – ulubionysposóbwyjścia to przejściegdzieindziej, a niewyloguj • Botnieobsługujeciastek – co oznacza …domyślnienowąsesjędlakażdegożądania – np. żebyodpowiedzieć “temupanudziękujemy”
Reakcjałańcuchowa Przetwarzaniezleceń Przetwarzaniezleceń Przetwarzaniezleceń Aplikacja WWW Przeglądarka
Czy system musiznieśćwszystko ? Powinien • dobrzedziałać w typowychwarunkach • przetrwać (niekoniecznie super wydajnie) ektremalnewarunki – promocje, święta
Bulkheads? • WartorozważyćoddzielneQoSdlaróżnychtypówklientów, usługitdnp. przezwydzielenieoddzielnychpodsystemów • Kompromis: skalowanie vs. stabilność
Wycieki Pamięć Połączenia do bazy, Wątki Duży problem dladługodziałającychaplikacji
Diagnostyka • Monitorowanie: pamięć, dysk, zasoby, sieciowewołania, wolumendanych, stanpunktówintegracji, • Logowanie: wyjątki, błędnewołania, problemysieciowe (+ kontekst), ale bezujawnianiaszczegłówużytkownikom
Fiddling • Aplikacjawymagarestartów • Aplikacjawymagaczyszczeniadysku (rolowanielogów) • Skomplikowany start/restart • Trudnakonfiguracja
Health Check • Strona z syntetycznąprezentacjąstanusystemu • Self testy
Test Harnes • Przytestowaniu (manualnym) testujemynietylko “heapy path” • Staramysiędociekliwi, nieprzewidywalni, poprostuwredni • Testy automatyczneniezatąpiątesterów Np. • wyjmowaniekabelkowsieciowych to wcalenietakizłypomysł. • złośliwegenerowaniedużychzwrotówczypsuciedanychmożebyćtrudne do uzyskania w normalnymtrybietestowania
Ktoza to zapłaci? • Budując “proof of concept” systemumusimyzbudować go tanio– to tylkomakieta • Żadendziałającykomercyjnyduży system niebyłpisanyjakoduży system… • R 1.0 to poczatekżyciasystemu (a niekoniec) • Niemożnadodaćwszystkiegonaraz, ale to nieznaczyżemożnaniedodawaćwcale • Różnicamiędzystanemobecnym a docelowym to … długtechniczny
Z drugiejstrony? • Często jest takzedecyzjepodjetenapoczatkudeterminujakształt (istabilnosc) • Na początkuwiemy o systemienajmniej..