Suorituskykyinen palvelinohjelmisto reaaliaikaiselle web-sovellukselle
Jompa, Jante (2023-06-15)
Jompa, Jante
J. Jompa
15.06.2023
© 2023 Jante Jompa. Ellei toisin mainita, uudelleenkäyttö on sallittu Creative Commons Attribution 4.0 International (CC-BY 4.0) -lisenssillä (https://creativecommons.org/licenses/by/4.0/). Uudelleenkäyttö on sallittua edellyttäen, että lähde mainitaan asianmukaisesti ja mahdolliset muutokset merkitään. Sellaisten osien käyttö tai jäljentäminen, jotka eivät ole tekijän tai tekijöiden omaisuutta, saattaa edellyttää lupaa suoraan asianomaisilta oikeudenhaltijoilta.
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:oulu-202306152527
https://urn.fi/URN:NBN:fi:oulu-202306152527
Tiivistelmä
Internetin yleistymisen myötä selainten ominaisuudet ovat laajentuneet, ja nykyään web-teknologiat mahdollistavat alustariippumattoman ja kustannustehokkaan sovelluskehityksen. Interaktiiviset web-sovellukset luovat tarpeen palvelinohjelmistolle, joka kykenee tarjoamaan reaaliaikaisia resursseja suurelle määrälle samanaikaisia käyttäjiä.
Tässä työssä suunnitellaan ja toteutetaan skaalautuva palvelinjärjestelmä reaaliaikaiselle web-sovellukselle. Järjestelmän skaalauksen tarkoituksena on saavuttaa kyky palvella mahdollisimman suurta määrää yhtäaikaisia käyttäjiä. Käyttäjien tulee pystyä olemaan keskenään interaktiivisessa kanssakäymisessä jaettujen resurssien kautta.
Järjestelmän suunnittelufilosofiana on, että tapahtumat välittyvät järjestelmästä niistä kiinnostuneille tahoille ilman, että mikään järjestelmän osa hakee minkään resurssin tilaa toistuvasti uudestaan. Sen sijaan resurssien muutokset ja muut viestit lähetetään suoraan niistä kiinnostuneille tahoille heti, kun ne tapahtuvat. Järjestelmän arkkitehtuurin vaatimuksiksi muodostuvat reaaliaikaisuus, interaktiivisuus, skaalautuvuus ja suorituskyky.
Työssä käsitellään vaatimusten vaikutuksia järjestelmän arkkitehtuuriin ja sitä käyttävien ohjelmistojen suunnitteluun. Lisäksi arvioidaan järjestelmän soveltuvuutta erilaisten sovellusten käyttöön sekä sen arkkitehtuurin heikkouksia. Myös erilaisten ohjelmistokomponenttien skaalaaminen, suunnittelun kannalta olennaiset tekniikat sekä järjestelmän toteutuksessa käytetyt teknologiat käydään läpi.
Järjestelmän arkkitehtuurivaatimusten täyttymisen arvioimiseksi toteutetaan esimerkkisovelluksen suorittamiseen käytettävä järjestelmä, jota testataan simuloimalla suuria määriä sovellusta käyttäviä käyttäjiä. Testeissä mitataan järjestelmän suorituskykyä ja skaalautuvuutta, ja tulosten avulla voidaan arvioida, miten skaalauksen kasvattamisella voidaan parantaa järjestelmän suorituskykyä. Tulosten avulla arvioidaan myös järjestelmän suunnittelun vaatimusten täyttymistä ja skaalauksen toimivuutta käytännössä. Lisäksi käydään läpi mahdollisia tapoja parantaa järjestelmän suorituskykyä.
Tulokset olivat hyviä. Testien aikana järjestelmä pystyi käsittelemään parhaimmillaan lähes 5000 viestiä sekunnissa yli tuhannelta samanaikaiselta simuloidulta käyttäjältä. Tulosten perusteella järjestelmän suorituskykyvaatimuksen voidaan katsoa täyttyvän. Myös interaktiivisuus- ja skaalautumisvaatimusten katsotaan täyttyvän, sillä interaktiivisia toimintoja sisältävän esimerkkisovelluksen suorituskykyä voitiin merkitävästi parantaa muuttamalla järjestelmän osien skaalausta. Työn lopuksi käydään läpi järjestelmän jatkokehitysmahdollisuuksia pilvipalveluun siirtymisen osalta. With the spread of the Internet, the capabilities of browsers have expanded, and today’s web technologies enable platform-independent and cost-effective application development. Interactive web applications create a need for server software, capable of providing real-time resources to a large number of concurrent users.
In this thesis, a scalable server system is designed and implemented for a real-time web application. The purpose of scaling is to achieve the ability to serve maximum number of simultaneous users. Users must be able to interact with each other through common shared resources.
The design philosophy of the system is, that events are transmitted from the system to interested parties without any part of the system repeatedly fetching the state of any resource. Instead, resource changes and other messages are sent directly to interested parties immediately, when they happen. The requirements for the system’s architecture are real-time, interactivity, scalability and performance.
The thesis discusses the effects of requirements on the system’s architecture and on to the design of the software that uses it. In addition, the system’s suitability for different applications is evaluated as well as the weaknesses of its architecture. The scaling of different software components, technologies relevant to design and the technologies used in the system’s implementation are also discussed.
In order to evaluate the architectural requirements of the system, a test system is implemented to execute an example application. The system is tested by simulating large numbers of users using the example application. The tests measure system performance and scalability, and the results are used to assess, how increasing scaling can improve system performance. The results are also used to evaluate the fulfillment of the system design requirements and functionality of scaling in practice. In addition, possible ways to improve system performance are reviewed.
The results were good. The system could handle almost 5000 messages per second with over a thousand simultaneous simulated users. The performance requirement of the system can therefore be considered met. Interactivity and scalability requirements are also considered met, as the performance of the example application containing interactive functions could be significantly improved by changing the scaling of system components. At the end of the thesis, future work is discussed in terms of moving the system to a cloud platform.
Tässä työssä suunnitellaan ja toteutetaan skaalautuva palvelinjärjestelmä reaaliaikaiselle web-sovellukselle. Järjestelmän skaalauksen tarkoituksena on saavuttaa kyky palvella mahdollisimman suurta määrää yhtäaikaisia käyttäjiä. Käyttäjien tulee pystyä olemaan keskenään interaktiivisessa kanssakäymisessä jaettujen resurssien kautta.
Järjestelmän suunnittelufilosofiana on, että tapahtumat välittyvät järjestelmästä niistä kiinnostuneille tahoille ilman, että mikään järjestelmän osa hakee minkään resurssin tilaa toistuvasti uudestaan. Sen sijaan resurssien muutokset ja muut viestit lähetetään suoraan niistä kiinnostuneille tahoille heti, kun ne tapahtuvat. Järjestelmän arkkitehtuurin vaatimuksiksi muodostuvat reaaliaikaisuus, interaktiivisuus, skaalautuvuus ja suorituskyky.
Työssä käsitellään vaatimusten vaikutuksia järjestelmän arkkitehtuuriin ja sitä käyttävien ohjelmistojen suunnitteluun. Lisäksi arvioidaan järjestelmän soveltuvuutta erilaisten sovellusten käyttöön sekä sen arkkitehtuurin heikkouksia. Myös erilaisten ohjelmistokomponenttien skaalaaminen, suunnittelun kannalta olennaiset tekniikat sekä järjestelmän toteutuksessa käytetyt teknologiat käydään läpi.
Järjestelmän arkkitehtuurivaatimusten täyttymisen arvioimiseksi toteutetaan esimerkkisovelluksen suorittamiseen käytettävä järjestelmä, jota testataan simuloimalla suuria määriä sovellusta käyttäviä käyttäjiä. Testeissä mitataan järjestelmän suorituskykyä ja skaalautuvuutta, ja tulosten avulla voidaan arvioida, miten skaalauksen kasvattamisella voidaan parantaa järjestelmän suorituskykyä. Tulosten avulla arvioidaan myös järjestelmän suunnittelun vaatimusten täyttymistä ja skaalauksen toimivuutta käytännössä. Lisäksi käydään läpi mahdollisia tapoja parantaa järjestelmän suorituskykyä.
Tulokset olivat hyviä. Testien aikana järjestelmä pystyi käsittelemään parhaimmillaan lähes 5000 viestiä sekunnissa yli tuhannelta samanaikaiselta simuloidulta käyttäjältä. Tulosten perusteella järjestelmän suorituskykyvaatimuksen voidaan katsoa täyttyvän. Myös interaktiivisuus- ja skaalautumisvaatimusten katsotaan täyttyvän, sillä interaktiivisia toimintoja sisältävän esimerkkisovelluksen suorituskykyä voitiin merkitävästi parantaa muuttamalla järjestelmän osien skaalausta. Työn lopuksi käydään läpi järjestelmän jatkokehitysmahdollisuuksia pilvipalveluun siirtymisen osalta.
In this thesis, a scalable server system is designed and implemented for a real-time web application. The purpose of scaling is to achieve the ability to serve maximum number of simultaneous users. Users must be able to interact with each other through common shared resources.
The design philosophy of the system is, that events are transmitted from the system to interested parties without any part of the system repeatedly fetching the state of any resource. Instead, resource changes and other messages are sent directly to interested parties immediately, when they happen. The requirements for the system’s architecture are real-time, interactivity, scalability and performance.
The thesis discusses the effects of requirements on the system’s architecture and on to the design of the software that uses it. In addition, the system’s suitability for different applications is evaluated as well as the weaknesses of its architecture. The scaling of different software components, technologies relevant to design and the technologies used in the system’s implementation are also discussed.
In order to evaluate the architectural requirements of the system, a test system is implemented to execute an example application. The system is tested by simulating large numbers of users using the example application. The tests measure system performance and scalability, and the results are used to assess, how increasing scaling can improve system performance. The results are also used to evaluate the fulfillment of the system design requirements and functionality of scaling in practice. In addition, possible ways to improve system performance are reviewed.
The results were good. The system could handle almost 5000 messages per second with over a thousand simultaneous simulated users. The performance requirement of the system can therefore be considered met. Interactivity and scalability requirements are also considered met, as the performance of the example application containing interactive functions could be significantly improved by changing the scaling of system components. At the end of the thesis, future work is discussed in terms of moving the system to a cloud platform.
Kokoelmat
- Avoin saatavuus [34186]