Razvoj namenskih aplikacija
Domenske aplikacije za domenske korisnike –
Ovladavanje domenskim znanjem, komunikacija sa poslovnim analitičarima
Konceptualni model aplikacije u objektno-orijentisanom projektovanju realizuje se u vidu takozvanog domenskog modela koji obuhvata i podatke (koji se čuvaju u bazi) i ponašanje (funkcije). Prednost domenskog modela aplikacije obuhvata sledeće:
Odvajanje dela aplikativnog koda koji je specifičan za konkretnu primenu (domenski specifičnog koda) od ostatka koda koji rešava generalne tehničke probleme (GUI prikaz, logovanje, zaštita podataka, razmena poruka itd.), olakšava održavanje koda i njegovo ažuriranje, poboljšava prenosivost koda (prebacivanja na novi okvir).nomnost
Promoviše timski rad i između programera i korisnika, menadžera i marketinga. Domenski model prevazilazi razlike u razmišljanju inženjera i ne-inženjera tako što unifikuje terminologiju.
Softverska komponenta koja teži da postane optimalna za jedno preduzeće, bez obzira na tehnologiju i mesto primene, implementira domensku ekspertizu preduzeća kome je namenjena. Prilikom razvoja aplikacija koje su specifične za pojedinačno preduzeće, od suštinskog je značaja savladavanje domena preduzeća za koje se aplikacija razvija i implementacija specifičnosti iskustvenog modela budućih korisnika kako bi se ubrzao i optimizovao proces u okviru koga će se aplikacija koristiti. Iz tog razloga, neophodno je osloniti se na poslovnog analitičara budućeg korisnika ili angažovati poslovnog analitičara preduzeća koje razvija softver kako bi se definisala kompletna specifikacija buduće aplikacije.
Kontejnerizacija aplikacija – platform agnostic, k8s ready
Aplikacije su se ranije dizajnirale kao monolitne strukture koje na jednom mestu objedinjuju sve funkcionalnosti. Takve aplikacije vremenom su postale robusne, što je progresivno otežavalo njihovo održavanje, objavljivanje i ažuriranje. Promena jedne funkcionalnosti potencijalno može da ugrozi funkcionisanje celokupne aplikacije, dok se vreme nedostupnosti aplikacije prilikom objavljivanja progresivno produžava sa njenom veličinom i kompleksnošću. Ovi problemi rešeni su uvođenjem mikroservisne arhitekture, koja podrazumeva da se aplikacija podeli na skup manjih mikroservisa, koji međusobno komuniciraju ali su nezavisni. Ovi mikroservisi mogu biti pisani u različitim programskim jezicima, mogu ih razvijati različiti timovi ljudi, a opet ostaju deo iste celine – aplikacije. Mikroservisi se najčešće pokreću u kontejnerima.
Kontejnerizacija, kao jedan od vodećih trendova u razvoju softvera, uključuje pakovanje softverskog koda i njegovih komponenti u tzv. kontejnere, tako da može da radi jednoobrazno i dosledno na različitim platformama koje podržavaju rad s kontejnerima (tzv. platform agnostic koncept). Kontejneri su zaseban proces u okviru OS-a virtuelne ili fizičke mašine, privremene strukture koje ne zahtevaju instalaciju na sistemu, što ih čini pogodnim za razvoj, testiranje i produkciju. Trenutno najkorišćeniji sistem za orkestraciju kontejnera je Kubernetes (k8s), koji dodatno unapređuje portabilnost aplikacija i konzistentnost u njihovom radu na različitim infrastrukturama.
Kontejnerizacija aplikacija omogućila je razvojnim programerima da postave veliki broj instanci aplikacija po relativno niskoj ceni. Osnovna prednost ovakve arhitekture je u tome što predstavlja po resurse manje zahtevnu alternativu za pokretanje aplikacija na virtuelnoj mašini (zato što kontejneri aplikacija dele procesorske i memorijske resurse).
Kontinuirana podrška – funkcionalne dorade po zahtevu korisnika uz konstantnu podršku u radu
Kontejnerizacija nudi značajne prednosti programerima softvera i razvojnim timovima, u rasponu od superiorne agilnosti i prenosivosti do bolje kontrole troškova. Najvažnije prednosti obuhvataju:
Prenosivost:
Kontejner aplikacije rade ekvivalentno na bilo kojoj platformi ili oblaku.
Brzina:
Kontejneri obezbeđuju veću efikasnost servera i smanjuje troškove servera.
Prilagodljivost:
Kontejnersko okruženje omogućava dodavanje novih funkcija, ažuriranja i funkcija trenutno, bez uticaja na originalne aplikacije.
Izolovanje greške:
Kvar jednog kontejnera ne utiče na rad ostalih. Razvojni timovi mogu brzo da identifikuju i isprave tehničke probleme unutar neispravnog kontejnera bez izazivanja zastoja u ostalim.
Bezbednost:
Izolovanje aplikacija kao kontejnera sprečava zlonamerni kod da utiče na druge kontejnerske aplikacije ili host sistem.
Jednostavnost upravljanja:
Korišćenjem platformu za orkestraciju kontejnera (npr. Kubernetes), moguće je automatizovati instalaciju, upravljanje i skaliranje.