Cilj i ishod predmeta
Kreiranje sinhronih i asinhronih mikroservisa. Kreiranje DevOps tokova za mikroservise i njihova skalabilna implementacija. Eksponiranje klastera mikroservisa kao API. Prihvatanje osnovnih koncepata miskroservisnih veb aplikacija. Praktična primena stečenog znanja na razvoj robusne mikroservisne aplikacije korišćenjem Spring Boot i Spring Cloud framework-a, Netflix OSS. Pakovanje aplikacije u Docker kontejnere i definisanje deployment pipeline-a. Teorijski osvrt na orkestraciju mikroservisa (Docker Swarm, Kubernetes).
Teorijska nastava
Arhitektura i osobine mikroservisnih aplikacija. Koraci u provođenju monolitne u mikroservisnu arhitekturu. Slučajevi upotrebe mikroservisa. Razvoj aplikacija zasnovanih na metodologiji ”12 faktora” (12-factor app) – najbolje prakse za razvoj održivih, skalabilnih i portabilnih aplikacija. Poređenje mikroservis arhitektura, SOA i arhitektura monolitnih aplikacija. Protokoli, paradigme i obrasci na kojima se zasnivaju mikroservis arhitekture: komunikacija preko HTTP protokola, REST API, deklarativni HTTP klijenti, Message Broker, Service Discovery, API Gateway, Circuit Breaker. Različite implementacije mikroservisa – domenski orijentisane arhitekture (Data-driven), programiranje vođeno događajima (Event-driven). Upravljanje distribuiranim bazama podataka. Agregiranje logova mikroservisa i njihovo razumevanje. Bezbednost aplikacija zasnovanih na mikroservisima. Upotreba mikroservisa kod IoT aplikacija. Projektovanje IoT posrednog sloja (middleware) upotrebom mikroservisa.
Praktična nastava
DevOps razvojna kultura i praksa kontinuirane integracije i kontinuiranog deployment-a (CI/CD). Upoznavanje sa alatima za praćenje verzija koda i aplikacija (Git, Jenkins). Upoznavanje sa različitim strategijama testiranja (Unit testing, Integration testing, Canary Testing, A/B testing). Izolovanje aplikacija u Docker kontejnere (pisanje Dockerfile-a, registar Docker image-a), orkestracija kontejnera, skaliranje mikroservisne aplikacije. Rad sa bazama podataka u mikroservisnoj arhitekturi uključujući relacione i nerelacione baze. Korišćenje Hiberante ORM alata za perzistenciju podataka. Komunikacija između mikroservisa i korišćenje sistema za razmenu poruka. Razvoj konkretnih mikroservisa za određene primene kod IoT.