Osnove i Arhitektura Web Tehnologija: Od HTTP-a do Mikroservisa i Cloud Koncepata
Enviado por Anónimo y clasificado en Otras materias
Escrito el en
serbocroata con un tamaño de 30,86 KB
WWW – Osnove (HTTP, HTML, URL)
WWW (World Wide Web) predstavlja mrežu dokumenata, to jest resursa, povezanih preko hiperteksta koji sadrži reference, takozvane hiperlinkove. Resursi na Web-u su identifikovani pomoću URL-a (Uniform Resource Locator). Resursi na Web-u i njegovi dokumenti prenose se na način definisan pravilima HTTP-a (Hypertext Transfer Protocol). Resursima se pristupa preko Web browser-a.
Osnovni element Web-a su stranice koje su kreirane pomoću markup jezika HTML-a. HTML sadrži strukturu i sadržaj strane. URL predstavlja jedinstveni identifikator resursa na Web-u. Preko njega se navodi način transfera resursa (protokol), kao i njegova lokacija na Web-u.
Primer: http://www.asdf.com/abcd.html
- http je protokol koji se koristi za razmenu.
- www.asdf.com je ime hosta, odnosno mašine na kojoj se nalazi resurs.
- .com predstavlja domen u kome je taj resurs registrovan.
Web aplikacija
Web aplikacija je aplikacija kojoj klijenti pristupaju pomoću Web browser-a. Za aplikacije se vezuje postojanje serverske strane i klijentske strane. Serverska strana se može sastojati iz nekoliko slojeva:
- Web server: Prvi server kome se pristupi kada se izvrši bilo kakva akcija u browser-u. Njegova glavna namena je da vrši komunikaciju sa klijentom koristeći HTTP protokol.
- Aplikacioni server: Drugi sloj servera koji se bavi logikom same aplikacije i može u pozadini vršiti sve stvari vezane za sam rad Web aplikacije, kao što su održavanje mreže, slanje poruka, obrada ulaza i izlaza.
- Server baze podataka (DBMS server): Poslednji sloj namenjen skladištenju i upravljanju podacima.
Klijentska strana izvršava se na Web browser-u. Danas je moguće da se deo logike prikaza prebaci na klijenta, koji bi pomoću skripti pribavljenih od servera mogao da ažurira prikaz.
Desktop vs. Mobilne vs. Web aplikacije
Web aplikacije, zbog načina na koji se izvršavaju, nemaju pristup lokalnim podacima i sistemu korisnika, već za svrhe skladištenja mora da se predvidi baza (recimo na serveru koji pokreće aplikaciju, na posebnom serveru ili distribuirana u cloud-u).
Glavne razlike između desktop i mobilnih aplikacija proističu iz osobina uređaja za koje su namenjene. Obe vrste aplikacija zavisne su od operativnog sistema uređaja. Desktop aplikacije su često lakše i intuitivnije za korišćenje, s obzirom na veličinu ekrana na kojoj se prikazuju. Takođe, snaga samih desktop mašina pruža mogućnost za izvršavanje kompleksnijih operacija u odnosu na mobilne aplikacije. Uz to, danas je neophodno brinuti o činjenici da mobilne aplikacije treba prilagoditi i vertikalnom i horizontalnom prikazu. Mobilne aplikacije pružaju mogućnost specifičnih funkcionalnosti koje računari nemaju, kao što je na primer rad sa više kamera.
Napredni protokoli komunikacije: WebSocket i WebRTC
WebSocket
WebSocket je protokol aplikativnog nivoa za full-duplex komunikaciju između klijenta i servera (obe strane mogu da šalju podatke istovremeno). Koristi HTTP za handshake, a TCP za komunikaciju (jednu konekciju). Omogućava bržu komunikaciju od HTTP-a.
Handshake koristi HTTP Upgrade zaglavlje za prelazak iz HTTP u WebSocket konekciju. Nakon handshake-a, kompletna komunikacija se odvija preko jedne TCP konekcije i traje sve dok se ta veza ne zatvori. Koristi UTF-8 format za predstavljanje podataka. Koristi se uglavnom za chat, online igre, itd. Poznata .NET implementacija je SignalR.
WebRTC
WebRTC je besplatan, open-source projekat, skup protokola (nije sam po sebi pojedinačni protokol) i API-ja za real-time audio/video komunikaciju u browser-u pomoću peer-to-peer komunikacije, bez dodavanja plugin-ova. Problem je što se komplikuje sa više od dvoje učesnika, a mana je što može otkriti pravu IP adresu kroz VPN tunel.
Arhitektura Web Aplikacija
Prezentacioni sloj klijentske strane je sloj koji je najbliži korisniku, odnosno onaj sa kojim korisnik interaguje. Za izradu se koriste:
- HTML: Za definisanje strukture stranice.
- CSS: Za kreiranje stylesheet-ova i stilizovanje.
- JavaScript: Za definisanje ponašanja elemenata u odnosu na korisnikove akcije ili promene u bazi.
Za dostavljanje elemenata prezentacionog sloja korisniku zadužen je specijalni softver – Web browser. Za ispravan rad klijentske strane koristi se i lokalni memorijski prostor. Cookies (kolačići) predstavljaju podatke koji se smeštaju u lokalnu memoriju klijenta nakon pristupanja nekom Web sajtu ili aplikaciji. Nakon ponovnog pristupa tom sajtu, po memoriji se traže kolačići vezani za taj sajt. Na dnu klijentske strane nalazi se operativni sistem.
Što se tiče servera, unutar njega postoji više celina:
- Logički sloj: Zadužen za održavanje biznis-logike same aplikacije i za vršenje obrade podataka iz baze.
- Sloj Web servera: Osnovne dužnosti su komunikacija sa klijentom putem HTTP protokola. Danas se u ove svrhe najčešće koriste usluge poznatih web-hosting kompanija. Najpoznatiji Web serveri su Apache, Apache Tomcat i Nginx.
- Sloj skladištenja: Zadužen za skladištenje i perzistenciju podataka. Ovaj sloj podrazumeva i DBMS komponentu koja direktno manipuliše bazom. Koriste se poznati DBMS-ovi kao što su Oracle DBMS, MySQL, SQL Server.
- Infrastruktura servera: Predstavlja server u najnižem, hardverskom pogledu. Od velikog je značaja da ova infrastruktura bude jaka i izdržljiva.
- Cloud: Premeštanjem servera na udaljene računare, serverska logika aplikacije izvršava se na jakim deljenim računarskim resursima.
Aplikacioni sloj predstavlja najviši sloj TCP/IP modela, koji se ogleda u postojanju protokola visokog nivoa za razmenu podataka između aplikacija. Najvažniji protokol ovog sloja je HTTP protokol.
Klijentska Strana
Na klijentskoj strani imamo HTML kao jezik koji definiše strukturu i sadržaj strane, CSS za raspored i izgled elemenata, i JavaScript za ponašanje stranice.
Glavni izazovi su:
- Korisničko iskustvo (UX) i Korisnički interfejs (UI).
- Performanse: Važno je da se klijentske performanse povećaju što je više moguće.
- Cross-browser i cross-platform izvršavanje: Aplikaciju je potrebno da podrže svi browser-i i sve platforme.
- Mnoštvo tehnologija koje vrlo brzo napreduju.
Klijentska strana na početku se ogledala u statičkim Web stranama sa kojima korisnik nije mogao da interaguje. SPA (Single-Page Applications) su aplikacije koje sadrže jednu stranicu čiji se sadržaj dinamički menja u skladu sa zahtevima korisnika. Kod njih je neophodno obezbediti efikasnu manipulaciju DOM-om.
Modeli Klijent-Server Komunikacije
Modeli komunikacije se dele na PULL i PUSH modele:
-
PULL model: Klijent mora izričito da zahteva podatke od servera. Nedostatak je što za stalno ažuriranje klijent mora neprestano slati zahteve.
- HTTP: Klijent šalje zahtev za svaki podatak, na šta server odgovara porukom (Request - Response).
- POP3: Email protokol gde klijent povlači pristigle poruke sa mailbox servera.
- RSS: Povremeno šalje zahteve određeni sajmovima radi preuzimanja najnovijih informacija.
-
PUSH model: Server samoinicijativno šalje promene klijentima čim se one dogode. Zasniva se na Publisher/Subscriber odnosu. Primeri su:
- Web Push notifikacije.
- HTTP/2: Uz traženi podatak, server šalje dodatne resurse za koje pretpostavlja da će trebati klijentu.
- WebSocketi: Dvosmerna veza u realnom vremenu.
- Long-polling: Server drži vezu otvorenom sve dok ne dobije nove podatke; čim stignu, šalje odgovor i zatvara vezu.
Serverska Strana
Serverska strana sadrži logički sloj za izvršavanje poslovne logike (PHP, Node.js, C#). Web server je sloj zadužen za komuniciranje sa klijentom, prihvatanje i prosleđivanje zahteva (Nginx, Apache). Sloj za skladištenje predstavlja sloj baze podataka (relacione baze, NoSQL).
Server se može širiti:
- Horizontalno: Dodaje se novi računar/čvor.
- Vertikalno: Unapređuje se postojeći računar (dodavanjem RAM-a, CPU-a).
Izazovi Serverske Strane
- Skalabilnost: Mnogo korisnika može zahtevati istovremeni pristup serveru. Rešenje može biti kreiranje klastera više servera koji se klijentima predstavljaju kao jedan server. Primenjuje se princip Load Balancing-a gde se upravlja saobraćajem između više servera koristeći unapred definisane pravila i algoritme.
- Sigurnost: Server treba da garantuje sigurnost podataka i zabrani neovlašćeni pristup. Ključni elementi su:
- Autentifikacija: Provera identiteta (username i password).
- Autorizacija: Dodeljivanje prava pristupa korisnicima.
- Zaštita od SQL Injection-a: Sprečavanje ubacivanja zlonamernih SQL komandi u upit.
- DDoS (Distributed Denial of Service): Situacija u kojoj napadači namerno preopterećuju server kako bi iskoristio sve resurse i prestao da funkcioniše.
Tipovi DDoS napada:
- Volumetric Attacks: Klijent učestalo šalje veliki broj lažnih paketa, pa server mora da se bavi njima i na kraju ih odbaci, ali je u međuvremenu nedostupan za prave klijente.
- Napadi aplikacionog sloja: Šalje se veliki broj zahteva preko najviših, aplikacionih protokola (HTTP, SMTP...).
- Protocol Attacks: Koriste specifičnosti određenih mrežnih protokola i pravila uspostavljanja konekcije.
Evolucija HTTP Protokola
- HTTP/1.0: Stateless protokol (ne pamti stanje), pa server koristi cookies u zaglavlju kako bi zapamtio klijenta. Koristi metode poput GET, POST i PUT i podržava razne formate, ali je spor jer za svaki par zahtev-odgovor otvara novu TCP konekciju. Ima 16 statusnih kodova i ne enkriptuje podatke, pa su presretanja i neovlašćena autentifikacija lako izvodljivi.
- HTTP/1.1: Uvodi perzistentnu vezu (keep-alive), što znači da se ista konekcija koristi za više zahteva. Uveden je i pipelining za istovremeno slanje više zahteva, mada tu prvi zahtev može blokirati ostale (Head-of-Line blocking). Ima 24 statusna koda, a sigurnost je poboljšana kodiranjem podataka, uvođenjem "one-time value" koda za check-sumu i ograničavanjem vremena važenja osetljivih poruka.
- HTTP/2.0: Prevodi zahteve u binarni format i deli ih na frame-ove sa tagovima radi lakšeg spajanja. Ključna prednost je istovremeno slanje različitih podataka kroz više stream-ova preko samo jedne TCP konekcije (multipleksiranje). Komunikacija je ubrzana uvođenjem Server Push modela i HPACK kompresije zaglavlja.
- WebSocket: Pruža brzu full-duplex dvosmernu vezu preko jedne TCP konekcije sa UTF-8 kodiranjem, oslobođenu teških zaglavlja klasičnog HTTP-a. Komunikacija počinje HTTP zahtevom uz
Upgradezaglavlje (handshake).
HTTP Metode i Poruke Odgovora
Metode Zahteva (Request Methods)
- GET: Pribavljanje traženih podataka sa servera.
- HEAD: Traži samo zaglavlje odgovora (identično kao GET, ali bez tela poruke).
- POST: Slanje potpuno novog resursa na odredište (podaci se nalaze u telu zahteva).
- PUT: Ažuriranje postojećeg resursa ili kreiranje novog na tačno određenoj adresi (menja sve podatke).
- PATCH: Parcijalno ažuriranje resursa na konkretnoj adresi (u telu nosi samo izmenjene vrednosti).
- DELETE: Brisanje navedenog resursa sa servera.
- CONNECT: Uspostavljanje mrežne veze/tunela sa serverom na kom se nalazi resurs.
- OPTIONS: Traženje informacija o opcijama i parametrima konekcije.
- TRACE: Testira i prati putanju do servera; svaki čvor na putu vraća status 200 dok ne stigne do cilja ili dok broj skokova ne padne na nulu.
Poruke Odgovora (Response Messages)
Prva linija zaglavlja specificira HTTP verziju i statusni kod:
- 1xx (Obaveštenja): Informativni kodovi o statusu obrade.
- 2xx (Uspešno): Zahtev je uspešno primljen i obrađen (npr.
200 OK). - 3xx (Redirekcija): Preusmeravanje klijenta (npr.
301 Moved Permanently). - 4xx (Greška klijenta): Zahtev sadrži lošu sintaksu ili ne može biti ispunjen (npr.
400 Bad Request,404 Not Found). - 5xx (Greška servera): Server nije uspeo da ispuni validan zahtev (npr.
500 Internal Server Error,505 HTTP Version Not Supported).
Header Fields (Polja Zaglavlja)
- Connection: Određuje sudbinu veze (
closeilikeep-alive). - Content-Length: Veličina tela odgovora u bajtovima.
- Content-Type: Format i tip podataka u telu (npr.
text/html,image/png). - Date: Datum i vreme kada je odgovor poslat.
- Expires: Datum i vreme do kada sadržaj poruke važi.
- Location: Nova adresa traženog resursa prilikom preusmeravanja.
Nakon zaglavlja sledi telo poruke (body) sa konkretnim podacima.
HTML5
HTML (HyperText Markup Language) je jezik za definisanje strukture i sadržaja Web strane. Kod se renderuje u pretraživaču. Na osnovu tagova kreira se DOM stablo koje prikazuje hijerarhijsku strukturu stranice i povezanost ugnježdenih tagova (roditelj–dete odnosi).
Tagovi su gradivni elementi. Sintaksa obuhvata otvarajući <tag> i zatvarajući </tag>. Postoje i samozatvarajući tagovi poput <img />. Atributi se nalaze unutar otvarajućeg taga i menjaju njegova svojstva (npr. class="naziv").
<!DOCTYPE html> je deklaracija na početku dokumenta koja definiše verziju HTML-a. Osnovna struktura:
<html>: Krovni tag koji obuhvata celu stranicu.<head>: Sadrži metapodatke, naslov strane, linkove ka CSS i JS fajlovima.<body>: Sadrži sve elemente koji se prikazuju na stranici.
Semantički elementi jasnije ukazuju na ulogu sadržaja: <main> (glavni sadržaj), <header> (zaglavlje), <footer> (podnožje), <nav> (navigacija), <section> (tematska celina), <details> (dodatne informacije), <time> (vreme/datum), <figure> (medijski sadržaj).
CSS i Stilizovanje Web Stranica
CSS (Cascading Style Sheets) je jezik za stilizovanje i formatiranje Web stranica. Odvajanjem koda u posebne .css fajlove izbegava se dupliranje stilova, olakšava održavanje i smanjuje opterećenje HTML dokumenata.
CSS Box Model se sastoji od sledećih komponenata:
- Content: Sam sadržaj elementa (tekst, slika).
- Padding: Unutrašnje odstojanje od sadržaja do ivice elementa.
- Border: Ivica koja uokviruje element.
- Margin: Spoljašnje odstojanje od susednih elemenata.
Progresivno Poboljšanje (Progressive Enhancement) vs. Graceful Degradation
Progresivno poboljšanje je pristup gde se stranica razvija slojevitim dodavanjem funkcionalnosti:
- HTML (Baza): Osnovni sadržaj i funkcionalnosti dostupni svima.
- CSS (Sredina): Dodaje se za stilizovanje i raspored.
- JavaScript (Vrh): Dodaje napredne interaktivne i responsive funkcionalnosti.
Suprotan pristup je Graceful Degradation: prvo se pravi složena stranica za najnaprednije uređaje, pa se funkcionalnosti naknadno prilagođavaju ili gaše za slabije pretraživače.
CSS Selektori
- Selekcija tipa (taga): Stilizuje sve elemente datog taga (npr.
h1 { border: 1px solid black; background-color: red; }). Moguće je i grupisanje:h1, h2, h3 { ... }. - Selekcija klasa: Koristi se tačka ispred naziva klase (npr.
.klasa { ... }). Moguća je kombinacija:.klasa1.klasa2 { ... }. - Selekcija ID-a: Koristi se znak
#ispred ID-ja (npr.#ID1 { ... }). - Selekcija atributa: Odnosi se na atribute unutar uglastih zagrada
[...]:=: Tačna vrednost atributa.*=: Atribut sadrži datu podnisku (npr.[class*="aaa"]odgovara klasamaaaa,aaab,baaa).^=: Vrednost atributa počinje datim nizom.$=: Vrednost atributa se završava datim nizom.
Responsive Dizajn: Flexbox i CSS Grid
Responsive dizajn je automatsko prilagođavanje izgleda stranice veličini ekrana.
- CSS Grid Layout: Dvodimenzionalni sistem raspoređivanja. Roditeljski element dobija
display: gridilidisplay: inline-grid, a njegova direktna deca postaju grid elementi. - Flexbox Layout: Jednodimenzionalni sistem raspoređivanja. Roditelj dobija
display: flex, aflex-directionodređuje smer (row,column).
Ključna Flexbox svojstva:
flex-grow: Udeo i brzina širenja elementa.flex-shrink: Brzina smanjivanja elementa pri skupljanju ekrana.flex-basis: Početna veličina elementa pre raspodele slobodnog prostora.flex-wrap: Određuje da li elementi prelaze u novi red.justify-content: Poravnanje duž glavne ose.align-items: Poravnanje duž poprečne ose.align-content: Poravnanje linija potomaka duž poprečne ose.order: Redosled prikazivanja elemenata.align-self: Pojedinačno poravnanje konkretnog elementa.
Prenos Podataka sa Klijenta na Server
Klijent šalje podatke serveru putem HTTP metoda:
- GET: Podaci se šalju u query string-u (deo URL-a). Ograničene je dužine i ne sme menjati stanje na serveru.
- HEAD: Identična GET metodu, ali bez tela u odgovoru.
- POST / PUT: Slanje podataka u telu zahteva (omogućava veće količine podataka i binarne fajlove). URL ostaje čist.
- DELETE: Brisanje resursa na serveru.
Za prenos velikih fajlova koristi se FTP, dok se za prenos u realnom vremenu (audio/video) koriste streaming protokoli poput RTSP i HLS.
AJAX i CORS
AJAX (Asynchronous JavaScript and XML) je skup klijentskih tehnika koje omogućavaju dinamičku promenu sadržaja Web stranice bez ponovnog učitavanja cele strane. Umesto osvežavanja, šalje se asinhroni zahtev serveru samo za podacima koji su izmenjeni. Danas se umesto starijeg XMLHttpRequest objekta koristi moderna fetch funkcija. Odgovor najčešće stiže u JSON formatu umesto XML-a.
CORS (Cross-Origin Resource Sharing) je bezbednosni mehanizam koji kontroliše pristupe resursima na drugim domenima. Po podrazumevanoj vrednosti primenjuje se Same-Origin policy, koji dozvoljava zahteve samo ako klijent i server imaju potpuno isto poreklo (poklapaju se protokol, host/domen i port).
Formati Odgovora Servera
- HTML: Služi za prezentaciju i vizuelni prikaz u browser-u.
- XML: Služi za prenos i struktuiranje podataka. Tagovi nisu predefinisani.
- JSON: Jednostavan, lagan i nezavistan od jezika, izuzetno lak za parsiranje u JavaScript-u. Nedostaci su izostanak podrške za metapodatke i namespace-ove.
- Protocol Buffers (Protobuf): Google-ov format za serijalizaciju binarnih podataka. Znatno je manji i brži od XML-a i JSON-a.
Klijentski modeli obuhvataju Thin client (nema poslovnu logiku, prikazuje spremne HTML stranice sa servera) i Fat client (izvršava deo logike lokalno, od servera prima samo sirove JSON/XML podatke).
XML Tehnologije i Parseri
- XML Namespaces: Sprečavaju konflikt naziva tagova iz različitih izvora.
- XML Schema (XSD): Definiše strukturu i vrši validaciju XML dokumenta (naprednija zamena za DTD, podržava tipove podataka).
- XPath: Jezik za pretragu i navigaciju kroz XML dokument.
- XSL: Jezik za stilizovanje XML-a. Sastoji se iz XSLT (transformacija u drugi format), XPath i XSL-FO (formatiranje izlaza).
- XLink i XQuery: XLink dodaje veze između resursa, dok je XQuery upitni jezik za XML.
DOM vs. SAX Parseri
- DOM (Document Object Model): Učitava kompletan XML dokument u memoriju i pravi stablo. Omogućava nasumičan pristup i izmenu bilo kog čvora, ali troši puno memorije i sporiji je za velike fajlove.
- SAX (Simple API for XML): Čita dokument sekvencijalno, element po element (event-driven). Izuzetno je brzi i troši minimalno memorije, ali ne pravi stablo pa nije moguće kretanje unazad.
Poređenje XML, HTML i JSON-a
XML vs. HTML: XML je namenjen prenosu podataka i nema predefinisane tagove, te je stroži po pitanju sintakse. HTML služi prikazu podataka i ima predefinisane tagove.
XML vs. JSON: Obavezno parsiranje JSON-a vrši se direktno kroz JavaScript, dok XML zahteva poseban XML parser. JSON je kraći, brži i podržava nizove.
JSON i Web Server Arhitektura
JSON (JavaScript Object Notation) je format za serijalizaciju objekata. Objekat počinje sa { i završava se sa }, a niz sa [ i ]. Vrednosti mogu biti string, broj, boolean, null, objekat ili niz. Široko se koristi u REST servisa i AJAX aplikacijama.
Web Server je mašina i softver koji prima HTTP zahteve i vraća odgovore (Apache, Nginx, IIS, Tomcat). Može generisati kompletan HTML ili dinamički vraćati JSON podatke. Najčešće serverske tehnologije su PHP, .NET Framework / .NET Core, Python (Django) i Node.js.
ORM Alati (Object-Relational Mapping)
ORM alat omogućava preslikavanje između objektnog modela (klasa i svojstava) i relacionog modela baze podataka (tabele i kolona):
- Code-First: Prvo se pišu modelske klase u kodu, a na osnovu njih generiše baza podataka.
- Database-First: Model u kodu generiše se na osnovu postojeće baze podataka.
Popularni ORM alati su Entity Framework i NHibernate (.NET), kao i Doctrine i Zend (PHP).
Load Balancing (Raspoređivanje Opterećenja)
Load Balancer je uređaj ili softver koji prima sve pristigle zahteve i raspoređuje ih na više serverskih mašina radi optimalnog iskorišćenja resursa. Neki od najpoznatijih algoritama za raspodelu su: Round Robin, Weighted Round Robin, Least Connections, Least Response Time i IP Hash.
Cloud Computing i Serverless Arhitektura
Cloud computing omogućava pribavljanje računarskih resursa (skladište, procesorska snaga) na zahtev putem interneta. Prednosti su niži troškovi, brzina i skalabilnost, dok su rizici zavisnost od provajdera i bezbednost.
Modeli usluga:
- IaaS (Infrastructure as a Service): Iznajmljuju se virtuelne mašine, mreža i skladište (korisnik upravlja OS-om i aplikacijama).
- PaaS (Platform as a Service): Iznajmljuje se razvojna platforma (korisnik brine samo o aplikaciji i podacima).
- SaaS (Software as a Service): Iznajmljuje se gotov softver (npr. Gmail, Dropbox).
Serverless arhitektura ne znači odsustvo servera, već da programer ne brine o infrastrukturi, konfiguraciji i održavanju servera. Naplata se vrši striktno po utrošenim resursima i izvršenjima. Njen ključni deo je FaaS (Function as a Service) koji omogućava pokretanje pojedinačnih funkcija u oblaku na odziv događaja.
Web Servisi (RPC, SOAP, REST, GraphQL)
Web servisi omogućavaju razmenu podataka između aplikacija preko mreže.
- RPC (Remote Procedure Call): Omogućava pozivanje funkcija na udaljenom serveru kao da su lokalne. Koristi proxy i stub strukture.
- SOAP: Protokol zasnovan na RPC-u i XML-u. Koristi WSDL za opis interfejsa i podržava visoke mrežne i bezbednosne standarde.
- REST (Representational State Transfer): Arhitekturni stil gde je sve resurs sa jedinstvenim URL-om. Koristi standardne HTTP metode i pretežno JSON format. RESTful servisi su implementacije koje dosledno prate REST principe, uključujući statelessness (nečuvanje stanja sesije na serveru).
- GraphQL: Upitni jezik otvorenog koda koji klijentu omogućava da precizno navede koje podatke želi da dobije u odgovoru, čime se izbegavaju *over-fetching* i *under-fetching*. Podržava Query (čitanje) i Mutation (izmena) operacije. Odgovor je uvek JSON.
Moderne Web Aplikacije: SPA i PWA
- SPA (Single Page Application): Web aplikacija u kojoj se učitava samo jedna HTML stranica, a sadržaj se dinamički osvežava pomoću AJAX-a i JSON-a bez ponovnog osvežavanja cele stranice. Pruža brze reakcije, ali ima sporije inicijalno učitavanje.
- PWA (Progressive Web Application): Web aplikacija koja koristi Service Worker-e i Web App Manifest kako bi pružila doživljaj nalik nativnim mobilnim aplikacijama (rad van mreže, push notifikacije, pristup kameri i GPS-u). Prednost je što ne zavisi od prodavnica aplikacija (App Store).
Mikroservisna Arhitektura i gRPC
Mikroservisi su strukturni stil u kom se aplikacija deli na skup manjih, nezavisnih servisa od kojih svaki obavlja specifičnu funkciju i poseduje sopstvenu bazu podataka. Između klijenta i servisa često stoji API Gateway.
Prednosti: nezavisan razvoj i deploy, skalabilnost, upotreba različitih tehnologija.
Mane: složena međusobna komunikacija, upravljanje distribuiranim transakcijama, testiranje.
gRPC: Google-ov okvir za brz udaljeni poziv procedura koji koristi binarnu serijalizaciju (Protocol Buffers). Zbog male potrošnje resursa i podrške za obostrano strimovanje (bidirectional streaming), pogodan je za inter-serversku komunikaciju i IoT uređaje.
Virtualizacija, Kontejnerizacija i Orchestration
Virtualizacija omogućava pokretanje više virtuelnih mašina sa odvojenim operativnim sistemima na istom hardveru pomoću Hypervisor-a (Bare-metal ili Hosted).
Kontejnerizacija je virtualizacija na nivou operativnog sistema gde kontejneri dele kernel istog OS-a, zbog čega su lakši i brži od virtuelnih mašina.
- Docker: Alat za pakovanje aplikacije i njenih zavisnosti u Docker Image, iz koga se pokreće Docker Container.
- Docker Compose: Alat za definisanje i upravljanje aplikacijama sa više kontejnera.
- Kubernetes i Docker Swarm: Alati za orkestraciju koji upravljaju automatskim skaliranjem, mrežom i stanjem kontejnera u klasteru.
WebAssembly, Blazor i Blockchain
- WebAssembly (Wasm): Binarni format niskog nivoa koji omogućava izvršavanje koda pisanog u jezicima poput C++, Rust ili C# direktno u pretraživaču sa performansama bliskim nativnim.
- Blazor: Microsoft-ov framework koji omogućava kreiranje interaktivnih klijentskih Web aplikacija koristeći C# i .NET umesto JavaScript-a. Može raditi kao Blazor Server (događaji idu preko SignalR-a) ili kao Blazor WebAssembly (C# kod se izvršava direktno u pretraživaču).
- Blockchain: Decentralizovana i distribuirana digitalna knjiga transakcija u kojoj su blokovi povezani kriptografskim heš vrednostima. Promene se verifikuju putem algoritmima konsenzusa (Proof-of-Work, Proof-of-Stake), što pruža visoku otpornost na manipulacije. Primenjuje se u kriptovalutama, pametnim ugovorima i praćenju lanaca snabdevanja.