DevOps: A rendszerfejlesztés és üzemeltetés kapcsolódása

A tantárgy angol neve: DevOps: Connection Between System Development and Operations

Adatlap utolsó módosítása: 2019. április 6.

Tantárgy lejárati dátuma: 2023. július 31.

Budapesti Műszaki és Gazdaságtudományi Egyetem
Villamosmérnöki és Informatikai Kar

Mérnökinformatikus szak

Választható tantárgy

Tantárgykód Szemeszter Követelmények Kredit Tantárgyfélév
VIMIAV21   1/0/1/f 2  
3. A tantárgyfelelős személy és tanszék Dr. Szatmári Zoltán,
4. A tantárgy előadója

Dr. Szatmári Zoltán adjunktus, Méréstechnika és Információs Rendszerek Tanszék

5. A tantárgy az alábbi témakörök ismeretére épít

Operációs rendszerek

Számítógépes hálózatok

 

7. A tantárgy célkitűzése

A tantárgy célkitűzése, hogy megismertesse a hallgatókat az informatikai rendszerek fejlesztésének támogatásával és üzemeltetésével kapcsolatos technológiákkal, a DevOps szerepkör betöltéséhez szükséges ismeretekkel, és áttekintést nyújtson ezek széles alkalmazási lehetőségeiről. A tantárgy az informatikai rendszerek fejlesztési és üzemeltetési életciklusának bemutatása után végighalad az egyes fázisokon, bemutatja az ezeket támogató keretrendszereket, automatizációs lehetőségeket és az aktuálisan elterjedt technológiai megoldásokat. A tárgy keretében bemutatott technológiákat labor keretében ki is próbáljuk.

A tantárgy elvégzése után a hallgatók képesek lesznek arra, hogy

  • átlássák a fejlesztés és üzemeltetés területeken felmerülő problémákat,
  • megértsék a fenti területek kapcsolódását és
  • tudjanak automatizálási technológiákat alkalmazni a munkájuk során.
8. A tantárgy részletes tematikája

1.      Bevezető. Az informatikai rendszerek fejlesztési és üzemeltetési életciklusának bemutatása: a fejlesztés, fordítás, csomagolás, tesztelés, integráció, telepítés és üzemeltetési lépések általános bemutatása, automatizálási lehetőségei, a DevOps kultúra és szerepkör megjelenése, pozíciója és tipikus feladatai a szervezeten belül.

2.      Fejlesztéstámogató, verziókezelő és fordítási technológiák: a fejlesztés során használt és elvárt, a csoportmunkát és későbbi üzemeltetést támogató megoldások alkalmazásai. A verziókezelő rendszerek használatának korszerű módszertanai (Git-GitFlow) és a fordítást támogató keretrendszerek (Gradle, Maven) alkalmazása, automatizálása.

Labor: Ismerkedés a Git használatával, a GitFlow módszertannal és a Gradle, vagy Maven fordítást támogató keretrendszerrel.

3.      Folytonos integráció (CI) és keretrendszerek: a fejlesztést támogató keretrendszerek feladata, azok illeszkedése a fejlesztési módszertanba. Az integrációs szintek áttekintése és automatizáció különböző fokozatainak bemutatása. Az integrált keretrendszerek bemutatása, konfigurációjuk és alkalmazásuk az általános módszertanban. CI/CD keretrendszerek (Jenkins, TravisCI) bemutatása, GUI-alapú és leíróalapú konfigurációs megoldások összevetése.

Labor: Ismerkedés a Jenkins és a TravisCI rendszerekkel.

4.      Virtualizációs technológiák: a különböző szintű virtualizációs technológiák áttekintése, automatizálási és központosított menedzsment lehetőségeik. Automatikus virtuális gép építési folyamatokhoz kapcsolódó technológiák (Packer, Vagrant) és alkalmazásaik heterogén környezetekben.

Labor: Virtuális gép építés Packer és Vagrant technológiával

5.      Konténer virtualizációs technológiák: a konténer virtualizációs megoldások architekturális felépítése, alapfogalmainak áttekintése, hálózati és lemezképeinek felépítése és alkalmazása az automatizált alkalmazástelepítésben (Docker, Docker-compose, Kubernetes). A konténer technológiák illeszkedése a folytonos integráció világába és gyakorlati alkalmazásai a Contunious Deployment megközelítés keretében.

Labor: A Docker alapvető fogalmainak kipróbálása, a Docker-compose megismerése.

6.      Cloud technológiák és az IaaS, PaaS és SaaS technológiákhoz kapcsolódó automatizációs megoldások: a cloud computing pozícionálása a rendszertelepítés és üzemeltetés területén. A cloud technológiák alkalmazásának lehetőségei, valamint kapcsolódása a fejlesztési életciklus és folytonos integrációs folyamatokba. A különböző szintű cloud szolgáltatásokhoz kapcsolódó szolgáltatások: virtuális gépek, hálózati háttérismeretek, OS lemezképek, terheléselosztók, skálázási lehetőségek áttekintése és automatizációs megoldásaik, kapcsolódásuk a folytonos telepítés folyamatába.

