ESS WEB Platforma
5W+H
Od 2016. godine sve web aplikacije razvijene u E-Smart Systems, razvijene su na specifičnoj platformi za razvoj baziranoj na ASP.NET Core-u, java script single-page-application obrascu i REST web servisima.
U tekstu koji sledi pokušaću da odgovorim na pet + jedno ključno pitanje o ESS Web platformi (Zašto, Kada, Gde, Ko, Šta i Kako).
Ovi odgovori će biti zanimljivi:
- našim korisnicima, kod kojih rešenja izrađena korišćenjem ove tehnologije rade već više od pet godina,
- članovima ESS tima koji sada koriste ovu tehnologiju, onima koji su je nekada koristili,
- široj čitalačkoj publici, budućim korisnicima, kolegama i pentesterima.
S obzirom na to da sama platforma predstavlja značajan tehnički resurs ESS razvoja, ovaj blog predstavlja samo prvi u seriji blogova na ovu temu.
Happy reading!
Zašto smo se odlučili za razvoj vlastite platforme pored bezbroj već postojećih?
- da bismo obezbedili potpunu slobodu koncepata korisničkog interfejsa u odnosu na modele tehničkog dela sistema, uključujući i baze podataka. Prenošenje gotovih modela iz jednog u drugi svet (npr. entity framework) u projektima koje smo razvijali prateći standardni MVC obrazac, predstavljalo je u zahtevnijim implementacijama veoma ozbiljno ograničenje za jednu ili drugu stranu, a najčešće za obadve,
- da bi se fokus kreacije programera usmerio ka rešavanju stvarnih izazova i proširenju mogućnosti platforme ili konkretnih, specifičnih zahteva korisnika. Cilj je da proširenja platforme daju dodatnu vrednost ne samo za tekući nego i za sve naredne, ali i projekte koji su već u produkciji,
- da bi se standardizovala izrada delova sistema za koje imamo „najbolje rešenje“. Jasno je da je broj najboljih informatičkih rešenja beskonačan. Čak i za veoma jednostavne koncepte i dan danas bi se mogla ponovo otkriti nova i još bolja rešenja. Međutim, ova otkrića, najverovatnije neće doneti vrednost za projekte i sisteme unutar kojih bi bila primenjena, odnosno vrednost koju bi dala ne bi opravdala povezani trošak. Za nas je standard zagarantovana vrednost u primeni, odnosno u ovom trenutku „najbolje rešenje“.
Gde je platforma razvijena i primenjena, da li su izvorni kodovi javno publikovani?
- Platforma je u potpunosti razvijena u E-Smart Systems d.o.o. i predstavlja intelektualno dobro našeg preduzeća,
- Rešenja razvijena na ESS platformi koriste: Stada a.g, NIS a.d., Aerodrom Nikola Tesla, ESS QCA, KB UBS i Ministarstvo Saobraćaja,
- Kodovi rešenja za sada nisu publikovani na javnom repozitorijumu (GitHub), ali se nadamo da ćemo i to uskoro uraditi
Kada je otpočeo i kako je tekao razvoj platforme?
- Početak rada na razvoju vezan je za 2016. godinu. Od tada do danas platforma je doživela značajne arhitekturne skokove koji su svaki za sebe obezbedili standardizaciju u veoma važnim oblastima. U istom periodu projekat je redovno upgrade-ovan na najvišu verziju .NET Core, tako da je danas u operativnom radu na verziji 6.0,
- Prvo unapređenje iz 2017. godine obezbedilo je standardizaciju iz domena dinamičkog generisanja korisničkog inerfejsa (Dynamics). U slučaju ESS platforme stvoren je koncept „mutable data structure“-a koji obezbeđuje upravljanje mašinama stanja bez potrebe ponovnog deklarisanja ili instanciranja elemenata UI u periodu dizajna (design time),
- Unapređenja iz 2018. godine odnosila su se na standardizaciju konfiguracije Master data podataka, Signal-R, korišćenja konfiguracije iz različitih data store-ova (SQL server), dok razvoj i dalje ostaje vezan za mongo DB,
- U toku 2019. klijentski deo platforme je povezan sa IndexdDB, razvijeni su kontroleri za komunikaciju sa M365, napravljena je prva integracija sa oidc identity provider-ima,
- U toku 2020. konfiguracija UI je integrisana u Visual Studio projekat/solution, razvijen je novi model kontrolera sa standardizovanom unutrašnjom strukturom, ekstenzije koje obezbeđuju intellisense u procesu konfiguracije,
- U toku 2021. napravljen je jedinstveni projektni template i standard integracije u CI/CD procese Azure DevOps-a. Na ovaj način je obezbeđena bolja koordinacija rada na unapređenjima i centralni repozitorijum za code review,
- U toku 2022. godine, standardizovani su mehanizmi logovanja, mehanizmi autentikacije i autorizacije zasnovani pre svega na OAuth/oidc, uvedena podrška za docker kontejnere.
Šta ustvari predstavlja platformu?
- ESS platforma predstavlja ASP.NET Core rešenje koje na klijentskoj strani prati single-page-application obrazac zasnovan na JSON konfiguraciji,
- Ključni serverski deo platforme predstavlja dispečer kontroler – semi REST kontroler sa specifičnom konfigurabilnom mapom rutiranja koja obezbeđuje prosleđivanje HTTP GET/POST zahteva prema specifičnim kontrolerima poslovne logike,
- Kontroleri poslovne logike prate command pattern, implementiraju zajednički platformski interfejs preko koga ih aktivira dispečer kontroler i potpuno su međusobno nezavisni. Kontroleri se od strane dispečer kontrolera aktiviraju preko refleksije, mogu se nezavisno instalirati, a u sistemu se mogu jednostavno zameniti i rerutirati u toku rada,
- Konfiguracija korisničkog interfejsa bazirana je na JSON dokumentima i dostupna kako komponentama serverskog tako i komponentama klijentskog dela aplikacije,
- Klijentski deo aplikacije poziva servisne metode kontrolera (preko dispečer kontrolera) koristeći REST pozive, kojima u POST body šalje odgovarajuće podatke sačuvane u data strukturama na klijentu, a u skladu sa konfiguracijom,
- Autentifikacija i autorizacija na sistem u celini ili za pojedinačnu rutu deo su konfiguracije sistema. Sistem može biti konfigurisan tako da prihvata više tipova autentifikacije i više identity provider-a u okviru iste sesije autorizovanog korisnika.
Kako se koristi platforma?
- Proces razvoja na ESS Platformi obuhvata sledeće faze:
- identifikaciju podataka, dinamiku i konstrukciju korisničkog interfejsa,
- konfiguraciju korisničkog interfejsa i razvoj dummy kontrolera,
- Razvoj poslovne logike i baza podataka uključujući i servise poslovne logike koji se trigeruju događajima koji nisu povezani sa krajnjim korisnicima,
- Razvoj deployment okruženja, Azure DevOps pipe-line i kontejnera.
- Projekti se instanciraju koristeći predefinisane obrasce (Visual Studio Project Template),
- Svaki solution referencira platformu, jedan ili više standardnih kontrolera, kontroler u kome je implementirana konfiguracija UI i specifične kontrolere poslovne logike,
- Prilikom build-a, izvršne verzije kontrolera kao i fajlovi specifični za konkretan projekat se automatski kopiraju u file strukturu platforme. Konfiguracija UI je embedovana u dll fajl kontrolera konfiguracije, čime su dodatno zaštićeni osetljivi tehnički podaci.
Ko je učestvovao u razvoju platforme?
- Razvojni tim E-Smart Systems, sa visokom dozom entuzijazma, kreativnog potencijala i posvećenosti problemima korisnika:
- special kudos za Mariju Aleksandrić za veliki broj hrabrih unapređenja, nesebičnoj podršci mlađim članovima tima i beskonačnom optimizmu,
- special kudos za Vladu Kočinca za kod koji blista, pristup koji ne poznaje prepreke i pesimizam koji vraća u realnost :),
- special kudos za Stanislavu Jovanović za posvećen doprinos vizuelnom identitetu gotovo svih projekata realizovanih na ESS platformi,
- special kudos za Mirka Cumba i Svetislava Nedeljkovića za pionirski rad na tehnološkim proširenjima iz svih oblasti, istrajan rad na uvek „bodljikavim“ projektima za javni sektor,
- special kudos za Mariju Živanović koja prati razvoj platforme od najranijih verzija u različitim ulogama, i analitičkim pristupom doprinosi višem nivou kvaliteta rešenja realizovanih na platfoormi
- special kudos za Jasnu Gmitrović na vrednim doprinosima razvoja obrazaca serverske i klijentske logike koji zahtevaju značajnu koncentraciju i preciznost,
- special kudos za Andreu Pilipović, Katarinu Jovanović, Jovanu Pešić, Živojina Milića, Nikolu Stojkovića i Jovana Grbića za razumevanje i posvećenost profesionalnoj izuzetnosti, vrednim rezultatima koji za projekte na kojima su radili obezbeđuju odličnu osnovu za dalji razvoj i unapređenja,
- extra special kudos project manager-ima koji su bili tu da nas podrže i zaštite 🙂 Nikoli Grbiću, Biljani Rolović i program manager-u Ranku Brajoviću,
- special kudos testerima Teodori Radosavljević i Milošu Krstiću, na dodatnom nivou obezbeđenog kvaliteta,
- extra extra 🙂 special kudos Ani Marković, koja je uvek tu da poveže znanjem i iskustvom različite tehnologije, projekte, a posebno podatke i pruži šansu platformi da osvoji prostore koje su zauzimale neke prethodne tehnologije i rešenja
- i svima onima koji su za ovih pet godina učestvovali u zajedničkom radu i građenju ESS Platforme: Andreju Stanojkoviću, Ivani Živanić, Aleksandru Đuriću, Ivanu Špagnutu, Goranu Jeriniću, Nikoli Iliću, Miljanu Milovanoviću, Aleksandri Kovačević, Đorđu Uroševiću, Nemanji Subotiću, Filipu Novoviću, Igoru Rodiću i Mateji Veljkoviću.
Kao i svi oni koji procesom razvoja softvera samostalno upravljaju, neprestano težimo tome da ovaj proces učinimo efikasnijim i efektivnijim.
Uticaj ljudi na kreativni razvoj sistema, a time i softvera prema Conway-ovom zakonu, duboko je uslovljen postojećim obrascima komunikacije. Onako kako komuniciraju korisnici, moraju u toku razvoja da komuniciraju i programeri, a samim tim i komponente koje razvijaju.
Dizajniranje microservice arhitekture sistema zasnovane na jasno razdvojenim celinama koje se mogu nezavisno razvijati i slobodno međusobno komunicirati predstavlja cilj kome težimo.
Na tom putu, ESS platforma predstavlja alat osmišljen da nam pomogne da što manje lutamo.
Zaista je pravo zadovoljstvo raditi sa Mirnom na jednom ovakvom poduhvatu i biti deo razvoja platforme kroz sve ove godine. Neverovatno je koliko je napredovala od svoje prve verzije!
the pleasure is all mine 🙂
Sjajan tekst! Sjajan i tim!