1
0
Fork 0
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

572 lines
26 KiB
TeX

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% %%
%% thesistemplate.tex version 3.20 (2018/08/31) %%
%% The LaTeX template file to be used with the aaltothesis.sty (version 3.20) %%
%% style file. %%
%% This package requires pdfx.sty v. 1.5.84 (2017/05/18) or newer. %%
%% %%
%% This is licensed under the terms of the MIT license below. %%
%% %%
%% Written by Luis R.J. Costa. %%
%% Currently developed at the Learning Services of Aalto University School of %%
%% Electrical Engineering by Luis R.J. Costa since May 2017. %%
%% %%
%% Copyright 2017-2018, by Luis R.J. Costa, luis.costa@aalto.fi, %%
%% Copyright 2017-2018 Swedish translations in aaltothesis.cls by Elisabeth %%
%% Nyberg, elisabeth.nyberg@aalto.fi and Henrik Wallén, %%
%% henrik.wallen@aalto.fi. %%
%% Copyright 2017-2018 Finnish documentation in the template opinnatepohja.tex%%
%% by Perttu Puska, perttu.puska@aalto.fi, and Luis R.J. Costa. %%
%% Copyright 2018 English template thesistemplate.tex by Luis R.J. Costa. %%
%% Copyright 2018 Swedish template kandidatarbetsbotten.tex by Henrik Wallen. %%
%% %%
%% Permission is hereby granted, free of charge, to any person obtaining a %%
%% copy of this software and associated documentation files (the "Software"), %%
%% to deal in the Software without restriction, including without limitation %%
%% the rights to use, copy, modify, merge, publish, distribute, sublicense, %%
%% and/or sell copies of the Software, and to permit persons to whom the %%
%% Software is furnished to do so, subject to the following conditions: %%
%% The above copyright notice and this permission notice shall be included in %%
%% all copies or substantial portions of the Software. %%
%% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR %%
%% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, %%
%% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL %%
%% THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER %%
%% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING %%
%% FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER %%
%% DEALINGS IN THE SOFTWARE. %%
%% %%
%% %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% %%
%% %%
%% An example for writting your thesis using LaTeX %%
%% Original version and development work by Luis Costa, changes to the text %%
%% in the Finnish template by Perttu Puska. %%
%% Support for Swedish added 15092014 %%
%% PDF/A-b support added on 15092017 %%
%% PDF/A-2 support added on 24042018 %%
%% %%
%% This example consists of the files %%
%% thesistemplate.tex (version 3.20) (for text in English) %%
%% opinnaytepohja.tex (version 3.20) (for text in Finnish) %%
%% kandidatarbetsbotten.tex (version 1.00) (for text in Swedish) %%
%% aaltothesis.cls (versio 3.20) %%
%% kuva1.eps (graphics file) %%
%% kuva2.eps (graphics file) %%
%% kuva1.jpg (graphics file) %%
%% kuva2.jpg (graphics file) %%
%% kuva1.png (graphics file) %%
%% kuva2.png (graphics file) %%
%% kuva1.pdf (graphics file) %%
%% kuva2.pdf (graphics file) %%
%% %%
%% %%
%% Typeset in Linux either with %%
%% pdflatex: (recommended method) %%
%% $ pdflatex thesistemplate %%
%% $ pdflatex thesistemplate %%
%% %%
%% The result is the file thesistemplate.pdf that is PDF/A compliant, if %%
%% you have chosen the proper \documenclass options (see comments below) %%
%% and your included graphics files have no problems.
%% %%
%% Or %%
%% latex: (this method is not recommended) %%
%% $ latex thesistemplate %%
%% $ latex thesistemplate %%
%% %%
%% The result is the file thesistemplate.dvi, which is converted to ps %%
%% format as follows: %%
%% %%
%% $ dvips thesistemplate -o %%
%% %%
%% and then to pdf as follows: %%
%% %%
%% $ ps2pdf thesistemplate.ps %%
%% %%
%% This pdf file is not PDF/A compliant. You must must make it so using, %%
%% e.g., Acrobat Pro or PDF-XChange. %%
%% %%
%% %%
%% Explanatory comments in this example begin with the characters %%, and %%
%% changes that the user can make with the character % %%
%% %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%% WHAT is PDF/A
%%
%% PDF/A is the ISO-standardized version of the pdf. The standard's goal is to
%% ensure that he file is reproducable even after a long time. PDF/A differs
%% from pdf in that it allows only those pdf features that support long-term
%% archiving of a file. For example, PDF/A requires that all used fonts are
%% embedded in the file, whereas a normal pdf can contain only a link to the
%% fonts in the system of the reader of the file. PDF/A also requires, among
%% other things, data on colour definition and the encryption used.
%% Currently three PDF/A standards exist:
%% PDF/A-1: based on PDF 1.4, standard ISO19005-1, published in 2005.
%% Includes all the requirements essential for long-term archiving.
%% PDF/A-2: based on PDF 1.7, standard ISO19005-2, published in 2011.
%% In addition to the above, it supports embedding of OpenType fonts,
%% transparency in the colour definition and digital signatures.
%% PDF/A-3: based on PDF 1.7, standard ISO19005-3, published in 2012.
%% Differs from the above only in that it allows embedding of files in
%% any format (e.g., xml, csv, cad, spreadsheet or wordprocessing
%% formats) into the pdf file.
%% PDF/A-1 files are not necessarily PDF/A-2 -compatible and PDF/A-2 are not
%% necessarily PDF/A-1 -compatible.
%% All of the above PDF/A standards have two levels:
%% b: (basic) requires that the visual appearance of the document is reliably
%% reproduceable.
%% a (accessible) in addition to the b-level requirements, specifies how
%% accessible the pdf file is to assistive software, say, for the physically
%% impaired.
%% For more details on PDF/A, see, e.g., https://en.wikipedia.org/wiki/PDF/A
%%
%%
%% WHICH PDF/A standard should my thesis conform to?
%%
%% Primarily to the PDF/A-1b standard. All the figures and graphs typically
%% use in thesis work do not require transparency features, a basic '2-D'
%% visualisation suffices. The font to be used are specified in this template
%% and they should not be changed. However, if you have figures where
%% transparency characteristics matter, use the PDF/A-2b standard. Do not use
%% the PDF/A-3b standard for your thesis.
%%
%%
%% WHAT graphics format can I use to produce my PDF/A compliant file?
%%
%% When using pdflatex to compile your work, use jpg, png or pdf files. You may
%% have PDF/A compliance problems with figures in pdf format. Do not use PDF/A
%% compliant graphics files.
%% If you decide to use latex to compile your work, the only acceptable file
%% format for your figure is eps. DO NOT use the ps format for your figures.
%% USE one of these:
%% * the first when using pdflatex, which directly typesets your document in the
%% chosen pdf/a format and you want to publish your thesis online,
%% * the second when you want to print your thesis to bind it, or
%% * the third when producing a ps file and a pdf/a from it.
%%
\documentclass[english, 12pt, a4paper, sci, utf8, a-1b, online]{aaltothesis}
%\documentclass[english, 12pt, a4paper, elec, utf8, a-1b]{aaltothesis}
%\documentclass[english, 12pt, a4paper, elec, dvips, online]{aaltothesis}
%% Use the following options in the \documentclass macro above:
%% your school: arts, biz, chem, elec, eng, sci
%% the character encoding scheme used by your editor: utf8, latin1
%% thesis language: english, finnish, swedish
%% make an archiveable PDF/A-1b or PDF/A-2b compliant file: a-1b, a-2b
%% (with pdflatex, a normal pdf containing metadata is
%% produced without the a-*b option)
%% typeset in symmetric layout and blue hypertext for online publication: online
%% (no option is the default, resulting in a wide margin on the
%% binding side of the page and black hypertext)
%% two-sided printing: twoside (default is one-sided printing)
%%
%% Use one of these if you write in Finnish (see the Finnish template
%% opinnaytepohja.tex)
%\documentclass[finnish, 12pt, a4paper, elec, utf8, a-1b, online]{aaltothesis}
%\documentclass[finnish, 12pt, a4paper, elec, utf8, a-1b]{aaltothesis}
%\documentclass[finnish, 12pt, a4paper, elec, dvips, online]{aaltothesis}
\usepackage{graphicx}
\usepackage{subcaption}
%% Math fonts, symbols, and formatting; these are usually needed
\usepackage{amsfonts,amssymb,amsbsy,amsmath}
%% I prefer this font
\usepackage{XCharter}
%% For making various kinds of underlines
%% normalem: do not replace emph with underlines
\usepackage[normalem]{ulem}
%% Change the school field to specify your school if the automatically set name
%% is wrong
% \university{aalto-yliopisto}
%% Edit to conform to your degree programme
%%
\degreeprogram{Master's Programme in Security and Cloud Computing}
%%
%% Your major
%%
\major{Security and Cloud Computing}
%%
%% Major subject code
%%
\code{SCI3113}
%%
%% Choose one of the three below
%%
\univdegree{MSc}
%% Your name (self explanatory...)
%%
\thesisauthor{Jack Henschel}
%%
%% Your thesis title comes here and possibly again together with the Finnish or
%% Swedish abstract. Do not hyphenate the title, and avoid writing too long a
%% title. Should LaTeX typeset a long title unsatisfactorily, you mght have to
%% force a linebreak using the \\ control characters.
%% In this case...
%% Remember, the title should not be hyphenated!
%% A possible "and" in the title should not be the last word in the line, it
%% begins the next line.
%% Specify the title again without the linebreak characters in the optional
%% argument in box brackets. This is done because the title is part of the
%% metadata in the pdf/a file, and the metadata cannot contain linebreaks.
%%
\thesistitle{Dimensioning, Performance and Optimization of Cloud-native Applications}
%% \thesistitle[Dimensioning, Performance and Optimization of Cloud-native Applications]{Dimensioning, Performance\\and Optimization of\\Cloud-native Applications}
%\thesistitle[Title of the thesis]{Title of\\ the thesis}
%%
%%
\place{Espoo}
%%
%% The date for the bachelor's thesis is the day it is presented
%%
\date{31.8.2018}
%%
%% Thesis supervisor
%% Note the "\" character in the title after the period and before the space
%% and the following character string.
%% This is because the period is not the end of a sentence after which a
%% slightly longer space follows, but what is desired is a regular interword
%% space.
%%
\supervisor{Prof.\ Mario Di Francesco\\ Prof.\ Raja Appuswamy}
%%
%% Advisor(s)---two at the most---of the thesis. Check with your supervisor how
%% many official advisors you can have.
%%
\advisor{M.Sc Yacine Khettab}
%%
%% Aaltologo: syntax:
%% \uselogo{aaltoRed|aaltoBlue|aaltoYellow|aaltoGray|aaltoGrayScale}{?|!|''}
%% The logo language is set to be the same as the thesis language.
%%
\uselogo{aaltoRed}{!}
%%
%% The English abstract:
%% All the details (name, title, etc.) on the abstract page appear as specified
%% above.
%% Thesis keywords:
%% Note! The keywords are separated using the \spc macro
%%
\keywords{kubernetes\spc autoscaling\spc cloud-native\spc monitoring\spc performance}
%%
%% The abstract text. This text is included in the metadata of the pdf file as well
%% as the abstract page.
%%
\thesisabstract{
TODO TODO TODO TODO TODO TODO TODO TODO TODO
}
%% Copyright text. Copyright of a work is with the creator/author of the work
%% regardless of whether the copyright mark is explicitly in the work or not.
%% You may, if you wish, publish your work under a Creative Commons license (see
%% creaticecommons.org), in which case the license text must be visible in the
%% work. Write here the copyright text you want. It is written into the metadata
%% of the pdf file as well.
%% Syntax:
%% \copyrigthtext{metadata text}{text visible on the page}
%%
%% In the macro below, the text written in the metadata must have a \noexpand
%% macro before the \copyright special character, and macros (\copyright and
%% \year here) must be separated by the \ character (space chacter) from the
%% text that follows. The macros in the argument of the \copyrighttext macro
%% automatically insert the year and the author's name. (Note! \ThesisAuthor is
%% an internal macro of the aaltothesis.cls class file).
%% Of course, the same text could have simply been written as
%% \copyrighttext{Copyright \noexpand\copyright\ 2018 Eddie Engineer}
%% {Copyright \copyright{} 2018 Eddie Engineer}
%%
\copyrighttext{Copyright \noexpand\copyright\ \number\year\ \ThesisAuthor}
{Copyright \copyright{} \number\year{} \ThesisAuthor}
%% You can prevent LaTeX from writing into the xmpdata file (it contains all the
%% metadata to be written into the pdf file) by setting the writexmpdata switch
%% to 'false'. This allows you to write the metadata in the correct format
%% directly into the file thesistemplate.xmpdata.
%\setboolean{writexmpdatafile}{false}
%% Customize page headers
\usepackage{fancyhdr}
\setlength{\headheight}{15pt}
\renewcommand{\headrulewidth}{0.5pt}
\newcommand{\myleftmark}{Chapter~\leftmark} % name of section
\fancyhf{}
\lhead{\myleftmark}
\rhead{Page \thepage} % page number
%% Macros to easily write and highlight items in the text.
\newcommand\red[1]{\textcolor{red}{#1}}
\newcommand\orange[1]{\textcolor{orange}{#1}}
\newcommand\todo[1]{\red{TODO: #1}}
\newcommand\improve[1]{\orange{\uwave{#1}}}
%% Command for making pretty quotes at beginning of chapter
%% \chapterquote{Text}{Author}{Underrule length}
\newcommand{\chapterquote}[3]{{
\begin{flushright}
%% \vspace{-2.5em}
\textit{"#1"}
\\
--- #2
\\
\rule{#3}{\linethickness}
\end{flushright}
}}
%% Command for making multi-line table cells (centers horizontally and verticall).
%% Usage: \bigcell{c}{One \\ Two}
%% https://tex.stackexchange.com/a/38929
\newcommand{\bigcell}[2]{{\renewcommand{\arraystretch}{1.1}\begin{tabular}{@{}#1@{}}#2\end{tabular}}}
%% For Pandoc output
%% https://tex.stackexchange.com/a/258486
\providecommand{\tightlist}{%
\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
%% Import and configure listings package
\usepackage{listings}
\lstset{
basicstyle=\color{black}\bfseries\ttfamily\footnotesize,
xleftmargin=\parindent,
keywordstyle=\color{blue}\bfseries,
commentstyle=\color{purple}\itshape,
}
% Define listing style for yaml code
% https://tex.stackexchange.com/a/152856
\newcommand\YAMLcolonstyle{\color{red}\mdseries}
\newcommand\YAMLkeystyle{\color{black}\bfseries\ttfamily\footnotesize}
\newcommand\YAMLvaluestyle{\color{blue}\mdseries}
\makeatletter
% here is a macro expanding to the name of the language
% (handy if you decide to change it further down the road)
\newcommand\language@yaml{yaml}
\expandafter\expandafter\expandafter\lstdefinelanguage
\expandafter{\language@yaml}
{
keywords={true,false,null,y,n},
sensitive=false,
showspaces=false,
showtabs=false,
showstringspaces=false,
comment=[l]{\#},
morecomment=[s]{/*}{*/},
moredelim=[l][\color{orange}]{\&},
moredelim=[l][\color{magenta}]{*},
moredelim=**[il][\YAMLcolonstyle{:}\YAMLvaluestyle]{:},
morestring=[b]',
morestring=[b]",
literate = {---}{{\ProcessThreeDashes}}3
{>}{{\textcolor{red}\textgreater}}1
{|}{{\textcolor{red}\textbar}}1
{\ -\ }{{\mdseries\ -\ }}3,
}
% switch to key style at EOL
\lst@AddToHook{EveryLine}{\ifx\lst@language\language@yaml\YAMLkeystyle\fi}
\makeatother
\newcommand\ProcessThreeDashes{\llap{\color{cyan}\mdseries-{-}-}}
%% Define listing style for Go code
\lstdefinelanguage{Go}{%
morekeywords={append,bool,break,byte,cap,case,chan,close,complex,%
complex128,complex64,const,continue,copy,default,defer,delete,%
else,error,fallthrough,false,float32,float64,for,func,go,goto,%
if,imag,import,int,int16,int32,int64,int8,interface,iota,len,%
make,map,new,nil,package,panic,print,println,range,real,%
recover,return,rune,select,string,struct,switch,true,type,%
uint,uint16,uint32,uint64,uint8,uintptr,var},%
sensitive,%
morecomment=[s]{/*}{*/},%
morecomment=[l]//,%
morestring=[b]',%
morestring=[b]",%
morestring=[s]{`}{`},%
}[keywords,comments,strings]%
%% Make pretty quotes
%% https://tex.stackexchange.com/a/265697
\usepackage{mdframed} % Add easy frames to paragraphs
\newmdenv[ % Define mdframe settings and store as leftrule
linecolor=gray,
topline=false,
bottomline=false,
rightline=false,
skipabove=\topsep,
skipbelow=\topsep
]{leftrule}
\newcommand{\nop}[1]{}
%% All that is printed on paper starts here
%%
\begin{document}
%% Create the coverpage
%%
\makecoverpage
%% Typeset the copyright text.
%% If you wish, you may leave out the copyright text from the human-readable
%% page of the pdf file. This may seem like a attractive idea for the printed
%% document especially if "Copyright (c) yyyy Eddie Engineer" is the only text
%% on the page. However, the recommendation is to print this copyright text.
%%
%\makecopyrightpage
%% Note that when writting your thesis in English, place the English abstract
%% first followed by the possible Finnish or Swedish abstract.
%% Abstract text
%% All the details (name, title, etc.) on the abstract page appear as specified
%% above.
%%
\begin{abstractpage}[english]
Cloud computing and OS-level virtualization in the form of containers have seen major adoption over the last decade.
Due to this, several container orchestration platforms were developed, with Kubernetes gaining a majority of the market share.
Applications running on Kubernetes are often developed with a microservices architecture.
This means that applications are split into loosely coupled services which can be distributed across many servers.
The distributed nature of this architecture poses significant challenges for the observability of application performance.
We investigate how such a cloud-native application can be monitored and dimensioned to ensure smooth operation.
Based on this fundamental work, we explore the topic of autoscaling for performance and cost optimization in Kubernetes.
Autoscaling refers to automatically adjusting the amount of allocated resources based on the application load.
Our results show that thanks to the elasticity gained by autoscaling, we can gain performance and reduce costs compared to static dimensioning.
This thesis also contributes an overview of available literature about cloud application autoscaling.
Specifically, we perform a survey of research proposals for novel Kubernetes autoscalers.
The evaluation of these autoscaler shows that for this topic there is significant gap between the available research and usage in the industry.
We propose a modular autoscaling component for Kubernetes to bridge this gap.
\end{abstractpage}
\begin{abstractpage}[french]
TODO
Lorem ipsum.
\end{abstractpage}
%% Preface
%%
%% This section is optional. Remove it if you do not want a preface.
\mysection{Preface}
First of all, I want to thank the SECCLO consortium for giving me the opportunity to participate in this exciting degree programme and study at two excellent universities.
During the course of this programme I was able to explore two countries, meet new friends and in general broaden my intellectual and cultural horizon.
Special thanks to \textbf{Eija Kujanpää}, \textbf{Laura Mursu}, \textbf{Anne Kiviharju} and \textbf{Gwenaëlle Le Stir} for their administrative support during this time.
I would like to thank \textbf{Mario Di Francesco}, my main academic supervisor at Aalto University, for his continuous, comprehensive and honest feedback about my thesis.
Also thanks to \textbf{Raja Appuswamy} for being my academic supervisor at EURECOM.
\textbf{Yacine Khettab}, my thesis instructor, gave helpful guidance while starting my work at Ericsson and proofread several drafts.
I am thankful for \textbf{Adam Peltoniemi}, my manager, who hired me for Ericsson and gave me enough time to work freely on my thesis.
I am grateful for the help of my colleagues at Ericsson, who provided inputs and guidance for setting up a test environment for experiments:
\textbf{Gábor Kapitány}, \textbf{Olli Salonen}, \textbf{Tomi Poutanen}, \textbf{Bálint Csatári} and \textbf{Jussi Tuomela}.
Finally, I would like to thank my editor, GNU Emacs, for allowing me to seamlessly develop, write and edit all aspects of the work covered in this thesis.
\begin{center}
\rule{5in}{\linethickness}
\end{center}
I warrant that the thesis is my original work and that I have not received outside assistance.
Only the sources cited have been used in this thesis.
Parts that are direct quotes or paraphrases are identified as such.
\vspace{5cm}
Otaniemi, 30.7.2021 \todo{}
\vspace{5mm}
{\hfill Jack Henschel \hspace{1cm}}
\todo{Push me to the bottom of the page}
\begin{center}
\includegraphics[width=6cm]{presentation/erasmus-mundus.png}
\end{center}
%% Force a new page after the preface
%%
\newpage
%% Table of contents.
%%
\thesistableofcontents
%% Symbols and abbreviations
\mysection{Abbreviations}
\begin{tabular}{ll}
API & Application Programming Interface \\
CA & Cluster Autoscaler (Kubernetes) \\
CPU & Central Processing Unit \\
CRD & Custom Resource Definition (Kubernetes) \\
HPA & Horizontal Pod Autoscaler (Kubernetes) \\
HTTP & Hypertext Transport Protocol \\
I/O & Input and Output operations \\
IP & Internet Protocol \\
KEDA & Kubernetes Event-driven Autoscaling \\
KEP & Kubernetes Enhancement Proposal \\
QoS & Quality of Service \\
SLA & Service Level Agreement \\
SLI & Service Level Indicator \\
SLO & Service Level Objective \\
SSH & Secure Shell \\
VM & Virtual Machine \\
VPA & Vertical Pod Autoscaler (Kubernetes) \\
YAML & YAML Ain't Markup Language \\
\end{tabular}
%% \clearpage is similar to \newpage, but it also flushes the floats (figures and tables).
\cleardoublepage
%% Pretty page headers start from here on
\pagestyle{fancy}
%% Note: each include automatically produces a \clearpage
\include{include/01-introduction}
\include{include/02-background}
\include{include/03-research}
\include{include/04-implementation}
\include{include/05-evaluation}
\include{include/06-conclusion}
%% Reset header to just chapter name (without "Chapter")
\renewcommand{\myleftmark}{\leftmark}
\thesisbibliography
\bibliographystyle{IEEEtranUrldate}
\bibliography{include/references}
%% Appendices
%% If you don't have appendices, remove \clearpage and \thesisappendix below.
\clearpage
\thesisappendix
\include{include/appendices}
\end{document}