A boilerplate-mentes fejlesztés új korszaka: deklaratív full-stack keretrendszerek előnyei
Miért bonyolultabb a webfejlesztés, mint kellene?
Őszintén: a mai webes alkalmazások fejlesztése sokszor feleslegesen körülményes. REST API-kat, állapotkezelő könyvtárakat és build folyamatokat kell összehangolni, miközben egy egyszerű adatkezelő appot próbálunk létrehozni. Pedig létezik egyszerűbb megközelítés.
Mi a gond a hagyományos módon való építkezéssel?
Ha ma egy adatbázis-alapú webalkalmazást készítünk, rengeteg döntést kell meghoznunk még azelőtt, hogy az első üzleti logikát megírnánk.
- Melyik ORM-et használjuk, és milyen query builderrel működik jól?
- REST vagy GraphQL API-t építsünk, esetleg egyedi végpontokat?
- Hogyan kezeljük az állapotot a frontend oldalon?
- Az autentikációt és az autorizációt hol és hogyan valósítsuk meg?
- Kell-e build tool, TypeScript vagy transpiler?
Minden ilyen döntés plusz terhet ró ránk, és hibalehetőséget rejt magában. Pedig ezeknek a választásoknak nagy része már eldőlt a közösségben – mi csak újra és újra megcsináljuk ugyanazt.
Deklaratív, teljes stackes architektúra
Képzeld el, hogy egyetlen, összefüggő definícióban határozod meg az egész alkalmazást: az adatmodelleket, a kapcsolatokat, az API végpontokat, az UI komponenseket és a jogosultságokat. Nincs több eltérés a frontend és a backend között, nincs nyelv- és paradigma váltás.
Ez a deklaratív teljes stackes keretrendszer célja: csökkenteni az alkalmazásfejlesztést az alapvető bonyolultságra.
Mit jelent az „alapvető bonyolultság”?
Az alapvető bonyolultság az a nehézség, ami az adott feladatból eredően van jelen. Az üzleti logika, a adatbeziehungen és az egyéni igényeid – ez az esszenciális rész. Minden más az „véletlen” vagy „extra” bonyoluluk.
Egy jól működő keretrendszer minimalizálhatja az extra bonyolultságot azáltal, hogy:
- Egy egyetlen objektum-orientált nyelvben dolgozhatok a legtöbb logikaért
- Az API-ket automatikusan generálja az adatmodellből
- Reactive komponenseket ad a frontendnek, ami közvetlig kapcsolódik a backendhez
- A jogosultságokat a legbiztonságosabb helyre, az adatbázis szintjén kezeli
- Gyorsan telepíthető, minimalizálva a build időt
A mögötte liegende architektúra
A Backend: Python és erős ORM
A backend egy kifinomult object-relational mapperre (mint a SQLAlchemy) alapul, hogy nem einfach SQL-et „elrejt”, hanem Pythonic absztrakciókkal erősít meg. Ebben:
- Teljes SQL hatalom,需要 esetén
- Kompozit, examinálható kifejezések a query-kben
- Inheritance patternek, ami jól illeszkedik a domain modellbe
- Custom hooks a validációhoz, a computed properties és a komplex üzleti logikához
- A relatíonális adatbázis mint forrás igazság
A Frontend: Reactive és Declarative komponensek
Az UI nem különálló elem. Az adatmodellből generálódik, közvetlenül a backendhez kötött, és reactive módon frissül, amikor data változik. Nem Redux boilerplate, nem prop-drilling. Csak deklaratív komponensek, amelyek beschreiben, amit az app state alapján megjelenít.
A Magic: Graph-Based Access Control
Akkor, amikor permission checks helyett, egy graph-based access control rendszer az összes privilege calculation-t az adatbázisra delegálja. A backend:
- Permissioneket Pythonban írhatunk
- És ezek automatischen en der Datenbank Ebene enforced werden
- Und applyen sich consistent über alle APIs
- Und scale horizontally ohne koordinations issues
Self-Hosting Point-and-Click Editor
A valódi innováció: a point-and-click editor, ami alkalmazung code generiert, a framework használatával.
És nun, du könntest denken: „Low-code platforms produzieren immer garbage code, der nicht maintainable ist.” Und du hast recht – historisch gesehen. Törölve azonban, a editor nem AST soup generál,而是 sauber, strukturierte code in framework's idiom.
Performance: Kein Kompromiss
Hierdurch, die leute glauben nicht: es gibt keinen performance penalty.