K-INFO
HU
EN
Belépés

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)
Kurzustípus elmélet gyakorlat laboratóriumi gyakorlat
óraszám (heti) 2 1 0
jelleg (kapcsolt/önálló) kapcsolt
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
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:
  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. 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.
  8. 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.
  9. 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.
  10. 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.
  11. 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.
  12. 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).
  13. 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".
  14. Házi feladatok bemutatása.

A gyakorlatok/laborok részletes tematikája:

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.