EDU::GAMF::Felhőalapú-szolgáltatások
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
A tantárgy 1db 70 pontos ZH-t és egy 30 pontos kiselőadást foglal magában. A ZH-t a 11. vagy a 12. héten írnak meg a hallgatók annak függvényében, hogy melyik héten van kevesebb ZH-juk az előzetes egyeztetések alapján. A dolgozat során a hallgatók egyedi IP tartományt kapnak, amelyben egy VPC-t kell működtetniük AWS környezetben. Megkapják az alkalmazás kódját, az alkalmazás leírását - milyen komponensekből kell állnia - és az alhálózatok sorrendjét, amennyiben az értelmezhető a kiadott feladatban. A feladat megoldására a teljes óra rendelkezésre áll, segítségként a lentebb megjelölt források használhatók, minden más tiltott. A hallgatók a dolgozat során word-ben dokumentálják a lépéseket, a végén csak ezt kell beadni.
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 tantárgy értékelése szigorú, a mérnöki gondolkozást megköveteli (ha az alkalmazás nem működik, akkor a hallgató nem teljesítette az elvárásokat), ezért a működő alkalmazás is pontot ér (20-25p), amit képpel tud bizonyítani. Kivételt képez ez alól, amikor az AWS valamilyen hibája miatt (általában LoadBalancernél tud ez a hiba jelentkezni) nem működik. Ekkor a megelőző lépések alapján járhat a pont.
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
- ZH
- PótZH
Kiselőadás témák
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!
Jegyzetek
- Előadás
- Gyakorlat
- Rövidítések