Riigi Infosüsteemi Amet. Mittefunktsionaalsed nõuded. v 4.1

meta

0.1.

Nõuete rakendamisel arvestada konkreetse tarkvara eripära.

Rakenduvad ainult need nõuded, mida konkreetse tarkvara iseloomu, ülesehituse ja kasutatavate komponentide kontekstis on mõistlik rakendada.

0.2.

Nõudeid rakendada hierarhia põhimõttel.

RIA MFN-i nõudeid tuleb rakendada kõigis RIA infosüsteemides. Valdkonna MFN määratleb valdkonna tarkvara spetsiifilised nõuded. Hanke MFN-i nõuded täpsustavad ja täiendavad asutuse või valdkonna nõudeid. X-tee tuumtarkvara arendatakse ühiselt Soome riigiga. Vastavalt on ka MFN inglise keeles ja avaldatud Soome partnerasutuse GitHub-repos: X-Road Non-Functional Requirements. RIHA nõuded asuvad arhitektuuriteatmikus.

vorming

1.1.

Andmebaasides ja rakendustes kasutada UTF-8 kodeeringut.

1.2.

Ühe faili piires kasutada alati sama reavahetuse kodeeringut - kas Windowsi (CR+LF; 0x0D0A; U+000D U+000A) või Linux/Unix standardile vastavat (LF; 0x0A; U+000A).

1.3.

Aja esitamisel andmevahetusprotokollides kasutada Internet Date/Time vorminguid (RFC 3339 Date and Time on the Internet: Timestamps). Aja esitamisel inimkasutajale lähtuda vastava keele reeglitest (eesti keele puhul Eesti õigekeelsuskäsiraamat 2019, ptk “Arvukirjutus”).

Nt: “1961-07-12T10:05:00Z”, “2020-02-18T09:31:20.463+02:00”. Märkus. Mõned standardid nõuavad aja esitamist Unix epoch vormingus, nt: 1) nt OpenID Connect ja 2) W3C veebiliidesed.

litsents

2.1.

Tarkvara markeerida litsentsiga.

Teose autoriõigused tuleb selgelt välja tuua. Standardseks vahendiks selleks on litsents. Litsents esitatakse ühel või mõlemal alljärgnevatest viisidest: 1) LICENCE-fail repos; 2) litsentsi tekst iga faili päises. RIA põhimõte on arendada tarkvara avatult ja avaldada tarkvara vaba litsentsiga. Erandid turva- jm õigusega pandud piirangute korral. Soovitatav on kasutada MIT litsentsi - nii tagatakse paremini tarkvarade litsentsiline ühtesobivus. Alternatiiv on EUPL.

2.2.

Tarkvara arendamisel lähtutakse avatuse ja vaba lähtekoodi põhimõttest.

Välja arvatud õigusest tulenevad piirangud (turvameetmed, andmekaitse, ärisaladuses).

moodulstruktuur

3.1.

Rakenduse välissõltuvused peavad olema ilmutatult, selgelt välja toodud.

3.2.

Rakendus peab olema väliste süsteemide tõrgete suhtes vastupanuvõimeline (resilient).

Välise süsteemi tõrge tohib mõjutada ainult sellest otseselt sõltuvate kasutuslugude toimimist.

3.3.

Rakendus peab olema tehniliselt tükeldatud vastavalt loogilisele jaotusele. Saadud osised peavad olema eraldi versioneeritavad ja paigaldatavad. Muuhulgas peab andmebaas olema rakendusest eraldi paigaldatav.

Näiteks, kui rakendusel on eraldi turvakontekstidega liidesed ametnikule ja kodanikule, peab rakendus olema jaotatud kaheks eraldi liidesekomponendiks ning nende mõlema poolt kasutatavaks andmebaasiks.

3.4.

Rakenduse funktsionaalsuses tuleb selgelt eraldada avaliku teenuse liides muudest mitteavalikest, sisemistest, konfigureerimis jms. liidestest.

3.5.

Kõik liidesed rakenduse eri osade vahel peavad olema vajadusel kaitstavad kahepoolset tuvastamist ja krüpteerimist võimaldava protokolliga.

3.6.

Rakenduse pakutav(ad) HTTP REST masinliidesed (API-d) kirjeldatakse masinloetavas OpenAPI vormingus.

Masinloetav kirjeldus ei välista täiendavat, paremini inimloetavat vabavormilist kirjeldust.

keel

4.1.

Lähtekoodi dokumentatsioon, lähtekood ise ning logiteated peavad olema inglisekeelsed.

