Checkpoint

I remembered that it would be very bad if my progress were lost.
This commit is contained in:
Pünkösd Marcell 2021-12-17 01:34:10 +01:00
parent b5cdf8cfe6
commit 5a2d88b737
8 changed files with 297 additions and 118 deletions

View File

@ -0,0 +1 @@
<mxfile host="Electron" modified="2021-12-16T23:31:44.118Z" agent="5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/15.4.0 Chrome/91.0.4472.164 Electron/13.5.0 Safari/537.36" etag="018BuT7noP2HiBifLBkq" version="15.4.0" type="device"><diagram id="-GjhwtVLZvreDUrzPR70" name="Page-1">7Zhbk5sgGIZ/jZfdEVGTXGbTbPem0+lkerqkQpQRxCLGJL++EInRJZlJD9m6nb1J4P04yPN+wKgHF3z7TqIyey8wYV7g460H33pBEMUz/WuEXSvAIGyFVFLcSuAkrOieWNG3ak0xqQYNlRBM0XIoJqIoSKIGGpJSNMNma8GGs5YoJY6wShBz1S8Uq8yqwPdPgUdC08xOPY1sgKNjYytUGcKi6Ulw6cGFFEK1Jb5dEGbYHbm0/R4uRLsHk6RQ13RoZvXjN86X8FP+I998BJuvArwJ2lE2iNV2wZ+pVLW3gN4cMFqZ/sVaokrJOldGvp9LZBekdkdKUtQFJmYi34P3TUYVWZUoMdFGp4XWMsWZrgFd3BCpqCY8ZzQttPZdKCW4Dthn0WGyvbhI0KHTKUcEJ0rudBPbIZhY2jbdoqmtNyfzutzKer6FVkM2X9Ju6BNSXbBUf4EwPE8YMbpvKSf0gBUa1vmhGMtiR/ZE/RnmG9CMgytpBreiOXVoOpB6CLotZ3BhVGUdO2RzL9EkiDyTlJxibEY0Y5RmZL5NzQF31x4qQftvht0dxzfQgCkVQiWZVYeWpQxVlS1XOek3U0hRYWae+X/JPH9yFw3sC+NO6RkIZpFr4ORWBgL3xHl18OL2G6WD7on26uAFB2E4RgdDx8APpTbAuY30KnG11xF9MYliTdP6SaPRXVDRmQtqcuZ+im+FNnLQPtRKp9WR19hv+DB2AYLwOQmC/yc7YTiy7ARuer5UtiEYG9v4hW39pwTPbf1nJegCnLMcMY7si1L1z5E5p6V/5fvQbzDT1dO3gUOs94EFLn8C</diagram></mxfile>

View File

@ -0,0 +1 @@
<mxfile host="Electron" modified="2021-12-16T14:46:48.619Z" agent="5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/15.4.0 Chrome/91.0.4472.164 Electron/13.5.0 Safari/537.36" etag="qp3HgiJCdhmuGHKC34LV" version="15.4.0" type="device"><diagram id="J8_ke5wYCe2sDKy8mfWC" name="Page-1">7VhNc5swEP01zLSHZAAZbB9t7CSdxmmm7jTJqaMaBRQL5BEi2Pz6ChAGIn/QpC7pTC+29kkrs2/fSos14ATrSwZX/oy6iGim7q41MNFM0wa6+MyATQFYfaMAPIbdAqoBc5wiCUo/L8YuihoLOaWE41UTXNAwRAvewCBjNGkue6Sk+asr6CEFmC8gUdE77HJfooauVxNXCHu+/OmBJScCWC6WQORDlyY1CEw14DBKeTEK1g4iGXclL4XfxZ7Z7YMxFPJWDnfO6Eeiz/1L5+neOosvv8TPZ3KXZ0hiGfAFIr7mWNpQTkV8U3IRJTggMBTWWLohxtF67/MY2yiFOhANEGcbsaR06EtipDLMnrSTimezpNmvUbwFocytt927Cl8MJAO/w4YaM3KFHKRJGfepR0NIphU6ZjQOXZRtqwurWnNN6UqAhgCfEOcbqW0YcyognwdEzqI15vfSPRs/ZOPzviXNybo2N9mURigCzr3OTau0H+qTlV9ulY5FhFlY+/N2QCkRjdkCHVjXl0UKmYcO7qfvVgdDBHL83Hy6P57pvqL7meYAbWRE1MXL7KAozBRH2WA8EtDsWjNtImIa/2Ri5GWjD87NzUdFNJUksvwmPuZovoI5bYk4JZvpb1dKe1Oyt77sZnlZanUZ5o7qsk9WXLrC+WecszxkvPheirsjH0Tvk1KjSakhKq9bTk2F0lvEUOAX4s3JHINU1FO2UfjIYMRZvOSFpBk88QkPhsdPeGOwgy8DnIqwnkLYlETldde66OffZ50VvXmY8ndW9EDh+xP9lt0/UbrMObbTE4vQaiNC+6+2GZZCyhUMPVbw4aW5CCe845MQHGTVbJIKutaZrVD6FcMo5fJS/ydI7P46GSg8ddb+tux+jUbre77thN/Q/Grt+lyZq6N9bm+3BFq3ubnriDG4qS1YURzyqLbzbQbUDr3By/p88W54bH3zXVIMiieopLUN5fVqG/5XW2u19Vqqrf9Gtb2twze7zKjxmozqnWW0fJc4mlL7NCkVZvXfU1HS1R94YPoL</diagram></mxfile>

