Tantárgy » BMEVITMMA22
Felhőalapú hálózati szolgáltatások programozása Go nyelven
Cloud Network Service Programing in Go
A tantárgyleírás hatályossága
Hatályosság kezdete:
2026. March 21.
Hatályosság vége:
—
| Tantárgy neve (magyarul, angolul) |
Felhőalapú hálózati szolgáltatások programozása Go nyelven
Cloud Network Service Programing in Go
|
||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Tantárgykód | BMEVITMMA22 | ||||||||||||
| Tantárgyjelleg | — | ||||||||||||
| Képzési szint | — | ||||||||||||
| Kurzustípusok és óraszámok (heti/féléves) |
|
||||||||||||
| Tanulmányi teljesítmény/értékelés típusa | vizsga | ||||||||||||
| Tantárgy kreditértéke | 5 | ||||||||||||
| Tantárgyfelelős |
DR. Rétvári Gábor Ferenc
elérhetőség:
retvari.gabor@vik.bme.hu
|
||||||||||||
| Tantárgyat gondozó oktatási szervezeti egység |
Távközlési és Mesterséges Intelligencia Tanszék
|
||||||||||||
| Kar | Villamosmérnöki és Informatikai Kar | ||||||||||||
| Tantárgy weboldala | — | ||||||||||||
| Tantárgy elsődleges mintatantervi jellege | — | ||||||||||||
| Közvetlen előkövetelmények – Erős előkövetelmény | nincs | ||||||||||||
| Közvetlen előkövetelmények – Gyenge előkövetelmény | nincs | ||||||||||||
| Közvetlen előkövetelmények – Párhuzamos előkövetelmény | nincs | ||||||||||||
| Közvetlen előkövetelmények – Mérföldkő előkövetelmény | nincs | ||||||||||||
| Közvetlen előkövetelmények – Kizáró feltétel | nincs |
Célkitűzés
Tantárgyprogram
Az előadások részletes tematikája:
- Bevezetés a cloud-native fejlesztésbe. A monolitikus alkalmazásoktól az elosztott mikroszolgáltatás-alapú alkalmazásokig, az elosztott alkalmazások fejlesztésében leggyakrabban felmerülő félreértések (Fallacies of distributed computing). A cloud-native fejlesztési filozófia. A Kubernetes.
- A Go programozás alapjai I. Go történelem. Go nyelvi elemek: változók, deklarációk, láthatóság, adattípusok (tömbök, szeletek, struktúrák), vezérlési szerkezetek. Függvények.
- A Go programozás alapjai II. Struktúrák, metódusok, hibakezelés, interfészek. Csomagok, importálás, tesztelő függvények, hibakeresés. Egy esettanulmány.
- A Go programozás alapjai III. Konkurens programok fejlesztése Go-ban, a CSP konkurencia modell. Go rutinok, szálak, csatornák, versenyhelyzetek és a mutexek.
- Cloud-native fejlesztési minták: Immutability. HTTP szolgáltatások fejlesztése Góban. Alkalmazás és erőforrás állapotok, a beágyazott állapotok veszélyei. Perzisztencia tranzakciós naplófájl használatával. Az "immutability" szerepe.
- Cloud-native fejlesztési minták: Idempotency. A RESTful APIk jellemzői és megvalósításuk Go nyelven. Konkurens adatstruktúrák használata, szinkronizáció csatornákkal. Állapotok kiszervezése külső adatbázisba. Az "újrapróbálhatóság" és az "idempotency" szerepe.
- Cloud-native programtervezési minták: Resiliency I. Mikroszolgáltatások: motiváció, jellemzők. Minták megbízható kliens oldali alkalmazások fejlesztésére: circuit breaker, timeout, retry. A "retry storm" megelőzése, az "exponential random backoff" retry stratégia.
- Cloud-native programtervezési minták: Resiliency II. Minták megbízható elosztott szerver oldali alkalmazások fejlesztésére: throttle/rate-limiter és debounce minta. A "retry storm" megelőzése szerver oldalon a rate-limiting segítségével.
- Cloud-native programtervezési minták: Scalability. A vertikális és horizontális skálázás. Konkurens programtervezési minták: fan-in, fan-out, future, sharding. A terheléselosztás: round-robin, konzisztens hash, "power of two choices". Automatikus skálázás.
- Cloud-native programtervezési minták: Observability. Megfigyelhetőség az elosztott alkalmazások üzemeltetésében. Az idősor (time series) adatbázisok és a Prometheus, metrikák, Prometheus kliens használata Go nyelven. A dashboard-ok szerepe.
- Cloud-native programtervezési minták: Lazy coupling. A lazán csatolás szerepe a felhő alkalmazásokban: API verziók, API gateway-ek. Lazán csatolást támogató nyelvi elemek Go-ban. APIk definíciója az OpenAPI segítségével, a gRPC. A hexagonális architektúra.
- A szolgáltatáshálók I. A cloud-native programtervezési minták beépítése az infrastruktúrába, a sidecar proxy architektúra és az alkalmazás-szintű hálózati virtualizáció. Az Istio. Health-checking, retry/timeout, load-balancing és circuit breaker Istioban. Káosztesztelés és a mesterséges hibák előidézése (fault injection).
- A szolgáltatáshálók II. Forgalommenedzsment: HTTP routing és rewriting a szolgáltatáshálók fölött. Continuous delivery, DevOps és GitOps, a "canary rollout" stratégia támogatása Istio felett. Biztonsági szolgáltatások az Istioban: a mikroszegmentáció, Mutual TLS. A "distributed tracing".
- Házi feladatok bemutatása.
A gyakorlatok/laborok részletes tematikája:
- Docker és Kubernetes alapok, legfontosabb Kubernetes absztrakciók (Pod, ReplicaSet, Deployment, Service, ClusterIP, DNS), lokális Kubernetes környezet telepítése, egy mintaalkalmazás. Fejlesztési környezet kialakítása, Go eszközök megismerése, ‘Hello world' program írása és egyéb példafeladatok megoldása.
- Egyszerű HTTP szolgáltatás beágyazott állapotokkal, konténer építése, Kubernetes telepítés és tesztelés. A skálázás hatása round-robin és "sticky sessions" terhelés-megosztással, és az újraindítás hatása a beágyazott állapotokra.
- Egyszerű key-value store fejlesztése Go nyelven. HTTP kérések indítása Go nyelven, kliens alkalmazás. Konténer építése, Kubernetes telepítés, tesztelés. Egyszerű mikroszolgáltatás alapú mintaalkalmazás összeállítása a HTTP alkalmazás és a key-value store segítségével.
- Hálózati hibák és késleltetések kezelése kliens oldalon: timeout/retry egyedi Go kódokkal, generikus minták. Hálózati hibák és késleltetések kezelése a szerver oldalon: rate-limiting egyedi Go kódokkal, generikus minták.
- A sharding megvalósítása a key-value store-ban. Kubernetes telepítés a StatefulSet absztrakció használatával. Horizontális skálázás és terheléselosztás. Alkalmazás-specifikus monitoring információk exportálása a key-value store-ból a Prometheus kliens segítségével. A Prometheus operátor, a "scraping" beállítása. Dashboard készítése a Grafana segítségével.
- A korábban fejlesztett mikroszolgáltatás alapú alkalmazás integrálása Istio fölé. HTTP routing, load-balancing, timeout és circuit breaker központi konfigurációja Istioban, a megfelelő kódrészletek eltávolítása az alkalmazásból, tesztelés. Mikroszegmentáció a minta-alkalmazásban. Monitoring.
A tárgy célja a cloud-native programtervezési minták bemutatása a Go programozási nyelv elemeinek segítségével. Ezek a minták lehetővé teszik a megbízhatatlan és folyton változó felhő környezetben megbízható és skálázható elosztott mikroszolgáltatás-alapú hálózati alkalmazások fejlesztését.
A hallgatók a félév végére elsajátítják a Go nyelv alapjait, megismerik a cloud-native fejlesztésben legfontosabb Go nyelvi konstrukciókat, és képesek a Go sztenderd könyvtárában megtalálható modulok segítségével önállóan összetett hálózati szolgáltatásokat fejleszteni. A félév második felében a hallgatók megismerkednek a cloud-native szoftverfejlesztés legfontosabb programtervezési mintáival, megtanulják ezek Go nyelvi implementációját, és egy konkrét mikroszolgáltatás-alapú hálózati alkalmazás fejlesztésének példáján megérthetik az egyes minták jelentőségét. Végül a hallgatók megismerhetik a szolgáltatáshálók architektúráját, és a cloud-native programfejlesztési minták automatizálását és deklaratív konfigurációját.
Tanulmányi eredmények
Ez a tantárgy a KKK rendeletben meghatározott, következő kompetenciák fejlesztését szolgálja:
Tudás
Nincsenek rögzített tanulási eredmények.
Képességek
Nincsenek rögzített tanulási eredmények.
Attitűd
Nincsenek rögzített tanulási eredmények.
Autonómia és felelősség
Nincsenek rögzített tanulási eredmények.
Oktatási módszertan
Előadás, kiscsoportos egyéni ill. vezetett gyakorlat.
Tanulástámogató anyagok
Online források
• Matthew A. Titmus - Cloud Native Go (ISBN: 9781492076339); • Mina Andrawos, Martin Helmich - Cloud Native programming with Golang (ISBN: 9781787125988); • Alan A. A. Donovan, Brian Kernighan - The Go Programming Language (ISBN: 9780134190440); • Go dokumentáció: https://go.dev/doc/
A tantárgy teljesítéséhez ajánlott előzetes ismeretek
Tudás típusú kompetenciák
(azon előzetes ismeretek összessége, amelyek megléte nem kötelező, de a tantárgy eredményes teljesítését nagyban elősegíti)
Alapszintű programozási ismeretek
Elosztott rendszerek ismerete
Képesség típusú kompetenciák
(azon előzetes képességek és készségek összessége, amelyek megléte nem kötelező, de a tantárgy eredményes teljesítését nagyban elősegíti)
nincs
Ajánlott (nem kötelező) előzetesen megszerzendő kompetenciák
(azon ajánlott (nem kötelező) előzetesen megszerzendő kompetenciák összessége, amelyek jelentősen hozzájárulnak a tantárgy eredményes teljesítéséhez)
Alapszintű programozási ismeretek
Elosztott rendszerek ismerete
Általános szabályok
Követelmények:
Szorgalmi időszakban Az aláírás kritériuma a gyakorlatokon való kötelező részvétel. Egy hiányzás megengedett.
Az aláírás további kritériuma egy egyeztetett házi feladat elkészítése és bemutatása. A házi feladat megfelelt/nem megfelelt értékelésű, a vizsgajegybe nem számít bele.
Vizsgaidőszakban Írásbeli és szóbeli vizsga (elméleti kérdések, egyszerű feladatok).
Pótlási lehetőségek:
A házi feladatot a szorgalmi időszak végéig be kell adni. A házi feladat pótlása a pótlási időszakban lehetséges.
Teljesítményértékelési módszerek
Szorgalmi időszakban végzett teljesítményértékelések részletes leírása
Nincs megadva részletes értékelés.
Szorgalmi időszakban végzett teljesítményértékelések részaránya
Nincs megadva részarány.
Vizsgaidőszakban végzett teljesítményértékelések részletes leírása
Nincs megadva részletes értékelés.
Vizsgarészek részaránya
Nincs megadva részarány.
Érdemjegy megállapítása
Nincs megadva érdemjegy határ.
Jelenléti és részvételi követelmények
Nincs megadva jelenléti követelmény.
Javítás, ismétlés és pótlás különös szabályai
Nincs megadva.
Rövid leírás
Nincs megadva.
Részletes leírás
IMSc program:
Egyeztetett időpontban további, önkéntesen választható, emelt szintű foglalkozást biztosítunk, ahol a tárgy tematikájához szorosan kötődő, időszerű kutatási és fejlesztési problémákat és azok megoldásait ismertetjük. A cél az érdeklődő (elsősorban, de nem kizárólag IMSc-s) hallgatók motivációja a képzésük folytatására az MSc-n túl a PhD képzés keretei között.
IMSc pontok:
Legfeljebb 20 IMSc pont szerezhető hallgatónként az alábbiak szerint:
Sikeresen megoldott opcionális házi feladatok: max. 10 IMSc pont.
Az IMSc pontokat az IMSc programban részt nem vevő hallgatók is elnyerhetik a fentiek szerint.
Ajánlott tantárgyak
Programozás alapjai I
Hálózatba kapcsolt erőforrás platformok és alkalmazásaik (VITMAC03)
A tantárgy elvégzéséhez szükséges tanulmányi munka
Nincs megadva munkaidő bontás.
Tantárgykövetelmények hatályossága
Tantárgykövetelmények hatályosságának kezdete:
—
Tantárgykövetelmények hatályosságának vége:
—
Tantervi elhelyezés
Nincsenek rögzített tantervi elhelyezések ehhez a tárgyverzióhoz.