Tällä kertaa Pilvisovellusten Tuotanto -verkkokoulutuksessa käsiteltiin web-palveluiden toteutusvaihtoja ja tietoturvaa.
Pilvialustat
Amazon (AWS)
Amazon AWS on pilvialusta, joka tarjoaa laskentehoa, tiedontallennuspalveluja ja sisällön toimituspalveluja. Asiakas maksaa vain käytöstä, joten pilvipalveluiden käyttö on todella kustannustehokasta. Sama pätee myös muihin pilvipalveluihin.
https://aws.amazon.com/getting-started/
Heroku
Heroku on kenties selkeämpi ja käyttäjäystävällisempi kuin Amazon AWS. Herokun palvelut toimivat Amazon-pilvessä. Ohessa lisää Herokusta.
Muita pilvipalveluja
Web-palvelun toteutustapoja
Perinteinen tapa
Perinteisessä tavassa html-sivu muodostetaan palvelimen päässä mahdollisimman valmiiksi. Selain vain näyttää sivun. Sivulla voi olla jotain interaktivisuutta, joka toteutetaan JavaScriptillä.
PHP-sovellus & SQL DB
- Selain: html
- Web server (apache)
- Zend framework
- PHP engine
- Linux/cloud
- SQL DB
Python-sovellus & SQL DB
- Selain: html
- Web server (apache)
- Django framework
- Python engine
- Linux/cloud
- SQL DB
Java-sovellus & SQL DB
- Selain: html
- Java application/cloud server
- Tomcat, GlassFish, WebSphere
- Java VM
- SQL DB
REST-palvelut
Tässä tavassa HTML5-sovellus muodostaa html-sivun vasta selaimessa. Palvelin välittää vain datan sovellukselle, joko muokkaa sen tarpeelliseen muotoon.
Node.js-sovellus & NoSQL DB
- Selain: HTML5-sovellus: JSON/XML
- Express framework / Mean.io
- Node engine
- OS/Cloud
- NoSQL DB (MongoDB)
PHP-sovellus & SQL DB
- Selain: HTML5-sovellus: JSON/XML
- SLIM framework
- PHP engine
- Linux/cloud
- SQL DB
Java-sovellus & SQL DB
- HTML5-sovellus: JSON/XML
- Java application/cloud server
- Tomcat, GlassFish, WebSphere
- Java VM
REST API-käsitteitä ja -esimerkkejä
Tietokannat
SQL
Structured Query Language (SQL), on IBM:n kehittämä standardoitu kyselykieli, jolla relaatiotietokantaan voi tehdä erilaisia hakuja, muutoksia ja lisäyksiä.
Hyvät puolet
Relaatiokannat ovat parhaimmillaan, kun käsitellään pieniä transaktioita tai suoritetaan harvoin tapahtuvia suuria eräajoja.
Huonot puolet
Relaatiotietokannat soveltuvat huonosti suurten dokumenttimäärien käsittelyyn ja pilvilaskennan käyttöön. SQL-tietokannat eivät ole kovin tehokkaita, jos tietokantaan tarvitsee tehdä paljon muutoksia tihein väliajoin.
Esimerkkejä
NOSQL
Hyvät puolet
Not-only-SQL (NoSQL) pystyy suoriutumaan hyvinkin suurista määristä samanaikaisista luku-ja kirjoitusoperaatioista. Lisäksi useat NoSQL-toteutukset tukevat tietokantojen hajauttamista. Täten se soveltuu hyvin big datan käsittelyyn ja pilvilaskentaan.
NoSQL-tietokannalla ei ole kiinteää skemaa, joten siihen voi tallettaa minkämuotoista dataa tahansa. Tämä tekee myös tietokannan ylläpidosta tehokkaampaa.
Esimerkkejä
MUUTA
Tietokannat pitää valita käyttötarpeen mukaan. Erilaisia tietokantoja voidaan myös yhdistää siten että esimerkiksi MongoDB:tä käytetään tiedon tallennukseen ja HBase:a (Hadoop) tiedon analysointiin.
Verkkosovellusten tietoturva
SSL
- SSL = Secure Socket Layer
- Epäsymmetriseen salaukseen (RSA-algoritmi) perustuva tapa toteuttaa turvallista tietoliikennettä
- Julkinen avain (public key), yksityinen avain (private key), sertifikaatit
- SSL-tekniikka käyttäviä protokollia
- https – web-liikenteen suojaus
- ssh – secure shell – suojattu pääteyhteys
HTTPS
- Turvallinen web-tietoliikenne
- Ei vaikuta suoraan sovellusten ohjelmointiin
- Toteuttaa kaksi asiaa: tietoliikenteen salaus ja alkuperän varmentaminen
- Web-palvelimelle voi luoda geneerisen avaimen ja sertifikaatin, jolloin tietoliikenne on salattu, mutta käyttäjä ei voi varmistua palveluntuottajan identiteetistä
- Oheisella videolla lisää aiheesta
REST-palvelun tietoturva
CORS
- Perussuojaus
- Selain sallii AJAX-kutsuja vain sallituista osoitteista ladatulta sivulta
http-autentikointi
- Basic Authentication
- Yksinkertainen käyttätunnus ja salasana
- Määritellään yleensä palvelimella
- Ei tarvitse välttämättä ohjelmointia
- Esim Apache: .htaccess-suojaus
- Digest Authentication
- Palvelupyynnön mukan tiivistemerkkijono (hash), jonka palvelin tarkistaa
- Vaatii ohjelmointia
OAuth-autentikointi
Käyttäjän autentikointi ulkoisessa palvelussa esim. Facebook, LinkedIn. Lisätietoa: http://tutorials.jenkov.com/oauth2/overview.html
Sovellustunnus
- Monet avoimen datan palvelut vaativat sovellustunnuksen sanomien mukana
- Ei suojaa tai salaa mitään
- Auttaa tilastoimaan ja valvomaan palvelujen käyttöä
Salasanojen turvallinen tallennus
- md5-tiiviste on ok, mutta hsa256 on parempi
- Salasanojen suolaus: lisää satunnainen merkkijono höysteeksi!
- Suosituimmat tiivisteet saa selville esimerkiksi täältä: https://crackstation.net/