420 likes | 613 Views
DIZAJN CLOUD-BASED APLIKACIJA KORIŠĆENJEM PATTERN-A. Ivan Lazarevi ć - Buda Solution Architect, S&T Serbia ivan.lazarevic@snt.rs , buda81@gmail.com. Agenda. Arhitektura sistema Evolucija Tradicionalni IT Cloud Moguća mesta otkaza Nova pravila Loša arhitektura Paterni u Cloud -u
E N D
DIZAJN CLOUD-BASED APLIKACIJA KORIŠĆENJEM PATTERN-A Ivan Lazarević - Buda SolutionArchitect, S&T Serbia ivan.lazarevic@snt.rs, buda81@gmail.com
Agenda • Arhitektura sistema • Evolucija • Tradicionalni IT • Cloud • Moguća mesta otkaza • Nova pravila • Loša arhitektura • Paterni u Cloud-u • Health Endpoint Monitoring • Circuit Breaker • Runtime Configuration • Sharding • Priority Queue
Arhitekturasistema • Strukturai međusobna zavisnost između komponenti • Osnovnaorganizacijasistemakojaobuhvatanjegovekomponente, njihoverelacije,okruzenjeiprincipedizajnairazvoja • Veza između biznis zahteva i tehničkih zahteva • Trenutne potrebe i budući razvoj • Zavisi od mnogo faktora: brojkorisnika, alati, složenost korisničkih zahteva, razvojno okruženje, baze itd. • Overengineering
Evolucija Evolucija Revolucija
Evolucija Promene u arhitekturunastajuusledpromena u hardware-u, alatima, tehnologiji Zahteviklijenatautiču na promene u tehnologiji, samim tim i u arhitekturi
Tradicionalni IT U vlasništvuklijenta Data centri Skuphardware Sprečavanje otkaza
Cloud servisi Povezane komponente Nepoznata infrastruktura Oporavak Prihvatiti otkaze
Cloud– nova pravila Cloud ≠ Tradicionalni IT Iskoristiti prednosti Obratiti pažnju na zamke Razvoj za Cloud ≠ Razvoj tradicionalni IT
Cloud– nova pravila Većina Cloudsistema nema dobru arhitekturu Podržati funkcije cloud infrastrukture
Loša arhitektura • Loša iskorišćenostresursa • Brzo iskorišćavanje svih resursa • Nedovoljan nivo sigurnosti • Loša fleksibilnost i mogućnost proširenja • Česti otkazi i prekidi u radu • Loša kontrola nad sistemom
Obratiti pažnju • Opterećenja • Razdvojiti delove sistema sa različitim opterećenjem • Funkcionalnosti • Razdvojiti delove sistema po funkcionalnostim • Definisati životni ciklus • Po mesecima, danima, sezonama, satima, nedeljama • Definisati plan dostupnosti • Proceniti potrebne resurse kroz vreme • Definisati jedinice mere
Obratiti pažnju • Izbegavati P2P komunikaciju • Koristiti queue • Traffic Management • Pristupnajbližem centru • Keširanje podataka • Particionisati podatke (horizontalno, vertikalno, hybrid) • Asinhrono programiranje • Praćenje rada sistema • Proširivost
Paterni • Rešenje nekog problema u nekom kontektstu koje se ponovo može iskoristiti za rešavanje nekih novih problema • Problem, kontekst, rešenje • Razdvajanje generalnih od specifičnih delova koda • GOF • Clouddesignpatterns
Clouddesignpaterni http://msdn.microsoft.com/en-us/library/dn568099.aspx http://shop.oreilly.com/product/0636920023777.do
Cloud design paterni • Availability (Health Endpoint Monitoring, Throttling Pattern, Queue-based Load Leveling Pattern) • Data management (Cache-aside Pattern, CQRS Pattern, Event Sourcing Pattern, Index Table Pattern, Materialized View Pattern, Sharding Pattern, Static Content Hosting Pattern, Valet KeyPattern) • Design and implementation (Compute Resource Consolidation Pattern, CQRS Pattern, External Configuration Store Pattern, Leader Election Pattern, Pipes and Filters Pattern, Runtime Reconfiguration Pattern, Static Content HostingPattern)
Cloud design patteni • Management and monitoring (External Configuration Store Pattern, Health Endpoint Monitoring Pattern, Runtime ReconfigurationPattern) • Messaging (Competing Consumers Pattern, Pipes and Filters Pattern, Priority Queue Pattern, Queue-based Load Leveling Pattern, Scheduler Agent Supervisor Pattern) • Performance and scalability (Cache-aside Pattern, Competing Consumers Pattern, CQRS Pattern, Event Sourcing Pattern, Index Table Pattern, Materialized View Pattern, Priority Queue Pattern, Queue-based Load Leveling Pattern, Sharding Pattern, Static Content Hosting Pattern, ThrottlingPattern)
Cloud design patteni • Resiliency (Circuit Breaker Pattern, Compensating Transaction Pattern, Leader Election Pattern, Retry Pattern, Scheduler Agent Supervisor Pattern) • Security (Federated Identity Pattern, GatekeeperPattern, ValetKeyPattern)
HealthEndpointMonitoringpatern Problem Kasno otkrivanje problema u radu aplikacije. Rešenje Mehanizam koji će omogućiti da se u određenim vremenskim intervalima proveri status sistema.
Circuit Breaker patern Problem Problemi u radusaeksternimresursima, servisima, storage, file sistem, timeout, velikibrojkorisnikaotkazsistema Rešenje Sprečiti pokušaj da se nešto izvrši što će sigurno vratiti grešku tako da aplikacija dobije brzo negazivan odgovor i nastavi sa radom
Runtime Reconfiguration patern Problem Primena promene konfiguracije aplikacije tako da se najmanje utiče na rad aplikacije Rešenje Reagovanje na promene koje se jave u konfiguraciji i na taj način obezbediti mehanizam koji će imati najmaniimpact
Valet Key Pattern Problem Obezbediti pristup resursu van sistema za autenfirikacijusamo određeno vreme i po određenim pravilima Rešenje Obezbediti token ili ključ preko koga sistem koji sadrži resurs može da proveri token
Shardingpatern Problem Zbog ograničenih resursa (prostorna storage-u, geografskalokacija, prostornamreži itd.) nije uvek moguće imati jedinstvenu bazu podataka za ceo sistem. Rešenje Podeliti bazu podataka u horizontale particije (shard-ove) gdesveparticijeimajuistušemu, a različite podatke.
PriorityQueuepatern Problem Prilikom rada sa queue-vima, ponekad je potrebno obezbediti različite prioritete porukama prilikom obrade. Rešenje Obezdediti više queue-evasarazličitim prioritetom, tako da će se queue-u sa višim prioritetom obezbediti više resursa za rad.