Applied Markosz revision

This commit is contained in:
2021-12-17 18:43:14 +01:00
parent b2ccc73bfa
commit aa3b8d6b47
3 changed files with 65 additions and 45 deletions

View File

@@ -3,7 +3,7 @@
\chapter{Teszt környezet kialakítása}
%----------------------------------------------------------------------------
A munkám során elkészített és módosított szoftverek helyes működésének demonstrálása egy teljes peremhálózati is felhő számítástechnikai rendszer kiépítését igénylik. Mivel az ilyen környezetek sokszor nem állnak rendelkezésünkre ezért szükség van egy olyan megoldásra, amely jól modellezi az ilyen rendszerek működését, így képesek vagyunk az alkalmazásainkat telepíteni benne.
A munkám során elkészített és módosított szoftverek helyes működésének demonstrálása egy teljes peremhálózati és felhő számítástechnikai rendszer kiépítését igénylik. Mivel az ilyen környezetek sokszor nem állnak rendelkezésünkre, ezért szükség van egy olyan megoldásra, amely jól modellezi az ilyen rendszerek működését, így képesek vagyunk az alkalmazásainkat telepíteni benne.
Vannak szituációk amikor egy teljesen kontrollált tesztkörnyezet alkalmazását kívánja meg a teszt szcenárió. Egy ilyen környezetben a rendszerben elvárás, hogy minden lényeges paramétere szabadon módosítható és precízen megfigyelhető legyen.
@@ -11,9 +11,9 @@ Ebben a fejezetben egy ilyen tesztkörnyezet fejlesztését és kialakítását
\section{Célkitűzések}
A tesztkörnyezet egy modellje a valódi környezetnek, amelyben a tesztelni kívánt alkalmazások futnak. A modell lényege, hogy a valóságnak egy egyszerűsített mását adja. A mérések szempontjából fontos tulajdonságokat megtartsa, jól mimikázza, ideális esetben konfigurálhatóvá tegye. A mérés szempontjából nem lényeges vagy nem befolyásoló tényezőket elhagyhatjuk a modellből, ezzel egyszerűsítve annak működését, hogy a funkcionalitásra tudjunk koncentrálni.
A tesztkörnyezet egy modellje a valódi környezetnek, amelyben a tesztelni kívánt alkalmazások futnak. A modell lényege, hogy a valóságnak egy egyszerűsített mását adja. A mérések szempontjából fontos tulajdonságokat megtartsa, ideális esetben konfigurálhatóvá tegye. A mérés szempontjából nem lényeges vagy nem befolyásoló tényezőket elhagyhatjuk a modellből, ezzel egyszerűsítve annak működését, hogy a funkcionalitásra tudjunk koncentrálni.
A tesztkörnyezet megtervezése előtt összefoglaltam, hogy mik azok a tulajdonságok, amiket át kell emelni a modellbe és mik azok, amelyekkel nem kell foglalkozni. Ezek megfogalmazásánál figyelembe vettem azt, hogy az előző fejezetekben ismeretet munkám eredményei jól demonstrálhatóak legyenek. Azok a tulajdonságok, amelyeket a modellnek meg kell valósítania a következők:
A tesztkörnyezet megtervezése előtt összefoglaltam, hogy mik azok a tulajdonságok, amiket át kell emelni a modellbe és mik azok, amelyekkel nem kell foglalkozni. Ezek megfogalmazásánál figyelembe vettem azt, hogy az előző fejezetekben ismeretet munkám eredményei jól demonstrálhatóak legyenek. Azok a tulajdonságok, amelyeket a modellnek meg kell valósítania, a következők:
\begin{itemize}
\item A választott futtatási környezet minden tulajdonságát egy-az-egyben meg kell valósítania.
\item Legalább egy perem és egy felhő infrastruktúra környezet legyen modellezve.
@@ -22,15 +22,15 @@ A tesztkörnyezet megtervezése előtt összefoglaltam, hogy mik azok a tulajdon
További követelmény a tesztkörnyezet felé, hogy telepítése egyszerű legyen és hordozható. Igény esetén akár egy fejlesztő vagy tesztelő képes legyen a saját számítógépén is elindítani és használni. A benne futtatott teszteknek reprodukálhatónak kell lennie, azaz két teszt között a tesztet befolyásoló tényezők ne változzanak.
Azok mellett a követelmények mellett, amelyeket a modellnek teljesítenie kell, érdemes megemlíteni néhány tulajdonságát a rendszernek, amelyet az egyszerűsítés kedvéért érdemes elhanyagolni. Ilyenek a kliens eszközök konkrét fizikai környezete. Mivel a munkám első sorban a felhős alkalmazások átalakítására, implementálására és a köztük lévő hálózati kapcsolat vizsgálatára irányult, ezért a konkrét kliensek fizikai környezete és megvalósítása nem játszik szerepet.
Azok mellett a követelmények mellett, amelyeket a modellnek teljesítenie kell, érdemes megemlíteni néhány tulajdonságát a rendszernek, amelyet az egyszerűsítés kedvéért érdemes elhanyagolni. Ilyenek a kliens eszközök konkrét fizikai környezete. Mivel a munkám elsősorban a felhő alkalmazások átalakítására, implementálására és a köztük lévő hálózati kapcsolat vizsgálatára irányult, ezért a konkrét kliensek fizikai környezete és megvalósítása nem játszik szerepet.
Mivel mindkét szoftver amellyel a korábbi fejezetekben foglalkoztam tartalmaz olyan komponenst, amely a környezetéről gyűjt információt (Hangrögzítés), vagy éppen abba avatkozik bele (Robotkarok tárgyakat mozgatnak) ezeket a funkcionalitásokat érdemes emulálni. De szükség esetén érdemes fenntartani a lehetőséget, hogy valódi eszközöket csatlakoztassunk a tesztkörnyezethez.
Mivel mindkét szoftver, amellyel a korábbi fejezetekben foglalkoztam tartalmaz olyan komponenst, amely a környezetéről gyűjt információt (Hangrögzítés), vagy éppen abba avatkozik bele (Robotkarok tárgyakat mozgatnak), ezeket a funkcionalitásokat érdemes emulálni. Szükség esetén érdemes fenntartani a lehetőséget, hogy valódi eszközöket csatlakoztassunk a tesztkörnyezethez.
\section{Magas szintű tervezés}
A kijelölt célok megvalósítására egy teljesen virtuális környezetet terveztem meg. Az egyes szerepeket virtuális gépek, vagy azok egy csoportja látja el.
A teszt infrastruktúrát két szempontból bontottam fel. Az egyik az előbb említett szerepek és azok kapcsolata. A másik pedig a szoftverek telepítésének rétegei szerint. Mivel ezek a rétegek egymásra épülnek. Minden komponens konfigurációja egységes, egyedi konfigurációk változtatása a telepítés során adja ki a végleges infrastruktúrát. A két felbontást két dimenzión ábrázolva \aref{fig:birbemu_layers}.\ ábra részletezi. A függőleges felbontás az egyes szerepeket, míg a vízszintes felbontás a telepítés rétegeit ábrázolja.
A teszt infrastruktúrát két szempontból bontottam fel: az egyik az előbb említett szerepek és azok kapcsolata, a másik pedig a szoftverek telepítésének rétegei, mivel ezek a rétegek egymásra épülnek. Minden komponens konfigurációja egységes, egyedi konfigurációk változtatása a telepítés során adja ki a végleges infrastruktúrát. A két felbontást két dimenzión ábrázolva \aref{fig:birbemu_layers}.\ ábra részletezi. A függőleges felbontás az egyes szerepeket, míg a vízszintes felbontás a telepítés rétegeit ábrázolja.
\begin{figure}[h!]
@@ -45,29 +45,29 @@ A teszt infrastruktúrát két szempontból bontottam fel. Az egyik az előbb em
\subsubsection{Futtató környezet}
A környezetben szükség van a választott alkalmazás futtató keretrendszer (esetünkben \textit{Kubedfed}) futtatására. A \textit{Kubefed} lényegében több \textit{Kubernetes} klaszter fölé húzott közös vezérlési réteg. Ennek megfelelően virtuális gépek kijelölt csoportjaira önálló csoportjainak egy-egy \textit{Kubernetes} klaszter futtatását jelöltem ki.
A környezetben szükség van a választott alkalmazás futtató keretrendszer (esetünkben \textit{Kubedfed}) futtatására. A \textit{Kubefed} lényegében több \textit{Kubernetes} klaszter fölé húzott közös vezérlési réteg. Ennek megfelelően virtuális gépeket csoportokra bontottam, adott csoportok egy-egy \textit{Kubernetes} klasztert valósítanak meg.
Az egyes \textit{Kubernetes} klaszterek esetünkben az egyes adatközpontokat szimbolizálják. Egy ilyen klaszter jelöli a felhő adatközpontot, a többi klaszter pedig jelölheti a peremhálózati adatközpontokat vagy akár további felhőket is. A méréseink szempontjából nincs számottevő különbség egy felhő vagy egy peremhálózati adatközpontban működésüket tekintve, ezért itt főképp csak az elnevezésükben térnek el.
Az egyes \textit{Kubernetes} klaszterek esetünkben az egyes adatközpontokat szimbolizálják. Egy ilyen klaszter jelöli a felhő adatközpontot, a többi klaszter pedig jelölheti a peremhálózati adatközpontokat vagy akár további felhőket is. A tesztelendő alkalmazások szempontjából, nincs számottevő különbség egy felhő vagy egy peremhálózati adatközpont belső működésében, ezért itt főképp csak az elnevezésükben térnek el.
Az önálló \textit{Kubernetes} klaszterek fölé már lehet \textit{Kubefed} környezetet telepíteni. A telepített \textit{Kubefed} szoftver megfelelően modellezi a valós környezetben használt futtató környezetet, hiszen ugyanaz a szoftver. Telepítése és üzemeltetése között nincs különbség a valós és teszt környezetben.
\subsubsection{Kliens}
A peremhálózati rendszerek három rétegű architektúrájában legalul foglal helyet maga a kliens eszköz. A klienseket ebben a környezetben egy vagy több önálló virtuális gép valósítja meg. Egy virtuális gép egy vagy több klienst is megvalósíthat függően a kliensek erőforrás és hálózati konfiguráció igényeitől.
A peremhálózati rendszerek három rétegű architektúrájában legalul foglal helyet maga a kliens eszköz. A klienseket ebben a környezetben egy vagy több önálló virtuális gép valósítja meg. Egy virtuális gép egy vagy több klienst is megvalósíthat, függően a kliensek erőforrás és hálózati konfiguráció igényeitől.
\subsubsection{Hálózat}
A célok között fontos szerepet képviselt az egyes \enquote{adatközpontokat} illetve adatközpontokat kliensekkel összekötő hálózat és azok sajátosságainak megfelelő modellezése. Ez magában foglalja a különböző hálózati anomáliák és kedvezőtlen paraméterek szimulálását is.
A célok között fontos szerepet képviselt az egyes \enquote{adatközpontokat} illetve adatközpontokat kliensekkel összekötő hálózat, és azok sajátosságainak megfelelő modellezése. Ez magában foglalja a különböző hálózati anomáliák és kedvezőtlen paraméterek szimulálását is.
Ehhez az egy \enquote{adatközponthoz} tartozó virtuális gépeket közös adatkapcsolati rétegbe szerveztem. Hálózat fizikai és adatkapcsolati rétegeit a virtualizációs környezet biztosítja. Az egyes elszeparált alhálózati rétegek mindegyikét saját alhálózatukba rendeztem. A kliens eszközök önmaguk is egy vagy több elszeparált alhálózatba kerülhetnek.
Ehhez az egy \enquote{adatközponthoz} tartozó virtuális gépeket közös adatkapcsolati rétegbe szerveztem. A hálózat fizikai és adatkapcsolati rétegeit a virtualizációs környezet biztosítja. Az egyes elszeparált alhálózati rétegek mindegyikét saját alhálózatukba rendeztem. A kliens eszközök önmaguk is egy vagy több elszeparált alhálózatba kerülhetnek.
Az alhálózatok között az útválasztást egy külön virtuális gép végzi, amely olyan szoftvert futtat ami képes különböző egyedileg konfigurálható hálózati paramétereket szimulálni. Ezek a paraméterek elsősorban késleltetés, sávszélesség, csomagvesztés stb.
Az alhálózatok között az útválasztást egy külön virtuális gép végzi, amely olyan szoftvert futtat ami képes különböző egyedileg konfigurálható hálózati paramétereket emulálni. Ezek a paraméterek elsősorban késleltetés, sávszélesség, csomagvesztés stb.
\subsection{Telepítés rétegei szerinti felbontás}
A környezet felépítését rétegekre osztottam. Ennek az a célja, hogy az egyes rétegek telepítése önállóan jól definiálható és tervezhető legyen. További előnye ennek a felosztásnak, hogy az egyes rétegek szükség esetén cserélhetőek más megoldásokra, ezzel elérve, hogy a tesztkörnyezet könnyen testre-szabható legyen.
A környezet felépítését rétegekre osztottam. Ennek az a célja, hogy az egyes rétegek telepítése önállóan jól definiálható és tervezhető legyen. További előnye ennek a felosztásnak, hogy az egyes rétegek szükség esetén cserélhetőek más megoldásokra, ezzel elérve, hogy a tesztkörnyezet könnyen testreszabható legyen.
Az egyes rétegek egymásra épülésének sorrendje a következő:
\begin{enumerate}
@@ -78,7 +78,7 @@ Az egyes rétegek egymásra épülésének sorrendje a következő:
\item \textbf{Alkalmazás:} A futtatókörnyezetbe telepített egyéni alkalmazások, amelyek tesztelését végezzük.
\end{enumerate}
A telepítés egyes rétegeinek telepítésére önálló automatizációs megoldásokat terveztem használni. A rétegek megfelelő szeparálása ezeknek az eszközöknek a kiválasztását, beállítását és alkalmazását is megkönnyíti. Lehetőségünk van olyan eszközöket használni, amik az egyes rétegeken belüli feladatcsoportok végrehajtására specializáltak.
Az egyes rétegeinek telepítésére önálló automatizációs megoldásokat terveztem használni. A rétegek megfelelő szeparálása ezeknek az eszközöknek a kiválasztását, beállítását és alkalmazását is megkönnyíti. Lehetőségünk van olyan eszközöket használni, amelyek az egyes rétegeken belüli feladatcsoportok végrehajtására specializáltak.
\section{Megvalósítás}