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

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

Креирање синхроних и асинхроних микросервиса. Креирање DevOps токова за микросервисе и њихова скалабилна имплементација. Експонирање кластера микросервиса као API. Прихватање основних концепата мискросервисних веб апликација. Практична примена стеченог знања на развој робусне микросервисне апликације коришћењем Spring Boot и Spring Cloud framework-а, Netflix OSS. Паковање апликације у Docker контејнере и дефинисање deployment pipeline-а. Теоријски осврт на оркестрацију микросервиса (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). Изоловање апликација у Docker контејнере (писање Dockerfile-a, registar Docker image-a), оркестрација контејнера, скалирање микросервисне апликације. Рад са базама података у микросервисној архитектури укључујући релационе и нерелационе базе. Коришћење Hiberante ORM алата за перзистенцију података. Комуникација између микросервиса и коришћење система за размену порука. Развој конкретних микросервиса за одређене примене код IoT.

5791-mikroservisne-aplikacije