ESS WEB Platforma

Mirna Kojić VeljovićAutor Mirna Kojić Veljović15. 06. 2022. Blog

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?

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.

 

Privacy Preference Center