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ó    

    Skálázható szoftverek

    A tantárgy angol neve: Scalable Software 

    Adatlap utolsó módosítása: 2023. január 12.

    Budapesti Műszaki és Gazdaságtudományi Egyetem
    Villamosmérnöki és Informatikai Kar
    Mérnökinformatikus, MSc, Szoftverfejlesztés főspecializáció
    Tantárgykód Szemeszter Követelmények Kredit Tantárgyfélév
    VIAUMB11   2/1/0/v 5  
    3. A tantárgyfelelős személy és tanszék Dr. Kővári Bence András,
    A tantárgy tanszéki weboldala www.aut.bme.hu
    4. A tantárgy előadója

    Dr. Kővári Bence, egyetemi docens, AUT

    Simon Gábor, ügyvivő szakértő, AUT

    Tóth Tibor, ügyvivő szakértő, AUT

    Albert István, mérnöktanár, AUT
    5. A tantárgy az alábbi témakörök ismeretére épít Adatbázisok, számítógépes hálózatok, objektum orientált programozás
    7. A tantárgy célkitűzése

    A hallgató megismerkedik a horizontálisan skálázható szoftverfejlesztés kihívásaival, mintáival, tervezési megközelítésivel, telepítési megoldásaival, architektúrális döntéseivel. A tárgy fókuszba helyezi azokat az architektúrális mintákat, amelyek követése segíti a jó teljesítménnyel működő skálázható szoftverek készítését: mikroszolgáltatások, serverless megoldások, MSA patternek. A tárgy áttekinti az ezen minták alkalmazását támogató szoftverplatformokat, illetve felhőszolgáltatásokat. A hallgató így gyakorlatot szerez skálázható szoftverek fejlesztésében mind felhőbeli mind felhőtől független környezetben.

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

     

    Előadások: 

     

    Előadás anyaga

    1.

    Bevezetés, skálázható szoftverek kihívásai, monolitikus és mikroszolgáltatások architektúra bemutatása, teljesítményproblémák, szűk keresztmetszetek (esettanulmányok)

    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éner-kompatibilis szoftverfejlesztői környezetek.

    3.

    Orkesztrációs technológiák, több komponens futtatása konténer alapokon, Docker-compose fájlok és használatuk. A Kubernetes platform alapjai, alkalmazás telepítése Kubernetes platformra, Podok és Deploymentek használata, DaemonSet, Ingress, CronJob használata.

    4.

    Állapotkezelés elosztott környezetben, adattárolási architektúrák. Tranzakciókezelés elosztott környezetben, „eventually consistent” modell.

    5.

    Naplózás és alkalmazás monitorozás elosztott rendszerekben, „health check”-ek implementálása.

    6.

    Kérések nyomkövetése szolgáltatások között, OpenTracing szabvány-alapú rendszerek. Teljesítménymérés, szűk keresztmetszetek azonosítása.

    7.

    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. Service mesh-ek.

    8.

    Bevezetés a számítási felhők világába. Üzleti igények és trendek. Megoldási szintek és alternatívák (SaaS, IaaS, PaaS). Skálázódás a felhőben.

    9.

    Azure konténer és Kubernetes alapú szolgáltatások (ACR, ACA, AKS).

    10.

    Serverless, Function-as-a-Service platformok áttekintése.

    11.

    Cloud native serverless architektúrákban előforduló Azure szolgáltatások áttekintése. Állapottároló, üzenetkezelő és orkesztrációs szolgáltatások. API gateway, útválasztás, terheléselosztó szolgáltatások.

    12.

    Cloud native serverless architekturális minták.

    13.

    Kitekintés egyéb elosztott keretrendszerek és platformok irányába, például Orleans, Azure Service Fabric.

     Az előadások anyagának feldolgozását segítendő, illetve a szükséges előismeretek megszerzéséhez a tárgyhonlapon külön segédanyagokat teszünk közzé, melyek elsajátítása önállóan történik.

    Gyakorlatok: 

     

     

    Gyakorlat anyaga

    1.

    Konténerizációs technológiák használata

    2.

    Adatkezelési minták alkalmazása

    3.

    Kommunikációs minták alkalmazása

    4.

    Azure Kubernetes Services alkalmazás készítése és futtatása

    5.

    Naplózás és nyomkövetés beüzemelése, terhelésteszt, skálázódás tesztelése

    6.

    FaaS alkalmazás készítése és futtatása


    9. A tantárgy oktatásának módja (előadás, gyakorlat, laboratórium) Előadás és önállóan elvégzendő gyakorlat, melyhez a folyamatos online támogatás mellett kétheti rendszerességgel 2 órás konzultációs lehetőséget is biztosítunk
    10. Követelmények

    Szorgalmi időszakban

    Az aláírás feltétele:

    -          A gyakorlatok során kiadott 6 önállóan megoldandó feladatból legalább 4 teljesítése

     

    Vizsgaidőszakban

    A vizsgajegy megszerezhető házi feladat megoldásával, vagy szóbeli vizsgán.

    -          A hallgatók a félév során előre egyeztetett nagyfeladatot oldanak meg önállóan, ezen 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ő. A pontrendszer a félév kezdetétől ismert, mely alapján a hallgatók maguk állíthatják össze a vállalt feladataikat, így külön feladatkiírások a nagyfeladathoz nincsenek. A házi feladatok bemutatásának végső határideje az utolsó vizsga időpontja.

    -          VAGY szóbeli vizsgát tesz TVSZ szerint szervezve a tárgy anyagából

     

    11. Pótlási lehetőségek A fenti követelmények esetében pótlási lehetőség nincs
    12. Konzultációs lehetőségek A tárgy előadójával történt egyeztetés szerint
    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 óra42
    Félévközi készülés órákra14
    Felkészülés zárthelyire0
    Házi feladat elkészítése30
    Kijelölt írásos tananyag elsajátítása20
    Vizsgafelkészülés44
    Összesen150
    15. A tantárgy tematikáját kidolgozta

    Dr. Kővári Bence, docens, AUT

    Dr. Dudás Ákos, docens, AUT

    Simon Gábor, ügyvivő szakértő, AUT

    Tóth Tibor, ügyvivő szakértő, AUT

    Albert István, mérnöktanár, AUT