Микросервисне апликације

Циљ и исход предмета

Креирање синхоних и асинхроних микросервиса. Креирање DevOps токова за микросервисе и њихова скалабилна имплементација. Експонирање кластера микросервиса као API. Прихватање основних концепата мискросервисних веб апликација. Практична примена стеченог знања на развој робусне микросервисне апликације коришћењем Spring Boot и Spring Cloud framework-а, Netflix OSS. Паковање апликације у Доцкер контејнере и дефинисање деполоyмент пипелине-а. Теоријски осврт на оркестрацију микросервиса (Docker Swarm, Kubernetes).

Теоријска настава

Архитектура и особине микросервисних апликација. Кораци у провеђењу монолитне у микросервисну архитектуру. Случајеви употребе микросервиса. Развој апликација заснованих на методологији ”12 фактора” (12-factor app) - најбоље праксе за развој одрживих, скалабилних и портабилних апликација. Поређење микросервис архитектура, SOA и архитектура монолитних апликација. Протоколи, парадигме и обрасци на којима се заснивају микросервис архитектуре: комуникација преко HTTP протокола, REST API, декларативни HTTP клијенти, Message Broker, Service Discovery, API Gateway, Circuit Breaker. Различите имплементације микросервиса - доменски оријентисане архитектуре (Data-driven), програмирање вођено догађајима (Event-driven). Управљање дистрибуираним базама података. Агрегирање логова микросервиса и њихово разумевање. Безбедност апликација заснованих на микросервисима. Употреба микросервиса код IoT апликација. Пројектовање IoT посредног слоја (middleware) употребом микросервиса.

Практична настава

DevOps развојна култура и пракса континуиране интеграције и континуираног deployment-a (CI/CD). Упознавање са алатима за праћење верзија кода и апликација (Git, Jenkins). Упознавање са различитим стратегијама тестирања (Unit testing, Integration testing, Canary Testing, A/B testing). Изоловање апликација у Доцкер контејнере (писање Dockerfile-a, registar Docker image-a), оркестрација контејнера, скалирање микросервисне апликације. Рад са базама података у микросервисној архитектури укључујући релационе и нерелационе базе. Коришћење Hiberante ORM алата за перзистенцију података. Комуникација између микросервиса и коришћење система за размену порука. Развој конкретних микросервиса за одређене примене код IoT.