„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
Nincs szerkesztési összefoglaló
 
(74 közbenső módosítás, amit 2 másik szerkesztő végzett, nincs mutatva)
2. sor: 2. sor:
[[category:GAMF tantárgyak|Tantárgyak]]
[[category:GAMF tantárgyak|Tantárgyak]]
== A tantárgy leírása - '''nem hivatalos''' ==
== 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 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 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 tantárgy követelményei ==
== 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 ==
== A tárgy során használt dokumentumok ==
{| class="wikitable"
{| class="wikitable" style="margin:0px auto"
|-
|-
! Elérési útvonal || Fájlnév !! cél alkalmazás || Cél fájlnév
! Elérési útvonal || Fájlnév !! cél alkalmazás || Cél fájlnév
|-
|-
| rowspan=4 | [[file:weboldal.zip]]
| rowspan=4 | [[file:weboldal.zip|weboldal.zip]]
| ui.php || Felhasználói felület (UI) || index.php
| ui.php || Felhasználói felület (UI) || index.php
|-
|-
21. sor: 63. sor:
|-
|-
| networks.sql || MySQL import || -
| networks.sql || MySQL import || -
|-
| [[Fájl:Zhminta.pdf|Minta feladatsor]] || - || - || -
|-
| [[Fájl:Gamf-aws-docker-buil.zip|Docker fájlok]] || - || - || -
|-
|}
|}


== Ajánlott irodalom lista ==
== 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 (<small>MSSQL</small>)
* Dan C. Marinescu - Cloud Computing (Theory and Practice)


== Ajánlott online források, hivatkozások ==
== Ajánlott online források, hivatkozások ==
<small>A vastagon szedettek a ZH alatt is használhatók</small>
* PHP dokumentáció: [https://php.net php.net]
* '''PHP dokumentáció''': [https://php.net]
* MySQL dokumentáció: [https://dev.mysql.com dev.mysql.com]
* '''MySQL dokumentáció''': [https://dev.mysql.com|dev.mysql.com]
* Python dokumentáció: [https://python.org python.org]
* '''Python dokumentáció''': [https://python.org]
* AWS dokumentáció: [https://docs.aws.amazon.com docs.aws.amazon.com]
* '''AWS dokumentáció''': [https://docs.aws.amazon.com]
* Ubuntu Segédlet: [https://help.ubuntu.com help.ubuntu.com]
* Ubuntu Segédlet: [https://help.ubuntu.com]
* Ubuntu Tutorial: [https://ubuntu.com/tutorials ubuntu.com/tutorials]
* Ubuntu Tutorial: [https://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 tantárgy menete ==
== A gyakorlat menete ==
# Regisztráció az AWS rendszerében [https://portal.aws.amazon.com/billing/signup#/start/email]
# Regisztráció az AWS rendszerében [https://portal.aws.amazon.com/billing/signup#/start/email]
# EC2 létrehozása, szolgáltatások áttekintése, Linux alapismeretek ismétlése
# EC2 létrehozása, szolgáltatások áttekintése, Linux alapismeretek ismétlése
42. sor: 120. sor:
# Teljes alkalmazás élesztése: VPC-be szervezés, eszközök kommunikációjának szabályozása
# 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
# 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 folytatás
# Dockerfile felépítése, alkalmazások létrehozása, indítása
# Docker Compose felépítés, networking, debuggolás
# Docker Compose felépítés, networking, debuggolás
# 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
# ZH
# '''Projekt bemutató'''
# PótZH
 
== 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 ==
* [[GAMF :: Felhőalapú-szolgáltatások :: AWS|AWS]]
* [[GAMF::Felhőalapú-szolgáltatások::Előadás|Előadás]]
* [[GAMF :: Felhőalapú-szolgáltatások :: Docker|Docker]]
* Gyakorlat
** [[EDU::GAMF::Felhőalapú-szolgáltatások::AWS|AWS]]
** [[EDU::GAMF::Felhőalapú-szolgáltatások::Docker|Docker]]
* [[EDU::GAMF::Felhőalapú-szolgáltatások::Rövidítések|Rövidítések]]

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

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. 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

  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(), '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