View File

@ -422,4 +422,12 @@
title = {The URScript Programming Language}, title = {The URScript Programming Language},
howpublished = {\url{https://www.siemens-pro.ru/docs/ur/scriptManual.pdf}}, howpublished = {\url{https://www.siemens-pro.ru/docs/ur/scriptManual.pdf}},
note = {Megtekintve: 2021-05-22} note = {Megtekintve: 2021-05-22}
}
@misc{audio_quality,
author = {Sean Ray},
title = {Lossless Audio Formats vs Lossy Audio Formats - A Complete Guide},
howpublished = {\url{https://www.musicgateway.com/blog/how-to/lossy-or-lossless-audio-formats}},
note = {Megtekintve: 2021-12-16}
} }

View File

@ -36,14 +36,82 @@ Működés közben az \acrshort{iot} eszközök folyamatosan rögzítik a hangmi
\section{Felkészítés peremhálózati alkalmazásra} \section{Felkészítés peremhálózati alkalmazásra}
% Azzal, hogy beraktuk az edge-be megtakarítunk egy csomó számítási kapacitást, mert nem lesz idle a birbox \subsection{Motiváció}
Az eredeti szoftver architektúrában az \acrshort{iot} eszközök közvetlenül kommunikálnak a felhővel. Az eszközökön futó \acrshort{mi} komponens jelentősen csökkenti a hálózati terhelést, de cserébe az \acrshort{iot} eszköznek képesnek kell lennie futtatni a komponenst, amelynek ugyan a felhőben futó kiértékelő szoftvernél kevesebb a számítási igénye, továbbra is számottevő tud lenni, különösen az eszközök tömegtermelésénél, ahol eszközönként pár cent különbség is sokat jelenthet. Ha meg tudjuk spórolni ezt a funkcionalitást, akkor azzal jelentős költség megtakarítást tudunk elérni, kisebb teljesítményű, energiatakarékos hardverek alkalmazása révén.
Az első szintű \acrshort{mi} alapú szűrés teljes eltávolítása viszont nem minden esetben járható út. Megtehetjük, hogy ezt a fázist a felhőbe \enquote{költöztetjük}. Ám ebben az esetben az összes rögzített hangmintát minden eszköznek fel kell küldenie a felhőbe. Az alábbi számításból kiderül, hogy -- a jelenlegi hangminőségi beállítások szerint -- mindössze alig több mint 1400 darab eszköznek együttesen már gigabites sávszélességi igénye van.
$$ 44100\textrm{Hz} \cdot 16\textrm{bit} = 88.2\textrm{kbyte/s} = 705.6\textrm{kbit/s} = 0.7056\textrm{Mbit/s}$$
%$$ 1\textrm{Gbit/s} = 1000\textrm{Mbit/s} $$
$$ \dfrac{1000\textrm{Mbit/s}}{0.7056\textrm{Mbit/s}} = 1417.2334$$
% Itt leírom az átalakítást a három rétegű rendszerre A hangminták tömörítése természetükből adódóan nem lehetséges veszteségmentesen számottevő módon tömöríteni \cite{audio_quality}. Veszteséges tömörítéssel jelentős megtakarítást lehetne elérni, ám ekkor félő, hogy elvesznek olyan vonások % <- feature magyarul
is, amelyek hiánya negatívan befolyásolja a felismerés hatékonyságát. Ezért mindenképpen az eredeti minőségében kell a felvételeket továbbítani.
% Itt még nem írok szerintem a kubefedről Az előszűrés által adott sávszélesség megtakarítást nehéz megbecsülni, hiszen nagyban függ az évszaktól, napszaktól, a tájegységtől, időjárástól a környező élővilágtól és egyéb hatásoktól, körülményektől. A hatékonyság megbecsléséhez -- kizárólag szemléltető célzattal -- összegyűjtöttem néhány -- a célterülethez hasonló -- hangfelvételt az internetről. Ezeket felbontottam egy másodperces szegmensre és lefuttattam rájuk a felismerő algoritmust. Az eredményeket \aref{tab:proof_maker}.\ táblázat foglalja össze.
\begin{table}[h!]
\centering
\begin{tabular}{|l|c|c|c|}
\hline
\textbf{Minta} & \textbf{Összes Sz.} & \textbf{Továbbított Sz.} & \textbf{Arány} \\
\hline
\hline
Eredeti Tanító minta részlet & 190 & 152 & 80.0\% \\
Erdei hangfelvétel madárcsiripeléssel & 1000 & 288 & 28.8\% \\
Erdő, kevés madárcsiripeléssel & 316 & 53 & 16.7\% \\
Erdőszél, este & 1500 & ? & ?\% \\
\hline
\end{tabular}
\caption{Első fázisú \acrshort{mi} áteresztésének vizsgálata különböző hangmintákra}
\label{tab:proof_maker}
\end{table}
Beláthatjuk, hogy az intelligens felismeréssel jelentős sávszélességet tudunk megtakarítani. A felhőbe felküldött, de nem madárcsiripelést tartalmazó minták felesleges hálózati terhelést jelentenek, hiszen ellenőrzés után eldobásra kerülnek.
Ennek a problémának a megoldására nyújt lehetőséget a peremhálózati rendszer bevonása. Mivel a peremhálózati rendszer sokkal elosztottabb és logikailag közelebb van az adatok forrásához. Ezért képesek vagyunk vele egyszerre kevesebb eszközt kiszolgálni sokkal alacsonyabb adatforgalmi költségek mellett, hiszen nem kell az összes, csak a gyanús mintákat elküldeni elemzésre a felhőbe. Emellett a peremhálózati rendszereken sokkal jobban skálázódhat az alkalmazás. Emellett a megosztott erőforrásoknak is hasznát vehetjük, ha egyes \acrshort{iot} eszközöket leállítunk (például télen, amikor nem fenyeget madár veszély) akkor nem fog kihasználatlanul állni az eszközökben az extra számítási kapacitás, hiszen a peremhálózati felhőrendszerbe könnyen be tudunk ütemezni más feladatokat.
\subsection{Tervezés}
A tervezés során fontosnak tartottam, hogy a rendszer többi komponensében minimális változtatásokat kelljen tenni. Az eredeti rendszer mikroszolgáltatás architektúrára épült, így az egyes komponensek felelőssége jól elkülönül. A megtervezett architektúrába könnyen beilleszthető extra funkcionalitás.
Mivel \textit{Kubefed} keretrendszert választottam az alkalmazásom futtatására, ezért egyértelmű volt, hogy a már meglévő alkalmazás komponenseken nem kell módosítani. Hiszen a \textit{Kubefed} csak kiegészíti a \textit{Kubernetes} funkcionalitását, amely az eredeti rendszer tervezésénél is meghatározó volt. Az első szintű \acrshort{ml} algoritmust ezekből az okokból egy újabb mikroszolgáltatásként terveztem meg.
Az \acrshort{iot} eszközön futó szoftver \acrshort{http} interfészen keresztül tölti fel a mintákat. Az új mikroszolgáltatást proxyként terveztem meg. Azaz egy ugyanolyan \acrshort{http} interfészt szolgál ki, mint a felhőben a hangfájlok fogadására szolgáló végpont. Ha az \acrshort{ml} algoritmus madárcsiripelést azonosít a mintában, akkor azt módosítás nélkül továbbküldi. Így az eszközök és a felhő számára is teljesen transzparens módon tud működni az új szolgáltatás. A megváltozott architektúráról \aref{fig:birbnetes_super_simple_services}.\ ábra ad vázlatos áttekintést. Ez a szolgáltatás egyformán futhat a felhőben, de a peremen is, nincsenek lokalitási kötöttségei.
\begin{figure}[h!]
\centering
\includegraphics[width=0.9\textwidth]{figures/birbnetes_super_simple_services}
\caption{Megváltoztatott architektúra a peremhálózati rendszer bevonásával.}
\label{fig:birbnetes_super_simple_services}
\end{figure}
Emellett természetesen a jelenlegi \acrshort{iot} szoftverben is módosítást kell végezni, hogy ne használja a beépített \acrshort{ml} algoritmust. Ez a fejlesztés és tervezés során ideális, ha konfigurálható módon ki és be kapcsolható. De később teljesen el lehet távolítani az intelligens felismerésért felelős szoftver komponenst.
\subsection{Implementáció}
\subsubsection{Előszűrő szolgáltatás}
A mikroszolgáltatás fejlesztését \gls{python} nyelven végeztem. Azért ezt választottam, mert az \acrshort{iot} eszközön futó szoftver korábban abban íródott, ezért a releváns komponenseket könnyen át tudtam emelni.
A szoftverkomponens funkcionalitását tekintve három fő funkcionalitást kell megvalósítania. Ezek a \acrshort{http} kérések fogadása, intelligens felismerés futtatása, majd eredménytől függően újabb \acrshort{http} kérés indítása.
A \acrshort{http} interfész megvalósítására a \textit{Flask}\footnote{\url{https://flask.palletsprojects.com/}} mikrokeretrendszert használtam. Ez a keretrendszer könnyen bővíthető további letölthető beépülők segítségével a projekt többi területén is használom ezért választottam itt is ezt.
A felhős szoftver egy hangminta fogadása után egyből visszatér a válasszal. Ezt a viselkedést az új komponensestől is elvárhatjuk, hogy megtartsa. Ezért az nem egy jó megközelítés, hogy a kérés hatására a kérés kezelésének részeként hajtjuk végre az intelligens felismerést, hiszen ez olykor több ideig is eltarthat, előfordulhat, hogy egy komponenshez egyszerre több kérés is beérkezik, ez csak tovább rontaná a válaszidőt.
Ennek a problémának a megoldására az \textit{uWSGI}\footnote{\url{https://github.com/unbit/uwsgi}} futtató környezetet használtam. Ez a futtatókörnyezet lehetőséget ad arra, hogy párhuzamosan futó programkódot futtassunk a webes alkalmazásuk mellett, amellyel a webes része az alkalmazásunknak egy sor segítségével tud kommunikálni. Új hangminta érkezésekor az bekerül ebbe a várakozási sorba. Ebből a sorból egy párhuzamosan futó programrész veszi ki, futtatja le az intelligens felismerést és szükség esetén indítja a további \acrshort{http} kérést, amely tartalmilag megegyezik a hozzá beérkezett eredeti kéréssel.
A felismerő algoritmusnak szüksége van egy modell fájlra a működéséhez. Ez a modellfájlt tartalmazza a mesterséges intelligencia paramétereit. Ezeket a felhőből lehet letölteni, az \acrshort{iot} eszköz is innen tölti le, ha szüksége van rá. Ugyanezt a viselkedést implementáltam a mikroszolgáltatásba is. Futtatás előtt ellenőrzi, hogy rendelkezésére áll-e a modell. Ha nem, akkor \acrshort{http} kérés segítségével letölti azt a felhőből és betölti. Későbbi használatra betöltve tartja.
\subsubsection{\acrshort{iot} szoftver módosítása}
Az \acrshort{iot} eszköz szoftverén ahhoz hogy megvalósítsam a tervekben foglaltat, felvettem egy új konfigurációs változót. Ennek segítségével ki lehet kapcsolni a beépített intelligens szűrés futtatását.
A szoftveren belül az intelligens felismerést egy osztály valósítja meg. Megoldásomban létrehoztam egy osztályt, amelynek ugyanaz az interfésze, mint az intelligens felismerő osztálynak, de felismerés helyett mindig felküldésre ítéli a hangmintákat.
A konfigurációs beállítás a példányosításnál játszik szerepet. Azt befolyásolja hogy az eredeti osztály, vagy a fent vázolt osztályból jöjjön létre példány.
% a szükséges átalakításokat összeszedem
% Végül az elkészült műdől is írok pár sort és hogy miért jó ez nekünk
% = hogy lehet ezzel megmutatni, hogy miért jó a kenyér és a héja

View File

@ -3,11 +3,110 @@
\chapter{Teszt környezet kialakítása} \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.
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.
Ebben a fejezetben egy ilyen tesztkörnyezet fejlesztését és kialakítását mutatom be. A munkám során később ebben a rendszerben tudom tesztelni az elkészült szoftver rendszereket.
\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 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.
\item A felhő, perem infrastruktúra és kliens közötti hálózati tulajdonságok konfigurálhatóak legyenek.
\end{itemize}
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.
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.
\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. % TODODTODOTODOTODOTOD
% TODO: Ábra?
% itt részletezem
% TODO leírni a két felbontás miértjét, hogy miért jó ez nekünk
\subsection{Szerepek szerinti felbontás}
\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.
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 ö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.
\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.
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.
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.
\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.
Az egyes rétegek egymásra épülésének sorrendje a következő:
\begin{enumerate}
\item \textbf{Virtualizációs környezet:} Platform, amely a virtualizált infrastruktúra futtatását megvalósítja.
\item \textbf{(Virtuális) infrastruktúra:} A konkrét virtuális gépek és a virtuális hálózat konfigurációja.
\item \textbf{Operációs rendszer konfiguráció:} A használt operációs rendszer és a környezetben való működéséhez szükséges konfiguráció.
\item \textbf{Futtatókörnyezet:} Alkalmazás futtató környezet, amely felel a tesztelni kívánt alkalmazás futtatásáért. Egyben megfelel a valós környezetben használt futtató környezettel.
\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.
\section{Megvalósítás}
\begin{figure}[h!] \begin{figure}[h!]
\centering \centering
\includegraphics[width=1\textwidth]{figures/birb_edgemu_architecture} \includegraphics[width=1\textwidth]{figures/birb_edgemu_architecture}
\caption{asd} \caption{Teszt környezet architekturális vázlata}
\label{fig:birb_edgemu_architecture} \label{fig:birb_edgemu_architecture}
\end{figure} \end{figure}
% cloud a federáció vezérlő leader
\subsection{Virtuális gépek és hálózat}
% cloudinit
\subsection{Operációs rendszer konfigurációja}
% leírni mindhárom classt: kliens-emu, router, kubememe memeber
\subsection{\textit{Kubernetes} telepítése}
% Nginx ingress controller
% Longhorn storage class
\subsection{\textit{Kubefed} telepítése}
\section{Környezet alkalmazása}
% tc tutorial basically
%\section{Környezet értékelése}
% fogom a pontokat a célokból és elmondom, hogy mindet tök királyul teljesítettem.

Binary file not shown.

View File

@ -78,4 +78,6 @@
\usepackage{tabularx} \usepackage{tabularx}
\usepackage{rotating} \usepackage{rotating}
\usepackage{mdframed} \usepackage{mdframed}
\usepackage{pgf-pie} \usepackage{pgf-pie}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}

View File

@ -1,109 +1,109 @@
% !TeX spellcheck = hu_HU % !TeX spellcheck = hu_HU
% !TeX encoding = UTF-8 % !TeX encoding = UTF-8
% !TeX program = xelatex % !TeX program = xelatex
% Ezt nyomtatás előtt ne felejtsem el állítani majd: % Ezt nyomtatás előtt ne felejtsem el állítani majd:
\documentclass[11pt,a4paper,oneside]{report} % Single-side \documentclass[11pt,a4paper,oneside]{report} % Single-side
%\documentclass[11pt,a4paper,twoside,openright]{report} % Duplex %\documentclass[11pt,a4paper,twoside,openright]{report} % Duplex
\input{include/packages} \input{include/packages}
\newcommand{\vikszerzoVezeteknev}{Pünkösd} \newcommand{\vikszerzoVezeteknev}{Pünkösd}
\newcommand{\vikszerzoKeresztnev}{Marcell} \newcommand{\vikszerzoKeresztnev}{Marcell}
\newcommand{\vikkonzulensAMegszolitas}{dr.~} \newcommand{\vikkonzulensAMegszolitas}{dr.~}
\newcommand{\vikkonzulensAVezeteknev}{Maliosz} \newcommand{\vikkonzulensAVezeteknev}{Maliosz}
\newcommand{\vikkonzulensAKeresztnev}{Markosz} \newcommand{\vikkonzulensAKeresztnev}{Markosz}
%\newcommand{\vikkonzulensBMegszolitas}{dr.~} %\newcommand{\vikkonzulensBMegszolitas}{dr.~}
%\newcommand{\vikkonzulensBVezeteknev}{Simon} %\newcommand{\vikkonzulensBVezeteknev}{Simon}
%\newcommand{\vikkonzulensBKeresztnev}{Csaba} %\newcommand{\vikkonzulensBKeresztnev}{Csaba}
\newcommand{\vikcim}{Szolgáltatás létesítés peremhálózati és felhő számítástechnika ötvözésével} % Cím \newcommand{\vikcim}{Szolgáltatás létesítés peremhálózati és felhő számítástechnika ötvözésével} % Cím
\newcommand{\viktanszek}{\bmetmit} % Tanszék \newcommand{\viktanszek}{\bmetmit} % Tanszék
\newcommand{\vikdoktipus}{\msc} % Dokumentum típusa (\bsc vagy \msc) \newcommand{\vikdoktipus}{\msc} % Dokumentum típusa (\bsc vagy \msc)
\newcommand{\vikmunkatipusat}{diplomatervet} % a "hallgató nyilatkozat" részhez: szakdolgozatot vagy diplomatervet \newcommand{\vikmunkatipusat}{diplomatervet} % a "hallgató nyilatkozat" részhez: szakdolgozatot vagy diplomatervet
\input{include/tdk-variables} \input{include/tdk-variables}
\newcommand{\szerzoMeta}{\vikszerzoVezeteknev{} \vikszerzoKeresztnev} % egy szerző esetén \newcommand{\szerzoMeta}{\vikszerzoVezeteknev{} \vikszerzoKeresztnev} % egy szerző esetén
%\newcommand{\szerzoMeta}{\vikszerzoVezeteknev{} \vikszerzoKeresztnev, \tdkszerzoB} % két szerző esetén %\newcommand{\szerzoMeta}{\vikszerzoVezeteknev{} \vikszerzoKeresztnev, \tdkszerzoB} % két szerző esetén
\input{include/thesis-hu} \input{include/thesis-hu}
\input{include/preamble} \input{include/preamble}
%glossary stuff %glossary stuff
\glstoctrue \glstoctrue
\makeglossaries \makeglossaries
\include{content/glossary} % wut? \include{content/glossary} % wut?
%-------------------------------------------------------------------------------------- %--------------------------------------------------------------------------------------
% Table of contents and the main text % Table of contents and the main text
%-------------------------------------------------------------------------------------- %--------------------------------------------------------------------------------------
\begin{document} \begin{document}
\pagenumbering{gobble} \pagenumbering{gobble}
\selectthesislanguage \selectthesislanguage
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ %~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
\include{include/titlepage} \include{include/titlepage}
% Table of Contents % Table of Contents
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ %~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
\tableofcontents\vfill \tableofcontents\vfill
% Declaration and Abstract % Declaration and Abstract
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ %~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
\include{include/declaration} \include{include/declaration}
%\include{content/abstract} %\include{content/abstract}
% The main part of the thesis % The main part of the thesis
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ %~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
\pagenumbering{arabic} \pagenumbering{arabic}
\include{content/introduction} \include{content/introduction}
\include{content/overview} \include{content/overview}
\include{content/birbnetes_impl} \include{content/birbnetes_impl}
\include{content/ursim_impl} \include{content/ursim_impl}
\include{content/scheduling} \include{content/scheduling}
\include{content/test_system} \include{content/test_system}
\include{content/measurements} \include{content/measurements}
\include{content/conclusion} \include{content/conclusion}
% Acknowledgements % Acknowledgements
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ %~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
\include{content/acknowledgement} \include{content/acknowledgement}
% List of Figures, Tables % List of Figures, Tables
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ %~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
\listoffigures\addcontentsline{toc}{chapter}{\listfigurename} \listoffigures\addcontentsline{toc}{chapter}{\listfigurename}
\listoftables\addcontentsline{toc}{chapter}{\listtablename} \listoftables\addcontentsline{toc}{chapter}{\listtablename}
% Glossary + acronyms % Glossary + acronyms
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ %~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
\printglossaries \printglossaries
% Bibliography % Bibliography
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ %~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
\addcontentsline{toc}{chapter}{\bibname} \addcontentsline{toc}{chapter}{\bibname}
\bibliography{bib/mybib} \bibliography{bib/mybib}
% Appendix % Appendix
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ %~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
\include{content/appendices} %\include{content/appendices}
%\label{page:last} %\label{page:last}
\end{document} \end{document}