„EDU::GAMF::Felhőalapú-szolgáltatások” változatai közötti eltérés
| (11 közbenső módosítás ugyanattól a szerkesztőtől nincs mutatva) | |||
| 27. sor: | 27. sor: | ||
== A tantárgy követelményei - '''nem hivatalos''' == | == A tantárgy követelményei - '''nem hivatalos''' == | ||
A | Az Előadás második felében a hallgatók előadják korábban elkészített munkájukat egy a felhővel kapcsolatban saját maguk által kiválasztott témában. A kiselőadás nem lehet csupán bemutató jellegű, technikai információkat is tartalmaznia kell. | ||
A kiselőadásra járó pont: '''30p''', | |||
A gyakorlati részhez kapcsolódóan a hallgatók csoportos munkában készítenek el egy projektfeladatot, amelyben a következő pontok közül legalább 5-nek teljesülnie kell: | |||
* legyen benne ASG és LB | |||
* Legyen benne tárolás S3-ra | |||
* Legyen legalább 2 EC2 szolgáltatás (pl. api, ui) | |||
* Használjon RDS-t | |||
* Használjon VPC | |||
* Docker környezetben fusson az alkalmazás (akár az AWS ECS-ben is) | |||
* Serverless megoldás | |||
* Valamilyen orchestrator használata (kubernetes, swarm stb., akár beépített verziót is) | |||
A projektfeladat végrehajtása során a generatív mesterséges intelligencia használata '''engedélyezett''' és '''javasolt'''. | |||
A projektfeladatra járó pont: '''70p''' | |||
'''A kiselőadásból és a ZH-ból 50-50% el kell érni a félév sikeres teljesítéséhez.''' | '''A kiselőadásból és a ZH-ból 50-50% el kell érni a félév sikeres teljesítéséhez.''' | ||
== A tárgy teljesítéséhez szükséges idő == | == A tárgy teljesítéséhez szükséges idő == | ||
| 112. sor: | 124. sor: | ||
# Teljes alkalmazás élesztése Docker Compose segítségével | # Teljes alkalmazás élesztése Docker Compose segítségével | ||
# Készülés ZH-ra, kérdések megbeszélése | # Készülés ZH-ra, kérdések megbeszélése | ||
# | # '''Projekt bemutató''' | ||
# | |||
== Docker beadandó leírása == | |||
A feladat célja, hogy a hallgatók találkozzanak azokkal a pozitívumokkal, amelyeket a Docker környezet nyújt számunkra. Ezt olyan két - igen egyszerű - alkalmazáson keresztül szeretném szemléltetni, amelyek nem azonos PHP verzióval működnek, de azokat egy szerveren szeretnénk telepíteni. | |||
Bár a PHP nyelv a nagy hangok szerint kihaló félben van, a régi alkalmazások üzemeltetése ma is elvárható feladat, ráadásul a hangokkal ellentétben ma is készülnek új alkalmazások a környezetben. | |||
'''Figyelem!!''' A példában egy egyszerű kód szerepel, de a feladat hétköznapi problémát dolgoz fel! | |||
'''Feladatpontok docker nélküli megoldáshoz''' | |||
# Apache2 / Nginx kiszolgáló telepítése | |||
# Különböző PHP verziók integrálása a kiszolgálóba | |||
# Kód telepítése a kiszolgálónak megfelelő helyre | |||
# Mindkét alkalmazásnak „OK” üzenetet kell mutatnia | |||
'''Feladatpontok dockerrel történő megoldáshoz''' | |||
# Apache2 / Nginx kiszolgáló telepítése | |||
# Különböző PHP verziójú Docker image keresése / telepítése | |||
# Kód injektálása a megfelelő könyvtárba a konténeren belül | |||
# Reverse Proxy konfigurálása kiszolgálón | |||
# Mindkét alkalmazásnak „OK” üzenetet kel mutatnia | |||
A forráskódban egyszerűen elérhető, hogy mindkét kód „OK” üzenetet mutasson, de annak módosításával történő megoldás azonos a bonyoultabb (több 1000, akár több 10.000-1.000.000) soros kódok migrálásával az új PHP verziónak megfelelően, így amikor ezt a lépést választjuk, akkor gondoljuk át, hogy ez mennyire lehet egyszerű feladat! | |||
=== Forrás === | |||
'''PHP5''' | |||
<syntaxhighlight lang='php'> | |||
<?php | |||
if (version_compare(phpversion(), '5.6.40', '>')) { | |||
printf("Az általad használt PHP verzió túl magas! Használj mamximum 5-ös verziót!"); | |||
} else { | |||
printf("OK"); | |||
} | |||
?> | |||
</syntaxhighlight> | |||
'''PHP7''' | |||
<syntaxhighlight lang='php'> | |||
<?php | |||
if (version_compare(phpversion(), '7.0.0', '<')) { | |||
printf("Az általad használt PHP verzió túl alacsony! Használj minimum 7-es verziót!"); | |||
} else { | |||
printf("OK"); | |||
} | |||
?> | |||
</syntaxhighlight> | |||
== Jegyzetek == | == Jegyzetek == | ||
A lap jelenlegi, 2025. szeptember 15., 09:15-kori változata
A tantárgy leírása - nem hivatalos
A tantárgy során alkalmazások felhőben történő üzemeltetéséről tanulhatnak a hallgatók. A piacon elérhető összes szolgáltatót nincs lehetőségünk tanulmányozni, de az Amazon Web Services (AWS) világában mélyebben elmerülünk és egy alkalmazást telepítünk bele. A tárgy során a hallgatónak el kell sajátítania azt a készséget, hogy egy jól dokumentált alkalmazást (a csomag szükségletek közel teljes egészében meg vannak adva a fejlesztők által) elhelyezzenek amazonos környezetben, ismernie kell az elérhető eszközöket és a biztonsági funkciókat.
A félév második felében a Docker kapja a főszerepet, mivel manapság a legtöbb alkalmazás ebben készül. Ennek oka, hogy a fejlesztői környezet és a végleges környezet egyezősége garantálható. A hallgatók a tárgy teljesítése után képesek lesznek egy jól dokumentált alkalmazás telepítésére Docker környezetben, ami magában foglalja a képfájlok létrehozását és a futási környezetének kialakítását is.
A tantárgy előfeltételei - nem hivatalos
A tantárgy épít a következő tantárgyakon tanultakra:
- Hálózati alapismeretek
- IP címek típusai (publikus, privát)
- Alhálózatok kialakítása
- Kis mértékben packet flow ismeretek
- Operációs rendszerek
- Linux CLI ismeretek
- BASH parancsok
- man készségszintű használata
- Konfigurációs állományok szerkesztésére alkalmas eszközök ismerete (vi, nano, mcedit stb.)
- LOG fájlok olvasása, tartalmuk szűrése
- Webes alkalmazásfejlesztés
- Webes applikációk forráskódjának értelmezése
- Infrastruktúra függő értékek felismerése és aktualizálása
- Haladó programozás
- python szintaktika
- Forráskód értelmezése
A tantárgy követelményei - nem hivatalos
Az Előadás második felében a hallgatók előadják korábban elkészített munkájukat egy a felhővel kapcsolatban saját maguk által kiválasztott témában. A kiselőadás nem lehet csupán bemutató jellegű, technikai információkat is tartalmaznia kell.
A kiselőadásra járó pont: 30p,
A gyakorlati részhez kapcsolódóan a hallgatók csoportos munkában készítenek el egy projektfeladatot, amelyben a következő pontok közül legalább 5-nek teljesülnie kell:
- legyen benne ASG és LB
- Legyen benne tárolás S3-ra
- Legyen legalább 2 EC2 szolgáltatás (pl. api, ui)
- Használjon RDS-t
- Használjon VPC
- Docker környezetben fusson az alkalmazás (akár az AWS ECS-ben is)
- Serverless megoldás
- Valamilyen orchestrator használata (kubernetes, swarm stb., akár beépített verziót is)
A projektfeladat végrehajtása során a generatív mesterséges intelligencia használata engedélyezett és javasolt.
A projektfeladatra járó pont: 70p
A kiselőadásból és a ZH-ból 50-50% el kell érni a félév sikeres teljesítéséhez.
A tárgy teljesítéséhez szükséges idő
Az állami elvárás szerint minden kredit megszerzése egy átlagos hallgató számára 30 óra ráfordítást vesz igénybe - beleértve a tanórákat, ZH és vizsgaalkalmakat, valamint az otthoni önálló tanulást is. Ez a tárgy 5 kreditet ér, tehát a félév során összesen 150 órát kell a hallgatóknak ezzel foglalkozniuk, ami sokszor a pótZH-ban (és manapság a pót-pót ZH-ban) csapódik le. Mivel a félév során 13 hét áll rendelkezésünkre és mind az előadás, mind a gyakorlat 1,5 óra időtartamú, így összesen 39 órát ölel fel a tanórai képzés (ZH-val együtt). Rossz hír, hogy ez esetben egy gyakorlati jegyes tárgyról van szó, így a maradék időt legkésőbb a 13. hét végéig kell eltölteni otthoni tanulással, nem lehet a vizsgaidőszakra csúsztatni azt. Ez alapján heti 8.5, azaz valamivel több, mint napi 1,5 órát (heti 5 nappal számolva) a tárggyal kapcsolatos ismeretanyagok gyűjtésével és megértésével kellene a hallgatónak foglalkoznia. Mivel ezen számítás alapján a hallgatóknak napi 13,5 órát kellene 30 kredit felvétele esetén tanulással tölteni, így természetesen ez egy irreális elvárásnak bizonyul. Azonban kreditarányosan számolva, ezen tárgy esetében heti 2 óra ráfordítással éri el a hallgató a napi 8 órás munkaidőt (tanórák közötti szüneteket pihenőidőként kezelve) 30 kredit esetén, ami a normális szint. Ez tehát elvárhatónak és számon kérhetőnek bizonyul nappali tagozaton annak érdekében, hogy a hallgatók a lehető legnagyobb felkészültségben üljenek az órákon.
A tárgy során használt dokumentumok
| Elérési útvonal | Fájlnév | cél alkalmazás | Cél fájlnév |
|---|---|---|---|
| Fájl:Weboldal.zip | ui.php | Felhasználói felület (UI) | index.php |
| ui_newproduct.php | Felhasználói felület (UI) | newproduct.php | |
| api.py | API | api.py | |
| networks.sql | MySQL import | - | |
| Fájl:Zhminta.pdf | - | - | - |
| Fájl:Gamf-aws-docker-buil.zip | - | - | - |
Ajánlott irodalom lista
- Tanenbaum - Operációs rendszerek
- Tanenbaum - Számítógépes hálózatok
- Emett Dulaney - Linux All in One
- Kónya László - Számítógépes hálózatok
- Petrényi József
- TCP/IP 1 óra alatt
- TCP/IP alapok I. kötet
- TCP/IP alapok II. kötet
- Dr. Guta Gábor - Szoftverfejlesztés okosan Pythonnal
- Brad Dayley - Python zsebkönyv
- Kozmayer Viktor - PHP és MySQL az alapoktól
- Richard Blum - PHP, MySQL & Javascript 7 könyv az 1-ben
- Bódy Bence - Az SQL példákon keresztül (MSSQL)
- Dan C. Marinescu - Cloud Computing (Theory and Practice)
Ajánlott online források, hivatkozások
- PHP dokumentáció: php.net
- MySQL dokumentáció: dev.mysql.com
- Python dokumentáció: python.org
- AWS dokumentáció: docs.aws.amazon.com
- Ubuntu Segédlet: help.ubuntu.com
- Ubuntu Tutorial: ubuntu.com/tutorials
Az előadás menete
- összetett:
- Regisztráció AWS felületen
- követelmények ismertetése
- bérelt szervertől (VPS) a felhő megoldásokig
- Felhő ökoszisztéma
- Adatközpontok belső hálózata
- Erőforrás virtualizálás
- Adattárolás a felhőben
- Felhőbiztonság
- Docker
- Kiselőadások
- Kiselőadások
- Kiselőadások
- Kiselőadások
Az előadás menete a Dan C. Marinescu - Cloud Computing (Theory and Practice) című könyv alapján került kidolgozásra, mely a könyvtárban megtekinthető / kölcsönözhető. Az általunk érintett témakörök nagyjából 150 oldalnyi terjedelemben jelennek meg a könyvben. Az oldalszámok az előadásjegyzetek oldalon találhatók.
A gyakorlat menete
- Regisztráció az AWS rendszerében [1]
- EC2 létrehozása, szolgáltatások áttekintése, Linux alapismeretek ismétlése
- EC2 létrehozása, alkalmazások telepítése és konfigurálása, apache2 kiszolgáló, PHP környezet
- UI felület élesztése: AMI létrehozás, Auto Scaling Group, Load Balancer
- Teljes alkalmazás élesztése: MySQL adatbázis (RDS), Python környezet telepítés
- Teljes alkalmazás élesztése: VPC-be szervezés, eszközök kommunikációjának szabályozása
- Docker telepítés, első konténerek elindítása, Dockerfile felépítése, docker.io regisztráció, image feltöltés
- Dockerfile felépítése, alkalmazások létrehozása, indítása
- Docker Compose felépítés, networking, debuggolás
- Teljes alkalmazás élesztése Docker Compose segítségével
- Készülés ZH-ra, kérdések megbeszélése
- Projekt bemutató
Docker beadandó leírása
A feladat célja, hogy a hallgatók találkozzanak azokkal a pozitívumokkal, amelyeket a Docker környezet nyújt számunkra. Ezt olyan két - igen egyszerű - alkalmazáson keresztül szeretném szemléltetni, amelyek nem azonos PHP verzióval működnek, de azokat egy szerveren szeretnénk telepíteni.
Bár a PHP nyelv a nagy hangok szerint kihaló félben van, a régi alkalmazások üzemeltetése ma is elvárható feladat, ráadásul a hangokkal ellentétben ma is készülnek új alkalmazások a környezetben.
Figyelem!! A példában egy egyszerű kód szerepel, de a feladat hétköznapi problémát dolgoz fel!
Feladatpontok docker nélküli megoldáshoz
- Apache2 / Nginx kiszolgáló telepítése
- Különböző PHP verziók integrálása a kiszolgálóba
- Kód telepítése a kiszolgálónak megfelelő helyre
- Mindkét alkalmazásnak „OK” üzenetet kell mutatnia
Feladatpontok dockerrel történő megoldáshoz
- Apache2 / Nginx kiszolgáló telepítése
- Különböző PHP verziójú Docker image keresése / telepítése
- Kód injektálása a megfelelő könyvtárba a konténeren belül
- Reverse Proxy konfigurálása kiszolgálón
- Mindkét alkalmazásnak „OK” üzenetet kel mutatnia
A forráskódban egyszerűen elérhető, hogy mindkét kód „OK” üzenetet mutasson, de annak módosításával történő megoldás azonos a bonyoultabb (több 1000, akár több 10.000-1.000.000) soros kódok migrálásával az új PHP verziónak megfelelően, így amikor ezt a lépést választjuk, akkor gondoljuk át, hogy ez mennyire lehet egyszerű feladat!
Forrás
PHP5
<?php
if (version_compare(phpversion(), '5.6.40', '>')) {
printf("Az általad használt PHP verzió túl magas! Használj mamximum 5-ös verziót!");
} else {
printf("OK");
}
?>
PHP7
<?php
if (version_compare(phpversion(), '7.0.0', '<')) {
printf("Az általad használt PHP verzió túl alacsony! Használj minimum 7-es verziót!");
} else {
printf("OK");
}
?>
Jegyzetek
- Előadás
- Gyakorlat
- Rövidítések