**Veebirakendus** on arvutitarkvara või programm, mida hoitakse veebiserveris ning mida saab kasutada interneti kaudu veebibrauserite abil. Veebirakendust ei pea alla laadima, vaid saab kasutada võrgus igal ajal, eeldades, et on olemas internetiühendus ja veebibrauser.

Arhitektuur
-----------

Veebirakenduse arhitektuur kirjeldab rakenduse, serveri ja andmebaasi vahelist suhtlust. Rakenduse arhitektuur peab tagama programmi efektiivse töö, aga samas ka selle turvalisuse ja kasutaja mugavuse.

Veebirakendus koosneb peamiselt kahest osast: kliendipoolne kood ja serveripoolne kood. 

Veebirakendusi luuakse enamasti veebibrauserite toetatud keeltega nagu HTML, CSS ja JavaScript. Need keeled on peamiselt rakenduse kasutajapoolne osa ehk *frontend* – kõik, mida kasutaja visuaalselt näeb ja kasutada saab. Teine pool veebirakendusel on tema tööloogika ja funktsioonid ehk serveri- ja andmebaasipoolne kood. Seda osa nimetatakse *backend*’iks. *Backend*’is saadakse infot kasutajalt ehk *frontend*’ist, antud infot töödeldakse vastavalt koodi loogikale ja andmebaasist saadud andmetele ning soovitud teave saadetakse tagasi kasutajale. *Backend*’i arenduseks on aga rohkem võimalusi kui *frontend*’il. Enamik tänapäeval kasutatavaid programmeerimiskeeli toetavad veebirakenduse *backend*-arendust, näiteks Java, Python, C#, PHP, SQL, JavaScript ja paljud teised.

### Veebirakenduse tööloogika

1. Kasutaja algatab päringu, mis saadetakse veebiserverisse interneti kaudu. Näiteks sisselogimisel sisestab tarvitaja kasutajanime ja parooli ning algatab sisselogimise päringu vajutades nuppu „Logi sisse".
2. Veebiserver edastab päringu veebirakenduse serverile.
3. Veebirakenduse serveris tehakse saadud andmetele vastav tegevus, mis tagastab küsitud andmed. Näiteks kontrollitakse, kas andmebaasis leidub selline kasutajanimi ja sellele vastav parool.
4. Veebirakenduse server saadab töödeldud andmed tagasi veebiserverile.
5. Veebiserver tagastab saadud andmed kliendile, kuvades tulemuse veebibrauseris. Näiteks, kui kasutaja sisestatud andmed olid õiged, siis veebibrauseris seda ka kuvatakse.

Kirjeldatud protsess toimub peaaegu iga kord, kui kasutaja midagi veebirakenduses teeb.

Veebirakenduse eelised
----------------------

* Rakenduse üks versioon on üheaegselt kättesaadav kõigile kasutajatele.
* Veebirakendusi ei pea arvutisse installima. Piisab interneti ühendusest ja veebibrauserist.
* Veebirakendusi saab kasutada mitmete veebibrauserite kaudu.
* Veebirakendusi saab kasuta kõikidel seadmetel, mis toetavad veebibrausereid, sh arvutid ja mobiiltelefonid.
* Rakenduse uuendamine ei vaja kasutajapoolset lisaallalaadimist.
* Ei võta arvuti mäluruumi.
* Ettevõtetele ja kasutajatele odavam, sest rakendused vajavad vähem haldamist ja hooldamist kui allalaaditavad rakendused.

Ajalugu
-------

Algselt olid veebilehed ainult HTML-vormingus tekstdokumendid. Veebilehtedel ei saanud midagi muud teha, kui ainult infot lugeda. Veebirakendused, mis pakkusid rohkem, vajasid kasutamiseks igale operatsioonisüsteemile lisatarkvara installimist, mis oli ebaefektiivne ja aeganõudev. Mida aeg edasi, seda interaktiivsemaks veebilehed ja –rakendused muutusid, milles mängisid suurt rolli programmeerimiskeelte CSS ja JavaScript kasutusele võtmine.

1993. aastal võeti kasutusele HTML-keel, millega sai veebibrauseris kuvada teksti. Esimesed veebilehed koosnesidki ainult HTML-kodeeringust, mille sisu oli staatiline ehk tekst oli sisse kodeeritud. 1994. aastal sai alguse programmeerimiskeel CSS (Cascading Style Sheets), mis aitas veebiarendajatel veebilehti kujundada. 

Üks kõige olulisem aasta veebirakenduste jaoks oli 1995, kui avaldati programmeerimiskeel JavaScript. JavaScript tõi väga palju uusi võimalusi rakenduse kasutajapoolse liidese arendamiseks. Tänu JavaScriptile sai veebilehele hakata lisama interaktiivseid elemente ning kasutajakogemus muutus kiiremaks, sest töö hakkas toimuma ka kasutajapoolses rakenduses mitte ainult serveri poolel. 

