Veebirakenduste skaleerimine Amazon Cloud'is

Date

2012

Journal Title

Journal ISSN

Volume Title

Publisher

Tartu Ülikool

Abstract

Käesolev diplomitöö üritab leida lahenduse küsimusele, kuidas õigesti skaleerida veebirakendusi Amazon Cloud’is. Amazon Cloud pakub häid võimalusi veebimajutuse ja veebirakenduse skaleerimise osas, kuid on väga raske leida detailseid juhendeid põhjaliku sammude seletusega ja nende sammude tegemise põhjustega. Üheks eesmärgiks on kõigi teostatud sammude detailne seletamine, et lugeja oskaks nii oma rakendusi skaleerida kui ka saaks kõigist sammudest aru. Diplomitöö võib tulla kasuks igaühele, kes soovib Amazon Cloud’i kasutades rakendust luua. Seda juhtub üsna tihti, et üks server pole enam võimeline rakendust õigesti jooksutada. Selle põhjuseks võivad olla rakendusele pööratava tähelepanu järkjärguline kasv või ajutised hüpped (näiteks artikkel ajakirjas). Sel juhul tuleb rakendust skaleerida. Antud diplomitöö aitabki sellega hakkama saada. Siin ei ole ainult kirjeldatud serveri(-te) koormatusest sõltuva dünaamilise skaleerimise ülesseadmine, vaid ka iga eraldi serveri ülesseadmine nii, et need töötaks maksimaalse tootlusega: mis konfiguratsiooni kasutada (Apache vs lighttpd, nginx, memcached, jne), kuidas koormust jagada serverite vahel, kuidas kasutada erinevaid Amazon Cloud mehhanisme skaleerimise lihtsustamiseks. Võttes arvesse seda, et diplomitöö aitab saavutada maksimaalseid tulemusi igal serveril, aitab see samal ajal minimiseerida veebirakenduse majutamise kulutusi. Amazon Cloud on kiirelt kasvav teenuste kogum ning selle tõttu on üheks peamiseks eesmärgiks üritada anda uusim ülevaade teenustest, mis võivad olla kasulikud veebirakenduste skaleerimisel. Antud diplomitöös on välja toodud mitmeid visualiseeritud tulemustega koormusteste, mis võivad olla kasulikud igaühele oma skaleerimise meetodite kindlakstegemisel. Amazon Web Services omab üsna kasutajasõbralikku GUI-d, kuid teatud tegevused (nagu dünaamilise skaleerimise üles seadmine) vajavad konsoolirakenduste ja halvasti dokumenteeritud API-de kasutamist. Peamiseks väljakutseks on üritada leida kõik asjakohased andmed detailsete kirjeldustega ja panna kokku ühte dokumenti. Teiseks väljakutseks on mitmete testide jooksutamine, mille väljundiks on visualiseeritud andmed, mis aitavad kindlaks teha veebirakenduse skaleerimise parimad optsioonid. Erinevates keskkondades testitavaks veebirakenduseks on MediaWiki – PHP-s kirjutatud tasuta ja avatud lähtekoodiga wiki-tarkvarapakett, mis on esialgselt mõeldud Wikipedias kasutamiseks. Praegu on see kasutusel mitmes mittetulundusliku Wikimedia Foundation’i projektis ja mitmes teises wikis. MediaWiki on üks kõige populaarsemaid rakendusi isikliku wiki jooksutamisel, see on ka väga võimas ning seetõttu ressursinõudlik. Samal ajal on seda ka väga kerge skaleerida, mis teeb MediaWikist parima võimaliku veebirakenduse antud diplomitöö raames uurimiseks.
The problem which is being tried to solve in current thesis is how to properly scale web applications in Amazon Cloud. Amazon Cloud offers great options for hosting and scaling web applications, but it is quite difficult to find detailed manuals with exhaustive explanation of steps and reasons these steps were taken. One of the goals is to explain all the steps performed in detail, so the reader would not only know how to scale his application, but will understand all the steps. The thesis may be useful to anyone willing to build an application using Amazon Cloud. It often happens that one server is no longer capable of run an application properly. It may happen due to the gradual growth of attention to application, or temporary bursts (eg caused by an article in a magazine). Then one needs to scale his application. Current thesis will help one to solve this problem. It will not only tell how to setup dynamic scaling that depends on server(s) load, but how to setup each server to give close to maximum performance: which software to use (Apache vs lighttpd, nginx, memcached, etc), how to distribute the load between servers, how to use different Amazon Cloud mechanisms to make scaling easier. Taking into account the fact that thesis will help to achieve maximum results from each server, the thesis will help one to minimize the amount of money spent on hosting of web application. Amazon Cloud is rapidly growing set of services, that is why one of the main goals is try to give the most recent overview of services that may be helpful for scaling web application. Current thesis will contain a number of load tests that will produce visualized results that might be helpful to determine one’s own methods of scaling. Amazon Web Services have quite user-friendly GUI, but some specific actions (as setting up dynamic scaling) require usage of console applications and APIs that are poorly documented. Main challenge is to try to collect all the relevant data with detailed explanations into one paper. Another challenge is to run a number of tests that will output the visualized data that will help to determine best options to scale web application. The web application which will be tested in different environments is MediaWiki - a free software open source wiki package written in PHP, originally for use on Wikipedia. It is now used by several other projects of the non-profit Wikimedia Foundation and by many other wikis. MediaWIki is one of the most popular applications for running personal wiki, very powerful, therefore very demanding of resources. At the same time it is easy to scale which is why it makes MediaWiki the ultimate base application for research in terms of the thesis.

Description

Keywords

Citation