Budapest University of Technology and Economics, Faculty of Electrical Engineering and Informatics

    Belépés
    címtáras azonosítással

    vissza a tantárgylistához   nyomtatható verzió    

    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.

    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, Méréstechnika és Információs Rendszerek Tanszék
    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