4.2.

Rakendustes kasutatud eestikeelsetele tekstidele kehtivad infotehnoloogia reeglid Eesti keele ja kultuuri keskkonnas EVS 8:2008.

testimine

5.1.

Lähtekood peab olema varustatud ühiktestidega.

5.2.

Tarkvara peab olema enne toodangusse paigaldamist läbinud turvatestimise.

5.3.

Alates integratsioonitasemest peavad automaattestid olema parameteriseeritud.

5.4.

Automaattestid peavad raporteerima tulemusi inim- ja masinloetaval kujul (näiteks JUnit XML ja HTML).

5.5.

Automaatteste käivitatakse RIA CI vahendi Jenkins vahendusel.

koodi kvaliteet

6.1.

Lõplik kood peab olema läbinud staatilise koodianalüüsi.

Kasutada otstarbekat tööriista: Java puhul Checkstyle, PMD, SonarQube vms; Javascripti puhul ESLint. Samuti kasutada arendusredaktoritesse sisseehitatud kontrollijaid.

frontend

7.1.

Stiiliteave asetada CSS-failidesse.

Stiile ei tohiks sisse kirjutada HTML-teksti, ei style-taagide vahelise tekstina ega style-atribuutidena.

7.2.

Mahukate laadilehtede puhul kaaluda Sass-i kasutamist.

Sass võib suurendada laadilehtede loetavust ja hallatavust.

7.3.

Järgida ajakohaseid veebistandardeid.

HTML5, CSS3 jms.

7.4.

Rakendus peab töötama veebisirvijates, mis toetavad eID baastarkvara kaht viimast versiooni.

Vt sirvikute loetelu ID-tarkvara abikeskuse lehel ID-tarkvara paigaldamine.

7.5.

Veebisirvija toe puudumisel andku rakendus veateate.

Kui kasutajaliides, mille poole kasutaja pöördub, ei ole ühilduv kasutatava veebisirvijaga, peab rakendus arusaadaval ja juhendaval viisil sellest kasutajat teavitama.

kasutatavus

8.1.

Veebirakenduse kasutajaliides peab olema juurdepääsetav. Tuleb täita WCAG 2.2 taseme AA nõuded.

Vt: Web Content Accessibility Guidelines (WCAG) 2.2. (Eestikeelne tõlge on olemas v2.0 kohta: Veebi sisu juurdepääsetavussuunised (WCAG) 2.0). Vt ka: 1) EL standard EN 301 549 Accessibility requirements for ICT products and services; 2) ettevõtlus- ja infotehnoloogiaministri määrus Veebilehe ja mobiilirakenduse ligipääsetavuse nõuded ning ligipääsetavust kirjeldava teabe avaldamise kord.

URL-id

9.1.

Kasutada selge, ühtse mustriga, inimloetavaid veebiaadresse (URL-e).

9.2.

Igal lehel peab olema unikaalne veebiaadress.

9.3.

URL ei tohi sisaldada isikuandmeid.

Võimalikud on erandid, kui isikuandmete kaitseks on rakendatud asjakohaseid tehnilisi ja organisatsioonilisi meetmeid. Meetmetega peab tagama kaitse vähemalt järgmiste riskide vastu: isikuandmete lekkimine sirviku ajaloost, HTTP seansi pealtkuulamine, isikuandmete lekkimine vahendusserveri (proxy) logist, isikuandmete lekkimine serveri logist.

9.4.

URL ei tohi sisaldada sessioonivõtit.

teated

10.1.

Vea- jm teated peavad oleva arusaadavad.

Muuhulgas peab rakendus asendama vaikimisi veateate (404 vms) lehekülje, kuid säilitama algse HTTP vastuskoodi.

10.2.

Veasituatsioonid tuleb varustada veakoodidega. Kasutajale tuleb esitada koos veateatega ka veakood.

10.3.

Veateated tuleb logida.

koodisüsteemid

11.1.

Objektid identifitseerida registrikoodide abil.

