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