Tehnoloogiavalikute lähtekohad
Käesolev dokument:
- esitab lähtekohad ja põhimõtted tehnoloogiate valikuks
- fikseerib juba tehtud valikud
- annab viiteid tehnoloogiate kirjeldustele.
Dokumenti võiks nimetada ka RIHA tehnoloogiliseks profiiliks või tehnoloogiliseks plaaniks. Profiil — ülesande täitmiseks kehtestatud standardite kogum.
Tehnoloogiaportfelli täiendatakse arenduse käigus.
2 Tehnoloogiate valiku lähtekohad ja põhimõtted
Tehnoloogiate valimisel tuleb arvestada eriti järgmist.
2.1 Üldiselt on eesmärk kasutada tänapäevaseid, efektiivseid arendusvahendeid ja tehnoloogiaid, üritades üle saada avalikult sektorile iseloomulikust inertsist.
2.2 Tehnoloogiate teisejärgulisus äriülesande täitmise suhtes. See, kui uut ja “ägedat” tehnoloogiat kasutatakse, ei ole alati nii oluline. Esmatähtis on, et ülesanne saab täidetud.
2.3 Tehnoloogiliste ummikteede ja sundseisude vältimine, niipalju, kui see on võimalik, unustamata, et üleliigne paindlikkus on investeering, mis sageli jääb kasutamata.
2.4 Lokaalse optimeerimise vältimine, niipalju, kui see on võimalik.
2.5 Tehnoloogiad ja töövahendid peavad olema vabalt, litsentsitasudeta kasutatavad.
2.6 RIHA ärinõudeks on lihtsus. Eesmärgiks ei ole teha suurt, keerulist süsteemi. Seetõttu tuleb tehnoloogiliste valikute tegemisel küsida, kas ärilise eesmärgi võiks saavutada lihtsama tehnoloogiaga. Teiste sõnadega, kas võimsam, aga samas keerukam tehnoloogia toob konkreetsel juhul väärtust.
2.7 RIHA rajatakse komponentidena. RIHA komponenti iseloomustab:
- selge funktsioon, soovitavalt ühe (või mitme üksteisega seotud) funktsiooni täitmine.
- eraldipaigaldatavus, sh erinevatesse keskkondadesse
- andmete pakkumine masinliidese abil
- moodulid liidestatakse üksteisega ja avatakse liidestusteks välistele süsteemidele REST API-de abil.
- moodulite kogum peab olema laiendatav. RIHA strateegias on sõnastike, projektide, finantssjuhtimise moodulite perspektiivne lisamine.
Väljavahetatavad moodulid
Moodulprintsiibi tähtis aspekt on moodulite väljavahetatavus. Moodulid tuleb projekteerida nii väikesteks, et vajadusel saab mooduli välja vahetada, teostades selle teises programmeerimiskeeles vm teisel tehnoloogia alusel. Ideaaljuhul nagu To-Do rakendus, mida saab igas programmeerimiskeeles teostada.
2.8 Komponentide kokkusobivus ja tervikuna toimimine tagatakse muuhulgas:
- kasutajaliideste ühtlustatud kujunduspõhimõtetega
- liideste (API-de) täieliku ja täpse dokumenteerimisega.
2.9 Komponentide paigaldatavus erinevates keskkondades
- RIHA on hajussüsteem. Komponentrakendused paigaldatakse erinevate asutuste kontrolli all olevatesse keskkondadesse
- osa komponente paigaldatakse RIA taristusse (RIHA kesksüsteem)
- seetõttu komponendid peavad vastama erinevate haldajate taristute poolt seatavatele nõuetele
- kuna need nõuded ei ole ette teada, on eelistatud laialt levinud tehnoloogiad ja standardsed lahendused.
3 Tehnoloogilised nõuded ja valikud
Andmesalvestus
- RIHAs ei moodustata tsentraalset superandmebaasi, vaid andmed paigutatakse hajusalt
- JSON, RIHA andmete põhivorming. Andmete iseloomu arvestades ei ole fookuses relatsiooniline andmetehnoloogia, vaid suuremat paindlikkust võimaldav JSON
- Seejuures võib relatsioonilist andmebaasi kasutada JSON-tekstide hoidmiseks
- Kontseptsioonis on hajusalt tekkivate ja uuenevate andmete kokkukogumine (ingl harvesting) kesksesse andmehoidlasse (seda võib nimetada andmelaoks).
Masinliidesed (API-d)
- RESTful. Masinliidesed teostatakse reeglina REST liidestena
- X-tee on kasutusel liidestes, kus turvakaalutlused, REST API-de puudumine või muud põhjused ei võimalda REST liideseid kasutada
- Open API Initiative (Swagger) abil spetsifitseeritakse kõik API-d.
Autentimine
Inimkasutajate autentimine
- teostatakse RIHA-välise teenuse või lahendusena
- kavas on kasutada 2017. a kevadel valmiva eesti.ee eIDAS-autentimisteenust
- võimalikud on ka täiendavad variandid
Masinkasutajate autentimine
Sessioonihaldus
Pääsuhaldus
Kasutajaliides (UI)
- HTML5
- Javascript
- CSS
- React, kasutatud senitehtus
- Bootstrap 4 (agiilselt arendatud komponentides)
- millist veebiraamistikku kasutada, ei ole põhiküsimus. Veebiraamistikud arenevad kiiresti. Tähtis on teha komponentide kasutajaliidesed lihtsad ja äriloogika selge, nii, et vajadusel (tehnoloogia vananemine) saaks komponendi ümber kirjutada.
- Sass
Äriloogika
- järgides tänapäeva trende, teostatakse kasutajaliidesed peamiselt üleherakendustena (ingl single page application)
- paindlikkuse tagamiseks kasutatakse mallipõhisust jms tehnikaid.
Serveripoolsed komponendid
- Java, on eelistatud ja seni kasutatud
- Go ei ole välistatud
- Node.js jms ei ole välistatud.
Dokumentatsioon
Põhilised
- Markdown (GitHubi dialekt) (avaldamisvorming)
- dokumentatsiooni valmistamisel võib kasutada ka muid vahendeid (lepingupartneri soovil ka Microsoft Word), kuid tulemus teisendatakse alati avaldamisvormingusse
Abistavad
- Jekyll (avaldamistehnoloogia kõrgemate kasutatavusnõuetega dokumentatsioonile), kasutatav GitHubis või eraldi
- Liquid templiidikeel, kasutusel Jekyllis
- Kramdown - Markdown -> HTML teisendaja, kasutusel GitHub Jekyllis
Andmebaas
Tarkvararepositoorium
- GitHub, jooksvaks arenduseks
- organisatsioon e-gov (sisaldab ka muid reposid)
- BitBucket, tulemuste fikseerimiseks
- töövoog on commit-ne GitHub-i, sealt automatiseeritud peegeldamine RIA taristu BitBucket-sse.
Modelleerimine
Logimine
- SLFJ4, Simple Logging Facade for Java
- syslog protokoll (RFC 5424, RFC 3164).
Mallid ja konfiguratsioonifailid
Üldiselt kasutavav
Visualiseerimine
- tasuta raamistike või teekidega, mis tarbivad RIHA API-sid
- nt Google Charts teegiga on tehtud eksperimentaalne visualiseerimismoodul.
Sõnastikud
- Schema.org on olnud kaalumisel, kuid sobivus RIHA vajadusteks pole selge
- JSON-LD, “a lightweight format for linked data”, on olnud kaalumisel; sobivus RIHA vajaduste ja ressurssidega on ebaselge.