Riiklikesse registritesse kantavad objektid (isikud, katastriüksused jne) kantakse andmebaasi nende registrikoodiga, mida täiendab riigiprefiks vastavalt ISO3166-1 Alpha 2 standardile. Näiteks isikute sidumiseks süsteemi kasutajakontoga peab kasutama isikukoodi rahvastikuregistrist.
Eesti Vabariigi kodanik identifitseeritakse Eesti Vabariigi poolt väljastatud eIDga. Igasuguse muu identifitseerimisevahendi kasutamine peab olema selgelt põhjendatud.
Mittekodanike isikuidentifikaator saadakse järgmisel viisil: riigikood + sookood + sünniaeg + [ dok_nr | id_riigis ], kus
riigikood - kolmekohaline ISO 3166-1 Alpha-3 standardile vastav riigi kood
sookood - soo identifikaator nii nagu Eesti Vabariigi isikukoodis
sünniaeg - sünniaeg formaadis YYYYMMDD
id_riigis - kui see on olemas, tuleb kasutada isiku koduriigi isikuidentifikaatorit. 16 kohta, 0-polsterdatud vasakult
dok_nr - kui isiku koduriigis isikuidentifikaatorit ei ole, siis kasutatakse isiku dokumendi numbrit. Dokumendi number, 16 kohta, 0-polsterdatud vasakult.

11.2.

Rakendus ei tohi luua uut identiteedisüsteemi. Tuleb tugineda olemasolevatele riiklikele (ID-kaart) või põhiliste op-süsteemide süsteemidele (Kerberos jms).

11.3.

Rakendada aadressiandmete süsteemi nõudeid.

Eesti aadressiandmete sisestamisel, kuvamisel ja hoidmisel lähtuda Vabariigi Valitsuse 8. oktoobri 2015. a määrusest nr 103 „Aadressiandmete süsteem“.

11.4.

Rakendada klassifikaatorite süsteemi nõudeid.

Eesti tegevusalade andmete sisestamisel, kuvamisel ja hoidmisel lähtuda Vabariigi Valitsuse 10. jaanuari 2008. a määrusest nr 11 „Klassifikaatorite süsteem“ ja kasutada EMTAK infosüsteemis kehtivat klassifikaatorit.

autentimine

12.1.

Väliste kasutajate, so. Eesti Vabariigi residentide ja EL teiste liikmesriikide residentide autentimislahenduse loomisel lähtuda dokumendist Autentimislahendustele kehtivad nõuded.

12.2.

ID-kaardiga autentimisel ei kasutata serdi edastamise päises side- (-) ega alakriipse (_).

rollihaldus

13.1.

Rakenduse mitteavalike osade kasutajate rollid asuvad rakendusevälises LDAP serveris või muus autentimislahenduses. Süsteem ei tohi realiseerida omaenda rollide haldamist.

väljumine

14.1.

Süsteemist väljumine peab toimuma sõnaselgelt, kasutajale arusaadaval ja turvalisel viisil.

Kasutaja saab süsteemist väljuda kahel viisil: tema sessioon on pikem, kui sessiooni pikkuse seadistatav piirväärtus (eraldi määratletavad piirangud kogu sessioonile ning tegevuseta perioodile sessioonis) või kasutaja lõpetab sessiooni enda algatusel.

14.2.

Juhul kui rakenduse turvanõuded näevad seda ette, peab olema võimalus koheselt lõpetada kasutaja sessiooni nii, et kasutaja saaks arusaadava ja põhjendatud teate sessiooni lõpetamise kohta.

andmebaas

15.1.

Andmebaasi kasutaval rakendusel on vähemalt kaks andmebaasikasutajat:
<rakendus> nimeline andmebaasi skeem kuulub andmebaasi kasutajale <rakendus> (roll db owner, skeemid ja seal paiknevad objektid kuuluvad sellele kasutajale).
<rakendus> nimelises andmebaasi skeemis on defineeritud <rakendus>_app nimeline kasutaja, kes omab ligipääsu (SELECT, INSERT, UPDATE, DELETE) ainult rakenduse käitamiseks vajalikele tabelitele, protseduuridele või funktsioonidele.

Nõue tuleneb eelkõige sellest, et vahel kasutame andmebaaside ““koosmajutamist” s.t erinevate süsteemide või ka ühe süsteemi erinevate komponentide (mikroteenuste) andmebaase hoiame ühes PostgreSQL instantsis. Sellisel juhul on vaja tagada eristatus: iga andmebaas peab olema eraldi skeemis; rakendus ei tohi teise rakenduse skeemile ligi pääseda (suheldakse API-de kaudu); rakendus ei tohi ise skeeme moodustada s.t skeemi tohib moodustada ainult paigaldusprotsess. Ka siis, kui koosmajutust hetkel ei kasutata, on eristamine hea praktika.

15.2.

Ühest andmetabelist teise viitamisel tuleb kasutada välisvõtmeid (foreign key). Kõik välisvõtmed peavad olema indekseeritud mitteunikaalse indeksiga ja välisvõtmetena kirjeldatud.

