-
Notifications
You must be signed in to change notification settings - Fork 3
FI 4
Hacklab Helsinki #web-kehitys
kurssi 21.4.2021 -
![](images/wikimedia/1972_AMC_Javelin_SST_burgundy_FLtl.jpg)
Kuva: 1972 AMC Javelin SST burgundy, Christopher Ziemnowicz, public domain
- Tietokannan tausta-ajot
- Yhteydet toisiin järjestelmiin
- Tiedostojen (kuvat, videot...) talletus
Triggerinä:
- tiedon muutos
- käyttäjän sisäänkirjautuminen
- ajan kuluminen (ajastetut toiminnot)
Web-sovelluksen taustajärjestelmät ovat yhtä kiintoisia kuin teatteri esiripun takana. Eli ovat. Tai ei. Mutta ne pitää olla olemassa, jotta "show can go on"...
💫 Scalable pay-as-you-go functions as a service (FaaS) to run your code with zero server management.
Tuote pitää kyllä lupauksensa. Se vain toimii.
Hinnoittelu:
- vaatii Blaze-tason
0..2 milj. kutsua/kk | ilmainen |
+ milj. kutsua/kk | $ 0,40 |
Lisäksi kustannuksia tulee:
- CPU-käytöstä
- verkkoliikenteestä
- funktioiden valmiudessa pitämisestä (deploying)
Tarkemmin näistä on laskelmia osoitteessa https://cloud.google.com/functions/pricing.
Huomoioitavaa:
Funktioiden kylmäkäynnistys voi "serverless"-maailmassa kestää jonkin aikaa (15-20s).
Funktiot kirjoitetaan Node.js -skripteinä.
Kustannukset ovat "tier 2" -tasolla korkeammat kuin "tier 1":llä.
Ilmaispaketit eivät välttämättä päde esim. Euroopan konesaleihin, vain us-central1
:een.
Vilkaistaan
packages/backend/functions/index.js
.
Helpompi tapa tehdä sovellus/tausta-rajapintoja.
Muuten kuin REST API. Vaatii, että yhteys ei katkea (tai sinun pitää itse koodata vikasietoisuus client-päähän).
Kutsutaan, kun joku muutti dokumenttia.
Ajastus.
- Autentikointi, mutta vain kun uusi käyttäjätili luodaan. Ei käyttäjän kirjautuessa tai hänen käyttäjätietojen (nimi, kuva) muuttuessa.
- GMail jne. integraatioita (GMail -> Pub/Sub -> Cloud Functions)
Trendeinä näyttää olevan:
- Firebase sulautuu enemmän osaksi Googlen taustajärjestelmiä (esim. Pub/Sub:n merkitys kasvaa)
- Konenäön, kielen ymmärtämisen jne. käsittely tätä kautta (ks. "tuotesivut")
Cloud Functions ja Firebase web-frontti ovat naimisissa oikeastaan vain välillisesti. Jos haluaa tehdä Firestoren taustamuutoksia, se on tällä kätevää, mutta onnistuu kyllä muillakin pilvialustoilla.
Googlen GCP-konsolista haetaan "service account"-tunnus ja sille salainen avain, joka viedään halutun pilvipalvelun salaisuuksiin. No problem.
Tässä on joitain Docker-image:jen ympärille rakennettuja pilvialustoja:
- AWS Lambda (container-tuki julkistettu helmik. 2021)
- ...
Miksi uusien tulokkaiden tulo serverless-markkinoille voi olla vaikeaa?
Firebase web-frontin taustalla voi toki pitää myös omaa (Rasperry Pi) -palvelinta.
Mitä hyötyä tästä olisi?
Oman palvelimen perustana voisi olla firebase-admin
Node-kirjasto, aivan kuten Cloud Function:llakin. Muita vaihtoehtoja: Python, Java, Go. lähde
Kurssin pitäjällä tämä on se syy pitää Firebasesta. Kaikki muu tulee sen ympärillä, että "tilasta" saadaan koppi. - aito kehu
-
The Open Source Firebase Alternative
Käyttää PostgreSQL:ää
Kaikki avointa koodia
Matkansa alussa. 🧳
Hinnoittelu on ainakin toistaiseksi erilainen - ennakoitavampi - kuin Firestore:n vastaava. Kuukausipaketti. Hinnasto.
Mihin suuntaan itse toivoisit, että serverless-tietokannat kehittyvät? Huolia / toiveita?
Vertailukriteerejä:
1-5 ⭐️ | |
---|---|
dokumentointi | |
toimintavarmuus | |
hinta | |
käytön helppous | |
seurantatyökalut | |
koodin laatu | |
koodin avoimuus | |
tiedon siirrettävyys |
Tuttu "ämpäripalvelu" (bucket) datan tallettamiseen (kuvat, videot, muut isot tiedostot..).
Enemmän Google Cloud:in juttu, mutta näkyy Firebase:n konsolissa ja emulaattori tukee (viimein) tätä.
- AWS S3
Kaikille yllä oleville on yksi yhteinen asia, johon kannattaa tarkentaa.
Taustajärjestelmien toiminta, pääsyn hallinta ja konfiguraatio on määritelty versionhallinnassa.
Tämä tarkoittaa, että:
- muutoksista jää jälki
- aiempaan tilaan on helpompi palata
Myös Firebase:llä voi tehdä muutoksia konsolissa, versionhallinnan yli. Miksi tekisit niin? Miksi et?
Deklaratiivinen määrittely on keskeisenä esim. SRE (Service Reliability Engineering) -toimintatavassa, josta viime kerran lopuksi mainittiin. Se on mahdollistava tekijä.
Ajetaan testit.
$ cd packages/backend
$ npm test
Koska Firebase:n emulaattorit toistavat pilviympäristön paikallisesti, voidaan testit laatia kuin meillä olisi oma Firebase käytettävissämme (koska meillä on!). 😀
Katsotaan hakemistot
packages/backend/test-rules
japackages/backend/test-fns
.
-
Reaaliaikainen viestivirta ilman talletusta (websocket, pelillinen)
-
esim. Colyseus
-
Seuraavaksi: 5 CI - vähittäinen integraatio