PaaS-kehitys

PaaS-kehitys
Kuinka hallita Big Dataa?
} 
Mistä löytää tarpeeksi
} 
} 
} 
Pilvipalvelut (Cloud Services)
} 
} 
} 
2
Tallennuskapasiteettia?
Laskentakapasiteettia?
Tallennuspalvelu
Laskentateho (Cloud Computing)
Paljon muuta
Big Data & Pilvipalvelut, Maija Marttila-Kontio
Pilvipalvelu voi helpottaa elämää
} 
Dynaamisesti skaalautuva (myös hinta J ”pay-per-use”)
} 
} 
} 
Resurssit ovat virtuaalisia
} 
} 
3
Esim: ”Joka toinen viikko tarvitaan laskentatehoa 15x, muuten
mennään pienemmillä tehoilla”
Esim: Kaisan ylläpitämät nettisivut saa yht’äkkiä valtavan
kävijäryöpyn. Lähteekö Kaisa pikaisesti ostamaan Gigantista
uusia koneita vanhan serverin tueksi?
Palvelun tilaajalla ei ole ”tiettyä konetta/koneita”
palveluntarjoajan konesalissa, jotka olisivat yksinomaan hänen
käytössään
Palvelun tilaaja on ostanut nimenomaan palvelun, fyysisestä
toteutuksesta vastaa palveluntarjoaja
Big Data & Pilvipalvelut, Maija Marttila-Kontio
Virallisia ominaispiirteitä
Itsepalvelullisuus
Resurssien
yhteiskäyttö
Pääsy eri
päätelaitteilta
Käytön mittaaminen
”pay-per-use”
Nopea joustavuus
4
Big Data & Pilvipalvelut, Maija Marttila-Kontio
Erilaisia palvelumuotoja: ”<…> as a Service”
Infrastructure as a Service (Iaas)
} 
} 
} 
AWS (EC2, S3),
Tässä palvelussa pääset enemmän vaikuttamaan mm. serverin sisältöön,
kirjastoihin, tuettuihin ohjelmointikieliin (PaaS:ssa olet palveluntarjoajan armoilla)
Platform as a Service (Paas) (=”Computing platform”)
} 
} 
} 
} 
Tietokanta, sovelluskehitysympäristö, webbiserveri, jne…
Kehitä oma peli ja myy sitä verkon kautta (tai jaa ilmaiseksi ja kerää mainostuloja)
Esim. Google AppEngine –Paas (ROVIO-Case)
Software as a Service (SaaS)
} 
} 
} 
} 
”Softa pilvessä”: Sähköposti, pelit, virtuaalityöpöytä,…
Vähän kuin täyden palvelun työsuhdeauto: tankki aina täynnä bensaa, aina siisti,
aina toimiva, joku käyttää huollossa, aina uusin malli saatavilla, …
Salesforce.com, Dropbox, GoogleDocs, …
Plus monia muita
} 
} 
} 
5
Network as a Service
Analytics as a Service
Big Data & Pilvipalvelut, Maija Marttila-Kontio
Pilvityypit
Onko pilvi ollenkaan?
Tietoturva?
Julkinen (Public)
Yksityinen (Private)
Hybridi (Hybrid)
6
Big Data & Pilvipalvelut, Maija Marttila-Kontio
Platform as a service
Google App Engine
Google App Engine
} 
} 
} 
https://developers.google.com/appengine/
Platform as a Service (PaaS)
Ketkä käyttää?
} 
} 
} 
https://cloud.google.com/customers/
Mm. Rovio, Snapchat, Khan Academy…
Tukee useita kieliä
} 
} 
} 
} 
Python
Java
PHP
Go
GAE - tarkemmin
Persistent storage with queries, sorting, and transactions.
}  Automatic scaling and load balancing.
}  Asynchronous task queues for performing work outside
the scope of a request.
}  Scheduled tasks for triggering events at specified times or
regular intervals.
}  Integration with other Google cloud services and APIs.
}  1 GB of data storage and traffic for free
} 
https://developers.google.com/appengine/docs/whatisgoogleappengine
GAE - tietovarastoja
} 
App Engine Datastore
} 
} 
’schemaless object datastore’. Ilmainen quota.
Google Cloud SQL
SQL-kanta. Taustalla toteutettu MySQL:llä. Maksullinen.
Google Cloud Storage (GCS)
} 
} 
} 
} 
NDB Datastore
} 
} 
Isolle, tiedostotyyppiselle datalle.
Uusi. Evoluutio datastoresta.
https://docs.google.com/document/d/
1AefylbadN456_Z7BZOpZEXDq8cR8LYu7QgI7bt5V0Iw/edit
GAE – Palveluita/komponentteja
} 
} 
} 
} 
} 
} 
} 
} 
} 
} 
App Identity
Blobstore
Capabilities
Channel
Google Cloud Endpoints
Images
Logs
Mail
MapReduce
Memcache
} 
} 
} 
} 
} 
} 
} 
} 
} 
Multitenancy
OAuth
Prospective Search
Search
Sockets
Task Queues
URL Fetch
Users
XMPP
App Engine Launcher
} 
Kehitysympäristö
} 
} 
Windows, Mac, Linux
Java, Python, PHP, Go
Prosessi
Local
GAE / Cloud
version: 2
…
Deploy
version: 1
…
version: 2
…
App
Admin
Käyttäjät
Projektin rakenne - yksinkertainen
} 
app.yaml
} 
} 
index.yaml
} 
} 
Sovelluksen asetukset
Sovelluksen käyttämät indeksit
main.py
} 
Python-koodi
Projektin rakenne - monipuolisempi
} 
css
} 
} 
CSS-tiedostot
customtags
Omia tageja Djangoa varten
} 
} 
js
} 
} 
templates
} 
} 
JavaScript-tiedostot
Kaikki html-tiedostot
…
app.yaml - asetukset
main.py – Python-koodi
Deploy
Deploy (tuotantoonvienti) siirtää koko projektin
kehitysympäristöstä GAE-palveluun
}  Versiointi
} 
} 
} 
} 
Mikäli tuotannossa on jo saman numeroinen versio, kirjoitetaan
sen päälle
Mikäli uusi versio, luodaan se
Indeksit
} 
} 
Mikäli index.yaml-tiedostoon on generoitunut (tai lisätty) uusia
indeksejä, niiden rakentaminen käynnistetään.
Näihin indekseihin liittyvät haut eivät toimi ennen kuin indeksi
on rakennettu (eli käytä versiointia)
Versiointi
} 
Viitataan GAE:n sisäiseen versiointiin, ei sovelluskoodin
versionhallintaan
} 
} 
Sovelluskoodin versionhallintaan voit käyttää mitä haluat (git,
svn, ym.)
app.yaml-tiedostossa on version-attribuutti
version: 1
Versiointi tapahtuu muuttamalla sen arvoa
}  Deploy siirtää kylmästi koodin atribuutin osoittamalle
versiolle
} 
Web-kehykset: esim. Django
Ei ole käytännöllistä kirjoittaa html-koodia sovelluskoodin
sisällä
}  Eri ohjelmointikielille on lukuisia sovelluskehyksiä, niihin
kannattaa tutustua ja valita mieluisa/soveltuva
}  Paljon trendejä…
}  Tällä kertaa käytämme Django:a
} 
} 
} 
} 
Melko suosittu Python-framework
Toki vaihtoehtoja löytyy ja myös kritiikkiä
Ei sovellu kaikkiin tarkoituksiin
Esim.
UI (home.html)
Users
Django
Controller (main.py)
Datastore
css (Bootstrap)