15.3.

Kõigis andmebaasi tabelites peab olema defineeritud integer-tüüpi või UUID-tüüpi primaarvõti, mis on surrogaatvõti. Primaarvõtmena ei tohi kasutada reaalse eluga seotud andmevälju.

15.4.

Kõik primaarvõtmed (primary key) peavad olema indekseeritud unikaalse indeksiga.

15.5.

Kui andmebaasis olevate andmete ISKE tervikluse klass on 2 (E-ITS rakendamisel IS) või kõrgem, siis tuleb kõik klass 2 infot sisaldavad andmebaasi kirjed versioneerida.

15.6.

Andmebaasi väljade pikkused tuleb andmekirjelduskeeles (DDL-is) kirjeldada sümbolites, mitte baitides.

15.7.

Päringulaused ei tohi sisaldada konstantidena sisse kirjutatud päringutingimuse võrdlusväärtusi.

Kasutada päringumuutujaid (variable binding).

15.8.

Andmebaasi objektide nimetused peavad olema inglisekeelsed. Nimetused tohivad sisaldada ainult Latin1 (ISO8859-1) kodeeringu tähti a-z; A-Z, numbreid 0-9, ning alakriipsu _. Objektide nimetused ei tohi alata numbritega. Andmebaasiobjektide nimed peavad olema semantilised st. objekti tähendust avavad.

15.9.

Rakendus peab olema tabelite partitsioneerimise suhtes agnostiline st. tabelite partitsioneerimisstruktuuride muutmine ei tohi mõjutada rakenduse tööd.

15.10.

Rakendusserveri, nt Tomcat kasutamisel, tuleks võimalusel kasutada rakendusserverit ka andmebaasiühenduste (JDBC) halduseks.

Rakendus ei puuli ise, vaid küsib JNDI abil rakendusserveri puuli aadressi. Nõude eesmärk on jõudluse parem hallatavus.

logimine

16.1.

Rakenduse logimine peab olema organiseeritud kasutades selleks ettenähtud standardseid vahendeid viisil, mis võimaldab rakenduse administraatoril määratleda ja muuta logide väljundit (vähemalt fail, andmebaas, syslogd), logimise taset ja logimise formaati.

16.2.

Java rakenduste korral logitakse SLF4J raamistiku abil.

Ühtlustatud selleks, et rakendusi saaks seadistada ühtemoodi.

16.3.

Logid kirjutatakse inglise keeles (välja arvatud kasutajale näidatud teated).

16.4.

Turvalisuse seisukohalt kriitilised sündmused (sisenemine, väljumine, rolli muut(u)mine) ning tegevused, mis toovad kaasa rahalisi või juriidilisi tagajärgi, logitakse eraldi konfigureeritavasse turvalogisse.

16.5.

Telemeetria.

Infosüsteemi arendustes tuleb juhul, kui otsustatakse rakendada kasutaja teekonna (ja muu telemeetria) kogumist, juhinduda CNCF OpenTelemetry spetsifikatsioonidest. Vt: https://opentelemetry.io ja https://github.com/open-telemetry/opentelemetry-specification.

ehitamine

17.1.

Rakenduse (RIA poolt hallatavasse serverisse) pakendamine, paigaldamine, uuendamine, muudatuse taastamine ja testide käivitamine peavad olema automatiseeritud standardse üldkasutatava vahendi abil.

Kasutusel on Maven ja Jenkins.

17.2.

Ehitatud paki nimi peab sisaldama projekti nime ja paki versiooni ning tohib sisaldada ainult tähemärke [a-z;0-9] ja - (miinus) ja _ (alakriips) (nt projektinimi-1_0_23).

Pakk peab olema keskkonnaagnostiline s.t arendus-, toodangu- jm keskkondade jaoks normaalselt ei tehta eraldi pakke. Tarkvara muutub konkreetse keskkonna osaks pärast keskkonda paigaldamist ja keskkonnas seadistamist.

17.3.

Rakendused ehitatakse ja paigaldatakse ainult lähtekoodihoidlast, selle üheselt viidatud harust.

17.4.

Kood tarnitakse RIA taristus olevasse reposse. Koodi võib tarnida GitHubi, juhul kui on seadistatud GitHubi repo peegeldamine RIA sisereposse. Kumba meetodit kasutatakse, määrab RIA.

17.5.

