170 likes | 360 Vues
Kako z velikimi?. MIHA VALEN ČIČ. Deklica za vse – šišam, brijam, zube vadim Miha Valenčič s.p. Pričakovanja. Ni demonstracijsko predavanje Ni VisualStudia verzija Veliknajst Pogovarjajmo se. Direktni marketing. Sem eden izmed vas, developer, arhitekt, zapisnikar, itd.
E N D
Kako z velikimi? MIHA VALENČIČ Deklica za vse – šišam, brijam, zube vadim Miha Valenčič s.p.
Pričakovanja • Ni demonstracijsko predavanje • Ni VisualStudia verzija Veliknajst • Pogovarjajmo se
Direktni marketing • Sem eden izmed vas, developer, arhitekt, zapisnikar, itd. • Z razvojem in načrtovanjem inf. sistemov se ukvarjam že preko 15 let • Sem multidisciplinaren • Imel sem srečo, da sem se ukvarjal z raznolikimi sistemi, ki so mi dali veliko misliti in nudili veliko izzivov
Kdo so “veliki”? • Morda bolje rečeno kompleksni? • Veliko število uporabnikov (predvsem sočasnih) • Zahteve po visoki razpoložljivosti • Zahteve po visoki zanesljivosti • Zahteve po določenih performancah (SLA) • Vpeti v n različnih sistemov (n > 3)
Krog zaupanjaAli zaupamo razvojnikom? • Zaupamo sebi? • Zaupamo kolegom? • Kvaliteta glede na velikost razvojne ekipe • Kvaliteta glede na motivacijo razvojne ekipe • Kvaliteta glede na testno (QA) ekipo
Heterogenost • Zahtevna okolja so običajno kompleksna in heterogena • V “enteprise” segmentu najdemo veliko *NIX sistemov, SOA, J2EE • Pomembna je interoperabilnost • WS-* • HTTP + POX • REST v praksi skorajda ni prisoten, čeprav je zanimiva alternativa • Anti-corruption layer
Metrike in performance • Metrike na strežniku • Metrike na odjemalcu (fat client, browser) • Kje je “baseline”? Testiranje glede na baseline • Cold start, warm start • Server configuration • Web/Application server parametri • TCP/IP & ostali sistemski parametri • HW parametri (strežnika in prenosne opreme) • Meritve naj bodo čim bolj znanstvene
Metrike in performanceWeb aplikacije • Merjenje ASP.NET • ASP.NET tuning (odvisno od verzije .NET ogrodja) • Default nastavitve so tako-tako – relativno slabe • Trivia: Če traja en request (zahteva po izvajanju neke funkcionalnosti) pri meritvi 1 sekundo, koliko časa traja, da poservisiramo 200 odjemalcev, ki sočasno želijo izvesti operacijo? • Odgovor: odvisno • kolikosočasnihnitipodpirastrežnik • ali se namdogaja contention ali ne • je našaaplikacije high-througputali high-latency ponaravi?
Razvojni principiInfrastruktura • Source control – brez izgovorov! • Continous integration servers • Build • Testing • Issue/Bug tracking
Razvojni principiDevelopment • DI/IoC containers • Plugins • SOLID • Coding style (IDesign naprimer)
Odgovor: odvisno. Verjetno je drugametodaboljša. 10ms je sicerpremalo, vendarlahko problem analiziramo in mordauvedemo caching transformacij, kjerdejanskozmanjšamočasovnopotratonanekajmilisekund in dejanskoprehitimotudiprvometodo, ostanenam le inicializacija. Inicializacijolahko (morda??) zaobidemo s t.i. warmupstrategijami. • Ali je pomembnarazlikačeenametodaporabirecimo 5ms, drugametoda pa 90ms, pri tem da je: • drugametodaprecejboljfleksibilna in uporabnikuprijazna • lažjazaimplementacijo • boljrobustna • imamovisokezahtevepoperformancah, ki v povprečjunaj ne bi presegale 100ms. Razvojni principiDevelopment • Optimizacija: “We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil.” • Primer: templating funkcionalnost
Razvojni principiPakiranje aplikacij • Package dependency • Coupling • Cohesion • Shipping/Release dependency
Razvojni principiBackwards compatibility • Pogosto je to zahteva • Vsaj 1 “major” verzijo • Assembly binding redirecti • Metode lahko le dodajamo, ne smemo jih odvzemati
Deployment • HW vs virtualizacija • Slovenija ima majhne zahteve • Virtualizacija pomaga pri: • Poceni redundančnih rešitvah • Poceni in enostavnemu testiranju distribuiranih namestitev • Poceni simulaciji preobremenitve (enostavno lahko omejimo RAM in CPU ki je na voljo) • Hiteremu odzivu v primeru izpadov
Nepogrešljiva orodjaDon’t live home without them • Možgan • SQL Profiler • Performance Viewer • Log Parser • Load generator (ACTest, grinder, custom...) • tcpdump/windump, Wireshark • debugging proxy • Firebug (Firefox), IE8 Dev tools
Hvala! • Moj kontakt: miha.valencic@gmail.com