Kaj je aplikacija full-stack? Razlaga v preprostem jeziku
Aplikacija full-stack je aplikacija, ki vsebuje vse plasti, ki jih potrebuje za delovanje: frontend, ki ga ljudje vidijo in kliknejo, zaledje, ki teče na strežniku in uveljavlja pravila, ter bazo podatkov, ki si zapomni vse. Seznam opravil, ki shranjuje vaše naloge, vam omogoča prijavo z vseh naprav in ne pokaže nikomer drugemu vašega seznama, je full-stack. Ena stran, ki le prikazuje vaš delovni čas, ni.
»Stack« (sklad) pomeni le plasti tehnologije, zloženih ena na drugo. »Full« pomeni, da so vse tam.
Zakaj je to pomembno, ko gradite z umetno inteligenco
Ko opišete aplikacijo gradniku z umetno inteligenco, besede, ki jih uporabite, določijo, katere plasti bo zgradil. »Naredi stran, ki prikazuje naš jedilnik« ustvari frontend. »Naj stranke naročijo iz našega jedilnika in naj kuhinja vidi nova naročila« potrebuje vse tri plasti, ker morajo biti naročila shranjena, deljena med dve vrsti uporabnikov in zasebna.
Razumevanje razlike vam pomaga na tri načine:
- Zahtevate pravo stvar. Če želite, da se podatki shranjujejo, to povejte. Gradnik, ki zgradi le frontend, bo videti dokončan, a bo ob osvežitvi vse pozabil.
- Prepoznate navidezno popolnost. Predstavitev z vzorčnimi podatki je lahko videti enako kot delujoča aplikacija. Poznavanje plasti vam omogoča preveriti, ali podatki res kam gredo.
- Razumete stroške delovanja. Sam frontend se lahko streže kot statične datoteke. Zaledje in baza podatkov sta programa, ki tečeta na strežnikih, in tam nastaja večina stroškov gostovanja.
Vsakdanja primerjava: restavracija
Pomislite na restavracijo.
- Jedilnica je frontend. Jedilni listi, mize in zvezek natakarja. To je tisto, kar gostje vidijo, in mora biti prijetno in enostavno za uporabo.
- Kuhinja je zaledje. Gostje tja ne hodijo. Sprejema naročila, preveri, ali je jed na voljo, jo skuha in zavrne čudne zahteve. Tu živijo pravila.
- Shramba in knjiga naročil sta baza podatkov. Hranita, kaj obstaja in kaj je bilo naročeno, da se ob menjavi izmene ne nič ne pozabi.
Restavracija, ki ima le jedilnico, vam lahko pokaže lep jedilni list, vendar vas ne bo nasitila. To je aplikacija, ki je le frontend in se pretvarja, da je full-stack.
Tri plasti podrobneje
| Plast | Kje teče | Njena naloga | Tipična tehnologija |
|---|---|---|---|
| Frontend | V brskalniku obiskovalca | Prikaz zaslonov, zbiranje vnosov, občutek hitrosti | HTML, CSS, JavaScript, pogosto React |
| Zaledje | Na strežniku, ki ga nadzorujete | Preverjanje dovoljenj, uveljavljanje poslovnih pravil, klicanje drugih storitev s skrivnimi ključi | Node.js, Python, C#, Java in drugi |
| Baza podatkov | Na strežniku, poleg zaledja | Zanesljivo shranjevanje in iskanje podatkov | Postgres, MySQL, SQLite |
Plasti med seboj komunicirajo v določenem vrstnem redu. Frontend zaledju zahteva nekaj prek API-ja — določenega nabora zahtev, ki jih zaledje sprejme. Zaledje zahtevo preveri, bere ali piše v bazo podatkov in pošlje nazaj odgovor. Frontend nikoli ne govori neposredno z bazo podatkov.
Ta vrstni red je najpomembnejša varnostna zamisel celotnega sklada. Vse v frontendu lahko obiskovalec prebere in spremeni, ker teče na njegovi napravi. Zato morajo pravila — »samo lastnik lahko vidi ta račun«, »kupon je mogoče uporabiti enkrat« — biti uveljavljena v zaledju. Za več o delitvi glejte frontend proti zaledju.
Delovni primer: aplikacija za rezervacije ur joge
Recimo, da vodite studio za jogo in želite, da se ljudje na spletu rezervirajo za ure.
Kaj naredi obiskovalec: odpre spletno mesto, vidi urnik tega tedna, tapne eno uro, se prijavi in rezervira mesto.
Kaj se dogaja v ozadju:
- Frontend prikaže urnik. Da ga napolni, vpraša zaledje: »Katere ure so ta teden in koliko mest je še prostih?«
- Zaledje vpraša bazo podatkov za ure in prešteje rezervacije za vsako, nato odgovori.
- Obiskovalec tapne Rezerviraj. Frontend pošlje »rezerviraj uro 42 za to prijavljeno osebo«.
- Zaledje preveri: ali je oseba res prijavljena? Ali je ura polna? Ali se je že prijavila? Šele če je vse v redu, v bazo zapiše novo vrstico rezervacije.
- Zaledje odgovori »rezervirano«, frontend pa prikaže potrditev.
- Kasneje se lastnica studia prijavi in vidi seznam ur. Zaledje preveri, da je skrbnica, preden pokaže imena vseh.
Zdaj si predstavljajte, da bi bilo to zgrajeno le kot frontend. Urnik bi se morda prikazal, gumb Rezerviraj bi morda pokazal lepo kljukico, toda rezervacija bi ob osvežitvi izginila, število »prostih mest« bi bilo za vse ostale napačno, lastnica pa je nikoli ne bi videla. Korak 4 — preverjanja — bi popolnoma manjkal. To je praktična razlika.
Ključni pojmi
- Frontend (stran odjemalca): del, ki teče v brskalniku.
- Zaledje (stran strežnika): del, ki teče na strežniku. Imenujemo ga tudi API strežnik.
- Baza podatkov: kraj, kjer so podatki shranjeni na urejen način. Glejte kaj je baza podatkov.
- API: seznam zahtev, ki jih zaledje sprejme od frontenda ali drugih programov.
- Avtentikacija: preverjanje, kdo je nekdo (prijava). Avtorizacija: preverjanje, kaj sme narediti.
- Namestitev (deployment): postavitev vseh plasti na strežnike, da jih javnost lahko uporablja.
- Monolit proti storitvam: en program, ki počne vse, proti več manjšim (na primer spletno mesto in ločen API). Oboje je full-stack.
Pogoste napake in zmote
- »Izgleda dokončano, torej je dokončano.« Vzorčni podatki in gumb, ki videti deluje, nista isto kot shranjeni podatki. Osvežite stran, odprite jo v zasebnem oknu in preverite, ali so podatki še tam.
- Pravila v frontendu. Skrivanje gumba ni varnost. Če zaledje ne preverja, lahko kdorkoli, ki pozna zahtevo, to zahtevo pošlje sam.
- Skrivni ključi v frontendu. Ključ ponudnika plačil ali umetne inteligence v kodi brskalnika lahko prebere vsak obiskovalec. Ključi spadajo na zaledje, v okoljske spremenljivke — glejte okoljske spremenljivke in skrivnosti.
- Mišljenje, da full-stack pomeni zapleteno. Majhna aplikacija full-stack je lahko nekaj zaslonov, peščica poti v zaledju in tri tabele v bazi. Opisuje plasti, ne velikosti.
- Mišljenje, da morate sami izbrati vsako tehnologijo. Za prvo različico je dober vsak smiseln, široko uporabljen sklad. Pomembnejši je jasen opis podatkov in pravil.
Kaj zahtevati od gradnika z umetno inteligenco
Aplikacijo opišite z vidika treh plasti, tudi če jih ne poimenujete:
- Podatki: »Shrani ure (ime, čas, kapaciteto) in rezervacije (ura, oseba, čas rezervacije) v bazo podatkov.«
- Pravila: »Ure ni mogoče rezervirati čez kapaciteto. Oseba se lahko prijavi na uro le enkrat. Kdo je rezerviral, lahko vidijo samo skrbniki.«
- Zasloni: »Tedenski urnik, potrditev rezervacije, skrbniška stran s seznamom rezervacij po uri.«
- Preverjanja: »Uveljavi ta pravila na strežniku, ne le na strani. Ključe API hrani na strežniku.«
Nato preizkusite kot skeptik: osvežite, prijavite se kot dve različni osebi, poskusite videti podatke, ki jih ne bi smeli. Vodnik za gradnjo aplikacije z umetno inteligenco opisuje ta cikel od začetka do konca.
Aplikacije full-stack na Mythexu
Mythex gradi spletne aplikacije full-stack iz opisa v klepetu. Nova aplikacija privzeto dobi frontend v Reactu in TypeScriptu; ko aplikacija potrebuje shranjevanje podatkov, Mythex projektu doda namensko bazo Postgres, lahko pa zahtevate ločen API strežnik (na primer v Pythonu, Node, C# ali Javi) poleg spletnega mesta. Vse teče skupaj v živem predogledu in se objavi na javnem naslovu URL. Stran o večstoritvenih aplikacijah v dokumentaciji prikazuje, kako se spletno mesto in API predogledata in objavita skupaj, stran gradnik aplikacij full-stack pa ponuja izhodišča.
Vprašanja
Kaj pomeni full-stack?
Full-stack pomeni, da aplikacija vsebuje vse plasti, ki jih potrebuje za delovanje: frontend, ki ga ljudje vidijo in kliknejo, zaledje, ki teče na strežniku in uveljavlja pravila, ter bazo podatkov, ki hrani podatke. Razvijalec full-stack je nekdo, ki lahko dela na vseh teh plasteh.
Ali je spletno mesto vedno aplikacija full-stack?
Ne vedno. Predstavitveno spletno mesto s fiksnimi stranmi je le frontend. Postane full-stack, ko potrebuje strežnik in bazo podatkov, na primer da se ljudje lahko prijavijo, shranijo naročila ali vidijo svoje podatke.
Potrebujem aplikacijo full-stack ali le frontend?
Če mora vaša aplikacija med obiski nekaj zapomniti, podatke hraniti zasebno za vsakega uporabnika, sprejemati plačila ali komunicirati z drugimi storitvami s skrivnimi ključi, potrebujete zaledje in bazo podatkov, torej je full-stack. Če le prikazuje informacije, je dovolj frontend.
Ali lahko umetna inteligenca zgradi aplikacijo full-stack?
Da. Gradniki aplikacij z umetno inteligenco lahko iz opisa v naravnem jeziku napišejo frontend, zaledje in tabele baze podatkov ter jih skupaj poženejo v predogledu. Še vedno morate opisati podatke in to, kdo jih sme videti, ter rezultat preizkusiti.