Labor: Az AWSwebes konzoljának megismerése és alapvető szolgáltatásainak kipróbálása.

7.      A Microservice rendszerek fejlesztési ciklusának támogatása és a Cloud-Native megközelítés: a Microservice architektúra és az ilyen sémára való fejlesztés támogatásának bemutatása, a kapcsolódó jó gyakorlatok áttekintése. A kapcsolódó szolgáltatástípusok (szolgáltatásfelderítés, telepítés, skálázás) áttekintése és a Cloud Native Computing Foundation ajánlásainak és kategóriáinak bemutatása.

Labor: A Cloud Native Computing Foundation ajánlásainak áttekintése, a Consul, CoreDNS, Envoy és HAProxy technológiák kipróbálása.

8.      Telepítési környezetek, konfiguráció: a fejlesztői környezettől az éles környezetig, a konfigurációt támogató konfigurációmenedzsment technológiák és automatizálási módszerek bemutatása. Az „Environment as a code" szemlélet.

Labor: Ismerkedés az Ansible és TerraForm technológiával

9.      Az alkalmazástelepítés szintjei: az alkalmazástelepítés granularitásának meghatározása, az egyszerű bináristól a virtuális gép szintjéig. Az alkalmazástelepítési célok, módszerek és lehetőségek áttekintése.

Labor: A különböző szintű csomagolási módszerek megismerése és a kapcsolódó konfigurációs lehetőségek tesztelése.

10.  Cloud-Native alkalmazások fejlesztése, integrációja: a fejlesztési módszertanokhoz és tervezési mintákhoz kapcsolódó komponensek, fejlesztési technológiák (pl. Java Spring Boot), adatbázisrendszerek (pl. MariaDB, Elasticsearch), authentikációs megoldások (Oauth, SAML), integrációs megoldások (Swagger).

Labor: Ismerkedés integrációs technológiákkal és elemi komponensekkel.

11.  Monitoring és biztonsági mentés: a folyamatos üzemeltetéshez kapcsolódó technológiák áttekintése, a monitoring (CollectD, InfluxDB, Prometeus, Grafana, Nagios), archiválás és biztonsági mentés technológiák cloud környezetben.

Labor: A Prometheus és Grafana rendszerek kipróbálása, rsync-alapú biztonsági mentés tesztelése

12.  Felhő és konténer alapú rendszerek üzemeltetése: hálózatszervezés, hálózati szeparáció megvalósítása, megfigyelési és felügyeleti kérdések a bemutatott cloud- és konténeralapú technológiákhoz.

Labor: A Docker és AWS hálózati megoldások tesztelése.

13.  Hibakeresési módszerek és eszközök: analízis eszközök a hardver, operációs rendszer és hálózati rétegekben. A magas szintű naplózás, metrika gyűjtő és monitoring (pl. AWS CloudWatch)  rendszerektől haladva hibakeresés egyre elemibb komponensei felé az alapvető Linux kernel paraméterek vizsgálatáig.

Labor: Az AWS CloudWatch és Simple Notification Service megismerése.

14.  Házi feladatok bemutatása

9. A tantárgy oktatásának módja (előadás, gyakorlat, laboratórium)

Heti egy alkalommal 90 perc tantermi foglalkozás, melyből az első 45 perc előadás és a második 45 perc a témához kapcsolódó számítógépes laborfoglalkozás.

10. Követelmények

A szorgalmi időszakban: házi feladat vagy tanulmány elkészítése egy kapcsolódó témáról a szorgalmi időszak végéig.

A kredit megszerzésének feltétele a házi feladat vagy tanulmány elkészítése, melynek osztályzata képezi a félév végi jegyet.

 

11. Pótlási lehetőségek A házi feladat a pótlási héten pótolható (különeljárási díj ellenében).
12. Konzultációs lehetőségek Az oktatóval előre egyeztetett időpontban.
13. Jegyzet, tankönyv, felhasználható irodalom

A főbb segédanyagok listája mellett a hallgatókat a félév során további publikációkkal és technológiai segédanyagokkal látjuk el.

  • Michael Hüttermann: „DevOps for Developers", Aspress, 2012.
  • Joakim Verona: „Practical DevOps", Packt, 2016.
  • Top 10 challenges to DevOps implementation (2017):
    https://www.techrepublic.com/article/top-10-challenges-to-devops-implementation/
  • Michael Duffy: „DevOps Automation Cookbook", Packt, 2015
  • Duvall, Paul M., Steve Matyas, and Andrew Glover. Continuous integration: improving software quality and reducing risk. Pearson Education, 2007.
14. A tantárgy elvégzéséhez átlagosan szükséges tanulmányi munka
Kontakt óra28
Készülés előadásra7
Készülés laborra 3
Házi feladat elkészítése22
Kijelölt írásos tananyag elsajátítása 
Vizsgafelkészülés 
Összesen60
15. A tantárgy tematikáját kidolgozta

Dr. Szatmári Zoltán

adjunktus

MIT

Dr. Micskei Zoltán

egyetemi docens

MIT

Egyéb megjegyzések