Lähtekoodi kompileerimine peab olema teostatav ka välisvõrguühenduse puudumise korral. Selle nõude täitmise võimaldamiseks on RIAs kasutusel sisemised tarkvarakomponentide repod.

Vt täpsemalt sisenõuete dokumendist.

17.6.

(kehtetu)

17.7.

Java rakenduse tööks vajalikud teegid peavad olema rakenduse osa. Kui Java rakenduse käitamiseks on kasutatud mõnd rakendusserverit (näiteks Tomcat), siis võivad selle tööks vajalikud üldteegid olla rakendusserveri lib kaustas.

Näide: JNDI konfiguratsioon eeldab, et andmebaasiohjur oleks rakendusserveri sees (nt. Tomcat), mitte rakenduse WAR failis. Juhul kui andmebaasiohjur on osa WAR failist, võib andmebaasiühenduste probleemide tekkimisel kohe tekkida ka probleem rakendusserveri (taas)käivitamisega.

17.8.

Fondid, laadilehed ja Javascripti failid serveerida rakendusest endast.

17.9.

Toodangusse evitatavas tarkvaras peavad sõltuvuste versioonid olema fikseeritud.

Eesmärgiks on ehitamise korratavus (repeatable build). Näiteks: Node.js platvormil toodangusse evitatavate moodulite package.json failis, jaotises dependencies ei tohi olla versioonimärkeid ^, ~, *, x.

paigaldamine

18.1.

Rakendus saadab e-kirju RIA SMTP edastusteenuse kaudu.

Täpsemad nõuded vt SMTP edastusteenuse kirjeldusest.

18.2.

Rakendus peab olema loodud sõltumatuna rakendusserveri tarkvarast.

Rakendust peab olema võimalik konfiguratsioonimuudatuste abil paigaldada teisele samatüübilisele rakendusserverile. Kui see ei ole võimalik tuleb rakendusele luua sobituspaketid põhiliselt kasutatavate rakendusserverite jaoks.

18.3.

Kõik rakenduse versiooniuuendused (sealhulgas muudatused andmebaasi struktuuris ja koodis) peavad kuni järgmise versiooniuuenduseni olema täielikult tagasi pööratavad st. koos versiooni uuendusega peavad olema loodud vahendid ja kirjeldatud protseduurid versiooniuuenduse tagasi võtmiseks.

18.4.

Rakendus ei tohi eeldada paigalduskeskkonna turvalisust.

18.5.

Rakendusservereid peab olema võimalik lisada teenust pakkuvasse klastrisse ja sealt eemaldada vastavalt vajadusele.

18.6.

Rakendus ei tohi kasutada konfigureerimata viiteid failidele või välistele süsteemidele st. kõik viited peavad olema programmikoodi välised.

18.7.

Kõik andmebaasiühendused tuleb kirjeldada täispika URI abil. Java rakendustes kasutatakse JNDI ühendusi.

18.8.

Andmebaasi JNDI objekti Datasource-i nimetamisel tuleb kasutada prefiksit jdbc ning ühesõnaliste lühendite korral väiketähti. Nt: jdbc/system1, jdbc/system2 jne.

18.9.

Rakenduse andmebaasi või andmeskeemi paigaldamine ei tohi nõuda punktis erilisi kasutajaõigusi.

infoturve

19.1.

Kui ei ole määratud teisiti, peab rakendus olema kasutatav ISKE klassile K2T2S2 (E-ITS rakendamisel - samaväärsele turbetasemele) vastavate süsteemide loomisel.

Turvameetmetega tutvu ISKE portaalis, E-ITS rakendamisel - E-ITS portaalis.

19.2.

Süsteem ei tohi võimaldada kasutajale ligipääsu süsteemi toimimise informatsioonile, nagu failide täisnimed, kutsepinud (stack trace) jms.

19.3.

Kaitsmata avalik võrguliiklus ei ole lubatud. Igasugune avalik võrguliiklus on krüpteeritud. TLS keskkonna parameetrid on administraatori, mitte arendaja kontrolli all. Erandjuhul, kui edastatav informatsioon ei sisalda konfidentsiaalseid andmeid ega isikuandmeid, on lubatud andmete edastamine krüpteerimata kujul, kuid viisil, mis võimaldab andmete vastu võtjal veenduda saadetise tervikluses st. allkirjastatult või ajatembeldatult (X-tee turvaserveri seadistuse edastamise näide).

19.4.

Vastavalt rakenduse olemusele ja riskianalüüsile rakendada meetmed OWASP ohuedetabelites (Top 10) jm tekstides antud soovituste järgimiseks.