1996. aastal tutvustati Macromedia Flashi, mis tõi veebirakenduse loomisesse animatsioonid. See andis lükke veebirakendustele kui mängudele. 1999. aastal hakati Javas veebirakendusi looma. Alates 2005. aastast on kasutusel Ajaxi mudel, mis tõi veebiarendusse asünkroonsuse, mis võimaldab kasutajal teha mitut tegevust samal ajal nii, et kogu rakenduse kood ei ole ühel ajal hõivatud. Rakendused olid nüüd kiiremad ja paremad. 2014. aastal avaldati HTML5 ehk HTML viies versioon. Uus versioon andis arendajatele veel rohkem võimalusi eri veebitehnoloogiaid omavahel ühendada.

Tänapäeval on veebiarenduseks ja rakenduste loomiseks mitmeid võimalusi ja meetodeid. Enamikul programmeerimiskeeltel on oma raamistik, millega saab veebirakendusi luua. Veebirakenduste tehnoloogiate tulevik on üsna helge, sest aina rohkem luuakse vahendeid, mille abil on võimalik nii kasutaja kui ka arendaja kogemus võimalikult kiireks ja lihtsaks muuta.

Veebirakenduse arendamise meetodid
----------------------------------

Veebirakenduste loomiseks on palju meetodeid. Tuntuimad neist on kose meetod (*Waterfall method*), kiirmeetod (*Agile method*), Scrum-meetod (*Scrum method*), ekstreemne meetod (*Extreme programming*) ja salemeetod (*Lean method*).

Kose meetod on rangete etappidega arendusmeetod. Kose meetodis ei alustata uut etappi enne, kui eelmine ei ole lõpetatud. Arengumeetodi struktuur algab analüüsist, millele järgneb disainietapp, teostamine, testimine ja viimasena hooldusetapp.

Kiirmeetodis seatakse väikseid eesmärke, ei toimu pikka planeerimist ja kliendiga suheldakse pidevalt.

Scrum-meetod sarnaneb kiirmeetodiga, aga põhifookuses on tiim, kes valib, millised on eesmärgid ja kuidas neid täita.

Salemeetod üritab võimalikult kiiresti, aga ressursside säästlikult rakenduse valmis saada.

Ekstreemses meetodis kasutatakse eelpool mainitud kiir-, Scrum- ja salemeetodite kombinatsioone.

Veebirakendus *vs.* veebileht
-----------------------------

Veebirakendus on arvutitarkvara või programm, mis on kasutatav veebibrauseri kaudu. Veebilehel on staatilisem sisu, mida saab lugeda veebibrauseri abil. Piir nende kahe vahel ei ole siiski konkreetselt ära määratud. 

Veebirakenduse erinevus veebilehest:

* Lahendab mingisugust kindlat probleemi.
* Sama interaktiivne kui mõni installitud programm.
* Veebirakendusel on olemas sisu haldamise süsteem.

Veebilehte defineeritakse kui staatiliste lehtede kogumit. Tänapäeval sellisel kujul veebilehti enam ei eksisteerigi. Veebilehed koosnevad ka interaktiivsetest elementidest ning seega kalduvad rohkem veebirakenduse poole.

Viited
------

1. 1 2 3 4 5  "Difference between Website and Web Application". Vaadatud 13.01,2021. `{{netiviide}}`: kontrolli kuupäeva väärtust: `|vaadatud=` (juhend)
2. 1 2 3 4 5  Margaret Rouse (2019). "Web application (Web app)". Vaadatud 13.01.2021.
3. 1 2  Swapnil Banga (16.06.2020). "What is Web Application Architecture? Components, Models, and Types". Vaadatud 13.01.2021.
4. 1 2 3 4  Robert Gibb (31.05.2016). "What is a Web Application?". Vaadatud 13.01.2021.
5. 1 2  Krystal Tolani (17.05.2020). "The Beginner's Guide to Backend Development". Vaadatud 13.01.2021.
6. ↑  "Back-End Web Architecture". Vaadatud 13.01.2021.
7. 1 2 3  Oleg Uryutin (13.09.2018). "A brief history of web app". Vaadatud 13.01.2021.
8. 1 2 3 4  "From History of Web Application Development". 08.07.2016. Vaadatud 13.01.2021.
9. ↑  "HTML History".
10. ↑  Bert Bos (17.12.2016). "A brief history of CSS until 2016". Vaadatud 13.01.2021.
11. 1 2 3 4 5 6  Iuliia Gapunenko (24.12.2018). "Web development methodologies and approaches". Vaadatud 13.01.2021.
12. ↑  "Web Application Architecture: How the Web Works". 25.07.2019. Vaadatud 13.01.2021.