DevOps

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

Оспособити студенте да брзо, поуздано и скалабилно изграде, тестирају и одржавају софтверске производе. Студенти раумеју савремени животни циклус софтвера кроз развој, континуалну интерацију и континуалну испоруку на софтверско тржиште. Користе неопходне алате у пројектовању инфаструктуре за пласирање, конфигурисање, тестирање и праћење софтвера.

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

Софтвер као производ – интеграција развоја и оперативе (DevOps). DevOps процеси: дизајн, развој, изградња, тестирање, објављивање, инсталирање, оператива, праћење и анализа. Аутоматизација, мерења и користи од појединих процеса. Организационе промене, аутоматско тестирање, укидање засебних QA тимова и креирање нових тимова за руковање инцидентима. Животни циклус инцидента и обезбеђивање квалитета. Примери обезбеђивања квалитета: Amazon (You build it, you run it), Google (Site Reliability Engineering), Facebook (Production Engineering). Мерења и метрике. DORA (DevOps Research and Assessment). Основни DevOps алати. Инфраструктура као кôд. Праћење недостатака и управљање конфигурацијом. Контејнери и оркестрација. Континуална интеграција и испорука. Аутоматско верзионисање. Стратегије инсталирања. Постпродукционо тестирање – скенирање и Chaos Engineering. Service Level Agreement (SLA), Service Level Objective (SLO) и Service Level Indicator (SLI). Заштита података и ресурса. Софтверски ланац снабдевања (библиотеке, код, хардвер и алати који трансформишу код у производ или услугу). Увод у DevSecOps. Слабости и рањивости. Аутентификација, ауторизација и управљање креденцијалима. Опоравак од катастрофе. План опоравка. Дефиниција RPO (Recovery Point Objective) и RTO (Recovery Time Objective). Модел опоравка у 4 слоја. Примарни и секундарди дата центар. Репликација, учесталост резервних копија и брзина опоравка. Аутоматски и ручни прелазак на други датацентар (Failover).

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

Виртуелизација. Виртуелне машине. Контејнери и контејнерски репозиторијуми. Serverless архитектуре. Рад са DevOps алатима. Docker. Оркестрација контејнера. Docker Swarm. Kubernetes. Подови и сервисне мреже (Istio, Open Service Mesh). Безбедност контејнера. Аутоматизација изградње (Apache Ant, Maven). Праћење и аналитика система (Datadog). Инфраструктура као кôд (SaltStack, Ansible). Праћење недостатака (Atlassian Jira, Apache Allura). Континуална интеграција и континуална испорука (Jenkins). Пример комплетне DevOps аутоматизације употребом GitLab CI/CD pipeline.