Kattilahuoneesta eroon: deklaratiiviset full-stack-kehykset tekevät sovelluskehityksestä sujuvampaa
Tuotantovalmiiden sovellusten rakentaminen ilman turhaa kuormaa
Nykyinen web-kehitys on täynnä turhaa monimutkaisuutta. Kehittäjän täytyy hallita useita eri teknologioita ja kerroksia, vaikka lopputuloksena onkin usein yksinkertainen CRUD-sovellus.
Perinteisen web-kehityksen ongelmat
Kun aloitat uuden tietokantapohjaisen sovelluksen, päätöksiä pitää tehdä heti alussa:
- Minkä ORM:n ja kyselykirjaston valitset?
- Miten rakennat rajapinnat – REST, GraphQL vai jotain muuta?
- Miten hallitset tilaa käyttöliittymässä?
- Miten toteutat autentikoinnin ja käyttöoikeudet eri kerroksissa?
- Tarvitsetko TypeScriptiä, transpileria tai build-työkaluja?
Jokainen näistä valikoista lisää kuormaa ja riskejä. Silti monet näistä ratkaisuista ovat jo vakiintuneita – kehittäjät vain toteuttavat samoja malleja uudelleen ja uudelleen.
Deklaratiivisen full-stack-arkkitehtuurin periaatteet
Tällainen framework mahdollistaa koko sovelluksen määrittelyn yhdellä tavalla – datamallit, suhteet, rajapinnat, käyttöliittymä ja käyttöoikeudet kuuluvat samaan kokonaisuuteen. Ei enää eri kielten ja paradigmojen välillä siirtymistä.
Tavoite on selkeä: vähentää kehitystä olennaiseen monimutkaisuuteen.
Mitä olennainen monimutkaisuus tarkoittaa
Olennainen monimutkaisuus syntyy liiketoimintalogiikasta, datasuhteista ja erityisvaatimuksista. Kaikki muu – integraatiot, boilerplate ja konfiguraatiot – on vain lisärasitetta.
Vastaava framework vähentää tätä rasitetta:
- Sovelluslogiikka kirjoitetaan yksinkertaisella ohjelmointikielellä
- Rajapinnat generoidaan automaattisesti datamallista
- Käyttöliittymä päivittyy suoraan datan perusteella
- Käyttöoikeudet hallitaan suoraan tietokantatasolla
- Sovellus voidaan ottaa käyttöön ilman raskasta build-prosessia
Arkkitehtuuri taustajärjestelmän näkökulmasta
Backendi: Python ja tehokas ORM
Backend perustuu voimakkaaseen object-relational mapperiin, joka ei piilota SQL:ää vaan tekee siitä Pythonin kautta helppokäyttöisen. Se mahdollistaa:
- SQL:n täyden voiman käyttyessä
- Kyselyjen koostamisen ja inspektoinnin
- Suhteiden ja perimäkuvioiden kartoituksen suoraan toivottuun malliin
- Custom-validoinnin ja business-logiikan lisättäväksi
- Tietokannan pitämisen totuuden lähteenä
Frontend: deklaratiivinen ja reagoiva käyttöliittymä
Käyttöliittymä ei ole erillinen osa sovellus. Se syntyy datamallista, on suoraan sidottu backendin dataan ja päivittyy reaktioisesti kun data muuttuu. Ei Reduxia. Ei prop-drillingia. Just deklaratiivinen kuvaus siitä, mitä näkyy.
Käyttöoikeudet: graafipohjainen hallinta
Käyttöoikeudet määritellään Pythonilla, mutta ne toteutetaan suoraan tietokantatasolla. Tämä mahdoldea:
- Määrittelyn familiarilla kielellä
- Automaattisen ja turvallisen enforcementin
- Sovelluksen kaikissa rajapinnoissa sovellettavan johdonmukaisuuden
- Horisontaalisen skaalauksen ilman koordinointiongelmia