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ó    

    Mikroszolgáltatások és konténeralapú szoftverfejlesztés

    A tantárgy angol neve: Microservices and Container-based Software Development

    Adatlap utolsó módosítása: 2019. március 13.

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

    Mérnök-informatikus Szak

    Villamosmérnök Szak

    BSc és MSc képzés

    Szabadon választható tantárgy
    Tantárgykód Szemeszter Követelmények Kredit Tantárgyfélév
    VIAUAV42   1/0/1/f 2  
    3. A tantárgyfelelős személy és tanszék Dr. Dudás Ákos, Automatizálási és Alkalmazott Informatikai Tanszék
    4. A tantárgy előadója

    Név:

    Beosztás:

    Tanszék, Int.:

    Dr. Dudás Ákos

    docens

    Automatizálási és Alkalmazott Informatikai Tanszék

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

    Elosztott rendszerek ismerete

    Adatbázisok ismerete

    6. Előtanulmányi rend
    Ajánlott:

    Kötelező: Nincs.

    Ajánlott: Szoftverarchitektúrák (BMEVIAUMA06) vagy Elosztott rendszerek és szakterületi modellezés (BMEVIAUMA01)

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

    A mikroszolgáltatások (microservices) architektúra a szoftverfejlesztés modern irányát képviseli. Komplex és nagy terhelésre tervezett rendszerek estén ez az architektúra adja a tervezhető, átlátható léptékű alkalmazásokat, a skálázhatóságot, és a folyamatosan változó rendszer alkalmazkodóképességét. A konténer technológiák pedig a kényelmes telepítés és egyszerű üzemeltetés lehetőségét biztosítják.

    A tárgy keretében bemutatásra kerülnek a konténeralapú rendszerek fejlesztésének sajátságos aspektusai, és a mikroszolgáltatások tervezésének lépései, valamint terítékre kerülnek mikroszolgáltatás rendszerekben gyakran alkalmazott megoldások, mint az elosztott naplózás, megfigyelhetőség (tracing), az „eventually consistent” programozási modell, és API gateway-ek koncepciója. Emellett bemutatásra kerül, hogy a „DevOps” módszertant a szoftverfejlesztés hogyan tudja segíteni, és milyen előnyei vannak a konténer alapú fejlesztés- és üzemeltetésnek a szoftverfejlesztő szempontjából.

    8. A tantárgy részletes tematikája

    Az előadások és laboratóriumok együtt kerülnek megtartásra. Az elméleti ismeretek az óra elején kerülnek bemutatásra, majd azt követően a laboratórium rész a téma gyakorlati oldalát ismerteti, a hallgatókkal együtt készítve el egy-egy kis alkalmazást, demó rendszert.

    Hét

    Előadás anyaga

    1.

    Bevezetés. Elosztott rendszerek alapproblémái, a monolitikus és mikroszolgáltatások architektúra bemutatása, mikroszolgáltatás alapú rendszerek tervezése.

    2.

    Konténer alapú szoftverfejlesztés alapjai, Docker alapvető működése, Docker-konténerek felépítése, Dockerfile írása, docker CLI használata. Kontéer-kompatibilis szoftverfejlesztői környezetek.

    3.

    Több komponensből álló rendszer futtatása konténer alapokon, Docker-compose fájlok és használatuk.

    4.

    Állapotkezelés mikroszolgáltatások környezetben, adattárolási architektúrák, gyakran használt adatbázis rendszerek (Elasticsearch, Mongodb).

    5.

    Tranzakciókezelés elosztott környezetben, „eventually consistent” modell.

    6.

    Naplózás és alkalmazás monitorozás elosztott, mikroszolgáltatás alapú rendszerekben, „health check”-ek implementálása a mikroszolgáltatásokban.

    7.

    API Gateway-ek használata, útvonal irányítás mikroszolgáltatás alapú rendszerekben. Url alapú útvonalválasztás.

    8.

    Mikroszolgáltatások közötti kommunikáció http és message queue alapon; alternatív kommunikációs protokollok (pl. protobuf). Üzenetvesztés és megbízható kommunikáció; üzenet ismétlés, circuit-breaker, throttle minták.

    9.

    Kérések nyomkövetése szolgáltatások között, OpenTracing szabvány-alapú rendszerek.

    10.

    Konténerek a DevOps folyamatban. Konténer-alapú fordítás, „Docker-in-docker” modell, Azure DevOps használata.

    11.

    A Kubernetes platform alapjai, alkalmazás telepítése Kubernetes platformra, Podok és Deploymentek használata.

    12.

    A Kubernetes platform alapjai, DaemonSet, Ingress, CronJob használata. Helm chart készítése.

    13.

    Mikroszolgáltatás keretrendszerek: Orleans. Mikroszolgáltatás platformok a felhőben (PaaS): Azure Service Fabric.

    14.

    Házi feladat bemutatása.

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

    Előadás, laboratórium

    10. Követelmények

    A szorgalmi időszakban:

    (1) Az előadások és laborok látogatása, legalább a kontakt órák 70%-án való részvétel. Az elmulasztott alkalmak nem pótolhatóak.

    (2) A félév végéig egy házi feladat elkészítése, forráskódjának feltöltése az oktató által meghatározott helyre, majd bemutatása futtatható állapotban. A házi feladat a félév elején meghatározott kontextusban egy mikroszolgáltatások architektúrájú alkalmazás elkészítése, mely a tanult technológiákat használja, és a hallgató demonstrálni tudja a működését.

     

    A végső jegy a házi feladatra kapott érdemjegy. A házi feladat értékelése pontrendszer alapján történik: egy-egy alkalmazott módszerrel, technológiával előre meghatározott mennyiségű pont szerezhető, melyek összeadva adják a kapott érdemjegyet.

    11. Pótlási lehetőségek

    Ez előadások és laborok pótlására nincs lehetőség.

    A házi feladatot a szorgalmi időszak végéig be kell adni; pótlása a pótlási időszakban lehetséges.

    12. Konzultációs lehetőségek

    Igény szerint előadóval egyeztetve.

    13. Jegyzet, tankönyv, felhasználható irodalom

    ·         Előadásanyag, oktatói jegyzet

    ·         Sam Newman: Building Microservices: Designing Fine-Grained Systems, 1st Edition, 2015, ISBN: 978-1491950357.

    ·         Susan J. Fowler: Production-Ready Microservices: Building Standardized Systems Across an Engineering Organization, 1st Edition, 2016, ISBN: 978-1491965979.

    ·         Chris Richardson, Floyd Smith: Designing and Deploying Microservices (ebook): https://www.nginx.com/resources/library/designing-deploying-microservices/

    ·         Microsoft Cloud Design Patterns (online): https://docs.microsoft.com/en-us/azure/architecture/patterns/

    ·         Docker: Get started with Docker (online): https://docs.docker.com/get-started/

    ·         kubernetes: Learn Kubernetes Basics (online): https://kubernetes.io/docs/tutorials/kubernetes-basics/

    14. A tantárgy elvégzéséhez átlagosan szükséges tanulmányi munka
    Kontakt óra28
    Félévközi készülés órákra12
    Felkészülés zárthelyire0
    Házi feladat elkészítése20
    Kijelölt írásos tananyag elsajátítása0
    Vizsgafelkészülés0
    Összesen60
    15. A tantárgy tematikáját kidolgozta

    Név:

    Beosztás:

    Tanszék, Int.:

    Dr. Dudás Ákos

    docens

    Automatizálási és Alkalmazott Informatikai Tanszék

    Benedek Zoltán

    tanársegéd

    Automatizálási és Alkalmazott Informatikai Tanszék