vt OWASP ja OWASP Application Security Verification Standard (ASVS).

19.5.

Kaitsta seansiküpsiseid (secure ja http only parameetrid).

19.6.

Rakendada päringuvõltsimise (CSRF) vastast kaitset.

19.7.

Sisendite kontroll nii front- kui ka backend-is.

Olulised sisendid tuleb kontrollida (puhastada) (ka) serveri poolel.

19.8.

Veebirakendustes määratleda ja rakendada sisuturbepoliitika.

Vt Content Security Policy (CSP).

19.9.

Eraldipaigaldatavate komponentide vahelistel liidestel peab olema TLS võimekus (vastastikune autentimine sertide abil). Vastavad konfigureerimisjuhised peavad sisalduma rakenduse paigaldusjuhendis.

19.10.

Minimaalne võrgupääs.

Infosüsteemi komponentide pääs avalikku võrku peab olema reguleeritud vähima juurdepääsu printsiibil - infosüsteem tohib pääseda ainult sinna, kuhu pääs on teenuse toimimiseks hädavajalik. Pääsukontroll peaks eelistatult toimima dünaamiliselt ning toetama automatiseerimisvahendeid. Standardlahendusena tuleb eelistada pääsukontrolli välisvõrku rakendusest sõltumatult toimiva lüüsi abil.

krüpto

20.1.

Krüptograafiliste algoritmide ja meetodite valimisel lähtuda kehtivast RIA tellitud krüptograafiliste algoritmide elutsükli uuringust.

20.2.

Krüptoalgoritme peab olema võimalik väikeste muudatustega vahetada

20.3.

Võtmete kaitsele tähelepanu!

Juhtida tähelepanu ja rakendada meetmeid vältimaks võtmete lubamatut avalikukstulekut. Näiteid ohupraktikatest (mitteammendav loetelu): 1) võtme hoidmine versioonihalduse (git) all olevas koodirepos -> oht: push-takse avalikusse reposse -> kaitsemeede: .gitignore või võtmete hoidmine üldse eraldi; 2) võtmete seisundi ja omaduste ebaselgus -> võtmete segiminek, sellest tulenev kompromiteerumine või kaitse langus -> kaitsemeede: läbimõeldud võtmehalduse protseduur; 3) näite-seadistusfailides ei markeerita näitevõtmeid -> oht: näitevõtmed jõuavad toodangusse. Võtmeid tuleb reeglina kaitsta juba test- ja arenduskeskkondades. Ligipääs võtmetele korraldada teadmisvajaduse (need to know) põhimõttel. Võtmed, mida enam ei vajata, koheselt hävitada. Kirjandus: NIST SP-800-57 Key Management Guidelines; European Payments Council (2017) Guidelines on cryptographic algorithms usage and key management.

andmekaitse

21.1.

Rakendustes tuleb tagada isikuandmete kaitse nõuded.

Eriti isiku õigus olla unustatud ja meie kohustus seejärel kustutada kõik isikuandmed, mida me ei vaja tööks või mida me ei pea seaduse alusel töötlema. Vt isikuandmete kaitse üldmäärus. Samuti peame alati olema valmis vastama isiku nõudmisele välja anda IKS § 24 sätestatud teave.

21.2.

Rakendus ei tohi kasutada RIA taristu väliseid kasutaja tegevust analüüsivaid teenuseid (nt Google Analytics).

Andmekaitse ja turvalisuse kaalutlustel.

käideldavus

22.1.

Rakendus peab sirvikusse laaduma kiiresti.

Sirvikuühendusi tuleb efektiivselt kasutada. Vajadusel kasutada laadimisaja optimeerimistehnikaid (pakkimine, minimeerimine, profileerimine jm).

22.2.

Kõrgkäideldavuse võimekus. Kui ei lepita kokku eraldi, peab iga eraldipaigaldatav tarkvarakomponent olema paigaldatav mitmes eksemplaris.

22.3.

Kõrgkäideldavate rakenduste puhul tuleb seansihalduse lahendus kokku leppida kohe arendusprojekti algul. Seansi hoidmine jagatud failisüsteemis (nt. NFS) ei ole lubatud.

monitooring

23.1.

Süsteemi iga eraldi paigaldatav osa peab väljastama RIA monitooringusüsteemile (näiteks aadressilt heartbeat.json) masinloetaval kujul oma nime ja versiooninumbri, oluliste väliste süsteemide oleku, viimase käivitamise aja, pakendamise aja ning serveriaja.