Professional Documents
Culture Documents
05 Dizajniranje Sistema
05 Dizajniranje Sistema
Dizajniranje sistema
Šta je to dizajn?
• Dizajn je kreativni proces pretvaranja problema u
rešenje. Opis rešenja se takođe zove dizajn.
• Konceptualni i tehnički dizajn
Šta je to dizajn?
• Konceptualni dizajn
– pisan jezikom klijenta
– ne sadrži tehnički žargon
– opisuje funkcije sistema
– ne zavisi od implementacije
– povezan sa dokumentom specifikacije sistema
• Tehnički dizajn
– opis glavnih hardverskih komponenti i njihove funkcije
– hijerarhija i funkcija softverskih komponenti
– strukture i tokovi podataka
Raščlanjivanje i modularnost
• Modularno raščlanjivanje
• Raščlanjivanje na osnovu podataka
• Raščlanjivanje na osnovu događaja
• Dizajn spolja ka unutra
• Objektno orijentisani dizajn
Arhitektonski stilovi i strategije
• Arhitektura
• Dizajn koda
• Izvršni dizajn
• Arhitektonski stilovi
– Cevi i filtri
– Objektno orijentisani
– Implicitno pozivanje
– Slojevi
– Skladišta
– Mikroservisi
Mikroservisi
Monolitni softver
• Monolitnost
– Jedan bild i jedna jedinica za isporuku
– Jedan kod
– Jedna tehnologija (Linux, JVM, Tomcat, Libraries,…)
• Prednosti
– Jednostavan mentalni model za developere: Jedna
jedinica kojoj se pristupa za kodiranje, bildovanje i
isporuku
– Jednostavno skaliranje: Pokretanje više kopija
Mikroservisi
Problemi sa monolitnim softverom
• Ogroman i zastrašujući kod
• Preopterećeni alati za razvoj
– Refaktorisanje traje više minuta
– Bildovanje traje satima
– Testiranje prilikom kontinuirane integracije traje
danima
• Skaliranje je ograničeno
– Pokretanje kopije čitavog sistema je zahtevno u
pogledu resursa
• Ograničena frekventnost isporuke
– Ponovna isporuka zahteva zaustavljanje čitavog
sistema
– Ponovne isporuke će imati probleme i povećati rizik
Mikroservisi
Presentation
Višeslojni sistemi
Višeslojni sistemi dekomponuju monolitni sistem u
slojeve
Logic • Najčešće: prezentacioni, logički, pristup podacima
• Najčešće jedna grupa tehnologija po sloju
– Prezentacioni: Linux, JVM, Tomcat, Libs, EJB client,
JavaScript
Data Access
– Logički: Linux, JVM, EJB container, Libs
– Pristup podacima: Linux, JVM, EJB JPA, EJB container, Libs
Prednosti
• Jednostavan mentalni model, jednostavne
DB zavisnosti
• Jednostavna isporuka i skaliranje
Mikroservisi
Presentation
Problemi višeslojnih sistema
• I dalje veliki kod (jedan po sloju)
• … sa istim uticajem na razvoj, bildovanje i isporuku
Logic • Bolje skaliranje, ali i dalje ograničeno
• Uvećanje timova ograničeno: jedan tim po sloju
funkcioniše dobro
Data Access • Developeri se specijalizuju za svoj sloj
• Komunikacija između timova je ograničena zbog
pristrasnosti
DB
Mikroservisi
Kako razvijati ogromne sistema?
• Aplikacije i timovi se moraju razvijati van limita koje im
nameće monolitna i višeslojna arhitektura. To se i dešava, ali
nekontrolisano.
• Velike kompanije završavaju sa morem višeslojnih sistema koji
često međusobno komuniciraju na nedokumentovan način.
• To često završava na neočekivani način.
Monolitna arhitektura
ModuleModuleModule Module
A B c D
PRESENTATION LAYER
DATABASE LAYER
Mikroservisi
Osnovni princip
Funkcionalna dekompozicija sistema u upravljive komponente
koje se mogu nezavisno isporučivati.
Monolitna Mikroservisi
Mikroservisi
• Svaki mikroservis je funkcionalno
samostalan sa:
– Reprezentacijom resursa
– Upravljanjem podacima
• Svaki mikroservis se bavi samo jednim
resursom:
– Klijentima
– Artiklima
– Korpom
– Kupovinom