Mis on täisstakk-rakendus? Selgitus lihtsas keeles
Täisstakk-rakendus on rakendus, mis sisaldab kõiki kihte, mida ta vajab töötamiseks: esiosa, mida inimesed näevad ja millel klõpsavad, taustaprogramm, mis töötab serveris ja jõustab reegleid, ning andmebaas, mis mäletab kõike. To-do-nimekiri, mis salvestab sinu ülesanded, lubab sisse logida mis tahes seadmest ja ei näita kellelegi teisele sinu nimekirja, on täisstakk. Üksainus leht, mis näitab ainult sinu lahtiolekuaegu, ei ole.
„Stakk“ tähendab lihtsalt tehnoloogiakihte, mis on üksteise peale laotud. „Täis“ tähendab, et need kõik on olemas.
Miks see AI-ga ehitamisel oluline on
Kui kirjeldad AI-ehitajale rakendust, määravad sinu kasutatud sõnad, milliseid kihte ta ehitab. „Tee leht, mis näitab meie menüüd“ annab esiosa. „Lase klientidel menüüst tellida ja köögil näha uusi tellimusi“ vajab kõiki kolme kihti, sest tellimused tuleb salvestada, jagada kahe kasutajarühma vahel ja hoida privaatsena.
Kihtide erinevuse tundmine aitab sind kolmel viisil:
- Küsid õiget asja. Kui tahad andmeid salvestada, ütle seda. Ehitaja, mis teeb ainult esiosa, näib valmis, aga unustab kõik värskendamisel.
- Märkad valekujulist valmidust. Demo näidisandmetega võib välja näha täpselt nagu töötav rakendus. Kihtide tundmine laseb sul kontrollida, et andmed tõesti kuhugi jõuavad.
- Mõistad jooksvaid kulusid. Pelk esiosa saab pakkuda staatilisi faile. Taustaprogramm ja andmebaas on serverites töötavad programmid, ja just sealt tuleb suurem osa hostimise kuludest.
Igapäevane võrdlus: restoran
Mõtle restoranile.
- Söögisaal on esiosa. Menüüd, lauad ja ettekandja märkmik. See on see, mida külalised näevad, ja see peaks olema meeldiv ja lihtne kasutada.
- Köök on taustaprogramm. Külalised sinna ei lähe. Köök võtab tellimusi vastu, kontrollib, kas roog on saadaval, valmistab selle ja keeldub kummalistest soovidest. Reeglid elavad siin.
- Kambriuks ja tellimusteraamat on andmebaas. Need hoiavad, mis on olemas ja mis on tellitud, nii et vahetuse vahetumisel ei unustata midagi.
Restoran, millel on ainult söögisaal, võib näidata sulle kena menüüd, aga sa ei saa süüa. See on esiosa-rakendus, mis teeskleb täisstakk-rakendust.
Kolm kihti lähemalt
| Kiht | Kus töötab | Tema ülesanne | Tüüpiline tehnoloogia |
|---|---|---|---|
| Esiosa | Külastaja brauseris | Kuvab ekraane, koguvad sisendit, tundub kiire | HTML, CSS, JavaScript, sageli React |
| Taustaprogramm | Serveris, mida sa kontrollid | Kontrollib õigusi, rakendab äriloogikat, suhtleb teiste teenustega salajaste võtmetega | Node.js, Python, C#, Java ja teised |
| Andmebaas | Serveris, taustaprogrammi kõrval | Salvestab ja leiab andmeid usaldusväärselt | Postgres, MySQL, SQLite |
Kihid räägivad omavahel kindlas järjekorras. Esiosa palub taustaprogrammilt midagi läbi API — kindla hulga päringuid, mida taustaprogramm vastu võtab. Taustaprogramm kontrollib päringut, loeb või kirjutab andmebaasi ja saadab vastuse tagasi. Esiosa ei suhtle andmebaasiga kunagi otse.
See järjekord on kogu stakis kõige olulisem turvaidee. Kõik esiosas olev on külastaja poolt loetav ja muudetav, sest see töötab tema seadmes. Seega reeglid — „ainult omanik näeb seda arvet“, „kupongi saab kasutada üks kord“ — tuleb jõustada taustaprogrammis. Jaotuse kohta lisaks vaata esiosa vs taustaprogramm.
Töötav näide: tundide broneerimise rakendus
Olgu, et sa juhid jooga stuudiot ja soovid, et inimesed broneeriksid tunde veebis.
Mida külastaja teeb: avab saidi, näeb selle nädala tunde, puudutab ühte, logib sisse ja broneerib koha.
Mis toimub taustal:
- Esiosa kuvab tunniplaani. Selle täitmiseks küsib ta taustaprogrammilt: „Millised tunnid on sel nädalal ja mitu kohta on veel vabu?“
- Taustaprogramm küsib andmebaasilt tunnid ja loeb iga tunni broneeringud ning vastab.
- Külastaja puudutab nuppu Broneeri. Esiosa saadab: „broneeri tund 42 sellele sisse logitud inimesele“.
- Taustaprogramm kontrollib: kas see inimene on tõesti sisse logitud? Kas tund on täis? Kas ta on selle juba broneerinud? Ainult siis, kui kõik on korras, kirjutab ta andmebaasi uue broneeringurea.
- Taustaprogramm vastab „broneeritud“ ja esiosa kuvab kinnituse.
- Hiljem logib stuudio omanik sisse ja näeb tundide nimekirja. Taustaprogramm kontrollib, et ta on administraator, enne kui näitab kõigi nimesid.
Nüüd kujuta ette, et see oleks ehitatud ainult esiosana. Tunniplaan võib kuvada, ja nupp Broneeri võib näidata kena linnukest, aga broneering kaoks värskendamisel, „vabade kohtade“ arv oleks teistele valesti ja omanik ei näeks seda kunagi. Samm 4 — kontrollid — puuduks täielikult. Selles seisnebki praktiline erinevus.
Põhiterminid
- Esiosa (kliendipoolne): osa, mis töötab brauseris.
- Taustaprogramm (serveripoolne): osa, mis töötab serveris. Seda nimetatakse ka API-serveriks.
- Andmebaas: koht, kus andmeid korrastatult hoitakse. Vaata mis on andmebaas.
- API: nimekiri päringutest, mida taustaprogramm esiosalt või teistelt programmidelt vastu võtab.
- Autentimine: kontrollimine, kes keegi on (sisselogimine). Autoriseerimine: kontrollimine, mida ta tohib teha.
- Juurutamine (deployment): kõigi kihtide paigutamine serveritesse, et avalik saaks neid kasutada.
- Monoliit vs teenused: üks programm, mis teeb kõike, versus mitu väiksemat (näiteks veebisait ja eraldi API). Mõlemad on täisstakk-rakendused.
Levinud vead ja väärarusaamad
- „See näeb valmis välja, seega on valmis.“ Näidisandmed ja töötavana näiv nupp ei ole sama mis salvestatud andmed. Värskenda lehte, ava see privaatses aknas ja kontrolli, et andmed on ikka alles.
- Reeglite panemine esiossa. Nupu peitmine ei ole turvalisus. Kui taustaprogramm ei kontrolli, saab igaüks, kes päringu teab, selle teha.
- Salajaste võtmete panemine esiossa. Makse- või AI-teenusepakkuja võti brauserikoodis on igale külastajale loetav. Võtmed kuuluvad taustaprogrammi, keskkonnamuutujatesse — vaata keskkonnamuutujad ja saladused.
- Mõte, et täisstakk tähendab keerukat. Väike täisstakk-rakendus võib olla mõni ekraan, paar taustaprogrammi marsruuti ja kolm andmebaasi tabelit. See kirjeldab kihte, mitte suurust.
- Mõte, et pead ise valima iga tehnoloogia. Esimese versiooni jaoks sobib iga mõistlik ja laialt kasutatav stakk. Olulisem on selge kirjeldus andmetest ja reeglitest.
Mida küsida oma AI-ehitajalt
Kirjelda rakendust kolme kihi kaudu, isegi kui neid ei nimeta:
- Andmed: „Salvesta tunnid (nimi, aeg, mahutavus) ja broneeringud (tund, inimene, broneerimise aeg) andmebaasi.“
- Reeglid: „Tundi ei saa broneerida üle mahutavuse. Inimene saab tunni broneerida ainult üks kord. Ainult administraatorid näevad, kes broneeris.“
- Ekraanid: „Nädala tunniplaan, broneeringu kinnitus, administraatori leht, mis loetleb broneeringud tundide kaupa.“
- Kontrollid: „Jõusta need reeglid serveris, mitte ainult lehel. Hoia kõik API-võtmed serveris.“
Seejärel testi skeptiliselt: värskenda, logi sisse kahe erineva inimesena, proovi näha andmeid, mida ei tohiks. Juhend rakenduse ehitamiseks AI-ga käib selle tsükli läbi algusest lõpuni.
Täisstakk-rakendused Mythexis
Mythex ehitab täisstakk-veebirakendusi vestluses antud kirjelduse järgi. Vaikimisi saab uus rakendus React- ja TypeScript-esiosa; kui rakendus peab andmeid salvestama, lisab Mythex projektile spetsiaalse Postgres-andmebaasi, ja saad paluda eraldi API-serveri (näiteks Python, Node, C# või Java) veebisaidi kõrvale. Kõik töötab koos elavas eelvaates ja avaldatakse avalikule URL-ile. Dokumentatsiooni lehel mitme teenusega rakendused näidatakse, kuidas veebisaiti ja API-d koos eelvaadatakse ja avaldatakse, ning lehel täisstakk-rakenduste ehitaja on alguspunkte.
Küsimused
Mida tähendab täisstakk?
Täisstakk tähendab, et rakendus sisaldab kõiki kihte, mida ta vajab, et töötada iseseisvalt: esiosa, mida inimesed näevad ja millel klõpsavad, taustaprogrammi, mis töötab serveris ja rakendab reegleid, ning andmebaasi, mis hoiab andmeid. Täisstakk-arendaja on inimene, kes oskab kõigi nende kihtidega töötada.
Kas veebisait on täisstakk-rakendus?
Mitte alati. Kindlate lehtedega tutvustav sait on ainult esiosa. Ta muutub täisstakk-rakenduseks, kui vajab serverit ja andmebaasi, näiteks et inimesed saaksid registreeruda, tellimusi salvestada või näha oma andmeid.
Kas vajan täisstakk-rakendust või piisab ainult esiosast?
Kui su rakendus peab külastuste vahel midagi meeles pidama, hoidma andmeid iga kasutaja jaoks privaatsena, võtma vastu makseid või suhtlema teiste teenustega salajaste võtmetega, vajad taustaprogrammi ja andmebaasi, seega on see täisstakk. Kui ta ainult näitab infot, piisab esiosast.
Kas AI suudab ehitada täisstakk-rakenduse?
Jah. AI-rakenduste ehitajad saavad lihtsa keelekirjelduse põhjal kirjutada esiosa, taustaprogrammi ja andmebaasi tabelid ning käitada need koos eelvaates. Sa pead ikka kirjeldama andmeid ja seda, kes mida näha tohib, ning tulemust testima.