„EDU::GAMF::Felhőalapú-szolgáltatások” változatai közötti eltérés

Innen: Farkas Attila Wiki
Ugrás a navigációhoz Ugrás a kereséshez
138. sor: 138. sor:


  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!
  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(), '6.0.0', '>')) {
  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 2024. szeptember 4., 12:17-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

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

Az előadás menete

  1. összetett:
    • Regisztráció AWS felületen
    • követelmények ismertetése
    • bérelt szervertől (VPS) a felhő megoldásokig
  2. Felhő ökoszisztéma
  3. Adatközpontok belső hálózata
  4. Erőforrás virtualizálás
  5. Adattárolás a felhőben
  6. Felhőbiztonság
  7. Docker
  8. Kiselőadások
  9. Kiselőadások
  10. Kiselőadások
  11. 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

  1. Regisztráció az AWS rendszerében [1]
  2. EC2 létrehozása, szolgáltatások áttekintése, Linux alapismeretek ismétlése
  3. EC2 létrehozása, alkalmazások telepítése és konfigurálása, apache2 kiszolgáló, PHP környezet
  4. UI felület élesztése: AMI létrehozás, Auto Scaling Group, Load Balancer
  5. Teljes alkalmazás élesztése: MySQL adatbázis (RDS), Python környezet telepítés
  6. Teljes alkalmazás élesztése: VPC-be szervezés, eszközök kommunikációjának szabályozása
  7. Docker telepítés, első konténerek elindítása, Dockerfile felépítése, docker.io regisztráció, image feltöltés
  8. Dockerfile felépítése, alkalmazások létrehozása, indítása
  9. Docker Compose felépítés, networking, debuggolás
  10. Teljes alkalmazás élesztése Docker Compose segítségével
  11. Készülés ZH-ra, kérdések megbeszélése
  12. ZH
  13. 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

  1. Apache2 / Nginx kiszolgáló telepítése
  2. Különböző PHP verziók integrálása a kiszolgálóba
  3. Kód telepítése a kiszolgálónak megfelelő helyre
  4. Mindkét alkalmazásnak „OK” üzenetet kell mutatnia

Feladatpontok dockerrel történő megoldáshoz

  1. Apache2 / Nginx kiszolgáló telepítése
  2. Különböző PHP verziójú Docker image keresése / telepítése
  3. Kód injektálása a megfelelő könyvtárba a konténeren belül
  4. Reverse Proxy konfigurálása kiszolgálón
  5. 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(), '6.0.0', '>')) {
   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