Veebirakendus

**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 *[[Front-end veebiarendus|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

# 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“.
# Veebiserver edastab päringu veebirakenduse serverile.
# Veebirakenduse serveris tehakse saadud andmetele vastav tegevus, mis tagastab küsitud andmed. Näiteks kontrollitakse, kas andmebaasis leidub selline kasutajanimi ja sellele vastav parool.
# Veebirakenduse server saadab töödeldud andmed tagasi veebiserverile.
# 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