Kas yra serveris? Paprastas vadovas programų kūrėjams
Serveris – tai kompiuteris ar jame veikianti programa, kuri laukia užklausų ir į jas atsako. Kai atidarote svetainę, jūsų naršyklė (klientas) siunčia užklausą per internetą, o kažkur esantis serveris grąžina puslapį, paveikslėlius ar duomenis. Visos programos, kurias naudojate – nuo el. pašto iki internetinės bankininkystės – priklauso nuo serverių, kurie tai daro milijonus kartų per dieną.
Kodėl serveriai svarbūs kuriant su DI
Kai DI kūrimo įrankis sukuria jums programą, dalis kodo veikia lankytojo naršyklėje, o dalis paprastai – serveryje. Serverio dalis atlieka tai, kam naršyklei negalima patikėti arba ko ji pati negali padaryti:
- Duomenų išsaugojimas ir įkėlimas iš duomenų bazės.
- Paslapčių laikymas, pavyzdžiui mokėjimo ar DI teikėjų API raktų, kurie niekada neturi pasiekti naršyklės.
- Leidimų tikrinimas – įsitikinimas, kad naudotojas mato ir keičia tik savo įrašus.
- Bendravimas su kitomis paslaugomis: kortelės apmokestinimas, el. laiško siuntimas, DI modelio kvietimas.
Žinojimas, ką daro serveris, padeda suprasti, kur iš tiesų gyvena jūsų programos taisyklės, kodėl kai kuriems pakeitimams reikia publikuoti iš naujo ir ką mokate, kai hostinate programą. Dėl dviejų pusių skirstymo žr. frontend ir backend.
Kasdienis palyginimas
Serveris yra kaip pašto skyriaus kasos darbuotojas. Jis ne eina ieškoti klientų; jis laukia. Klientas (kliento pusė) prieina su prašymu – „išsiųsti šią siuntą“, „ar yra man laiškų?“ – o darbuotojas jį aptarnauja ir grąžina rezultatą. Vienas darbuotojas gali aptarnauti daug klientų vieną po kito, o užimtas paštas atidaro daugiau langelių.
Pašte taip pat yra taisyklių, kurių klientas negali apeiti: siuntą atsiimti reikia pateikti asmens dokumentą. Taip yra ir programoje – naršyklė gali prašyti bet ko, bet serveris nusprendžia, ką gauna.
Kaip užklausa pasiekia serverį
Kai kas nors apsilanko https://bookings.example.com/schedule:
- DNS paieška. Naršyklė klausia domenų vardų sistemos, į kurį IP adresą nukreipia
bookings.example.com. Žr. kaip veikia domenai ir DNS. - Ryšys. Naršyklė prisijungia prie to adreso per 443 prievadą HTTPS ir užmezga šifruotą ryšį. Žr. kas yra HTTPS.
- Užklausa. Ji siunčia HTTP užklausą:
GET /schedule. - Darbas. Serveris vykdo kodą, kuris tvarko
/schedule– galbūt ieško šiandienos rezervacijų duomenų bazėje. - Atsakas. Jis grąžina būsenos kodą (
200 OK) ir turinį – HTML puslapį arba JSON duomenis, kuriuos puslapis parodo.
Visa tai paprastai užtrunka sekundės dalį.
Serverių tipai, apie kuriuos girdėsite
| Terminas | Ką reiškia |
|---|---|
| Žiniatinklio serveris | Programinė įranga, atsakanti į HTTP užklausas – siunčianti failus arba perduodanti užklausas jūsų programos kodui. |
| Programos serveris / backend | Jūsų kodas, veikiantis serveryje: API, kuris tvarko rezervacijas, prisijungimus ir mokėjimus. |
| Duomenų bazės serveris | Serveris, kurio užduotis – saugoti ir užklausti duomenis, pavyzdžiui Postgres duomenų bazė, su kuria bendrauja jūsų programa. |
| Failų / statinis serveris | Siunčia paruoštus failus (HTML, paveikslėlius, scenarijus) be pasirinktinio kodo vykdymo kiekvienai užklausai. |
| Fizinis serveris | Tikras įrenginys stovas duomenų centro spintoje. |
| Virtuali mašina (VM) / VPS | Fizinio įrenginio dalis, veikianti kaip atskiras kompiuteris. |
| Konteineris | Lengvesnis paketas su programa ir visa jai reikalinga, veikiantis bendroje mašinoje. Daugelis platformų diegia programas taip. |
| Serverless | Įkeliate kodą, o teikėjas jį vykdo pagal poreikį – serveriuose, kurių nereikia valdyti. Žr. kas yra serverless. |
Verta pažymėti, kad „serveris“ reiškia ir mašiną, ir programą. Sakinys „serveris nulūžo“ gali reikšti bet ką iš jų.
Darbo pavyzdys: kirpyklos rezervacijų programa
Štai ką daro serveris nedidelėje kirpyklos rezervacijų programoje:
- Lankytojas atidaro svetainę. Serveris (ar prieš jį esantis CDN) siunčia puslapio failus.
- Puslapis klausia serverio
GET /api/slots?date=2026-10-03. Serveris užklausia duomenų bazę dėl laisvų laikų ir grąžina juos kaip JSON. - Lankytojas rezervuoja 14:00. Puslapis siunčia
POST /api/bookings. Serveris patikrina, ar laikas vis dar laisvas – jis nepasitiki naršyklės žodžiu – išsaugo rezervaciją ir grąžina201 Created. - Serveris kviečia el. pašto paslaugą su slaptu raktu, laikomu serveryje, kad išsiųstų patvirtinimą.
Jei išjungtumėte serverį, puslapis galbūt vis dar įsikrautų iš CDN, bet negalėtų rodyti laikų ar išsaugoti rezervacijų.
Ko reikia serveriui, kad gerai veiktų
- Atmintis (RAM) ir CPU. Per mažai atminties – programa griūva esant apkrovai; per mažai CPU – ji lėtėja.
- Veikimas. Išjungtas serveris negali atsakyti. Kai kurios platformos neaktyvias programas užmiega ir pažadina kitos užklausos metu, tai taupo pinigus, bet pirmoji užklausa gali būti lėtesnė.
- Konfigūracija ir paslaptys, pateikiamos kaip aplinkos kintamieji.
- Žurnalai (logs) – serverio įrašai apie tai, kas įvyko; ten pirmiausia žiūrite, kai kažkas nutinka.
- Atnaujinimai ir saugumo pataisos, kurias valdomas hostingas atlieka už jus.
Dažniausi klaidingi įsitikinimai
- „Debesis reiškia, kad serverių nėra.“ Debesis – tai kitų įmonių serveriai, nuomojami pagal valandą ar naudojimą.
- „Serveris yra didelis specialus kompiuteris.“ Bet koks kompiuteris gali veikti kaip serveris. Jūsų nešiojamasis kompiuteris paleidžia vieną, kai atidarote
localhostkūrimo metu. - „Jei mygtukas paslėptas, naudotojai negali to padaryti.“ Bet kas gali siųsti užklausas tiesiai į jūsų serverį. Leidimų patikrinimai turi vykti serveryje, ne tik puslapyje.
- „Daugiau serverių išsprendžia lėtumą.“ Dažnai tikroji priežastis – lėta duomenų bazės užklausa ar išorinis API. Pirmiausia raskite kliūtį.
- „Kad turėčiau programą, turiu valdyti serverį.“ Valdomos platformos serverius valdo už jus; jūs diegiate kodą, o mašinomis rūpinasi jie.
Ko prašyti savo DI kūrimo įrankio
- „Kurios šios programos dalys veikia serveryje, o kurios – naršyklėje?“
- „Laikyk visus API raktus serveryje ir nuskaityk juos iš aplinkos kintamųjų.“
- „Tikrink leidimus serveryje kiekvienai užklausai, kuri skaito ar keičia duomenis.“
- „Kur rasti serverio žurnalus ir ką jie sako apie šią klaidą?“
- „Ar šiai programai iš viso reikia serverio, ar ji gali būti statinė svetainė?“
- „Kas nutinka pirmai užklausai po to, kai programa buvo neaktyvi?“
Serveriai Mythex platformoje
Mythex platformoje savo serverių nesukuriate ir jų nevaldote. Kuriant jūsų programa veikia privačioje debesies smėliadėžėje tiesioginei peržiūrai. Kai publikuojate, Mythex ją įdiegia: statinius frontend'us kaip statines svetaines, o backend'us (Node, Python, C#, Java ir kiti) kaip konteinerius, sukurtus iš Dockerfile, – be jokio hostingo konfigūravimo. Diegimo metu Mythex parenka mašinos dydį: pagal nutylėjimą 1 CPU ir 512 MB atminties, o daugiau galima užsisakyti (iki 1 GB Free plane, ir iki 2 CPU, 4 GB ir 3 mašinų Pro plane). Publikuotos programos neaktyvios užmiega ir pabunda kitos apsilankymo metu, o užmigusi programa nieko nekainuoja skaičiavimams. Išsami informacija yra API backend'ų ir hostingo limitų dokumentacijoje, o mūsų vadovas apie web hostingą aprėpia platesnį vaizdą.
Klausimai
Kas yra serveris paprastais žodžiais?
Serveris – tai kompiuteris ar jame veikianti programa, kuri laukia kitų įrenginių užklausų ir į jas atsako. Kai atidarote svetainę, jūsų naršyklė paprašo puslapio iš serverio, o serveris jį grąžina.
Ar serveris yra fizinis įrenginys ar programinė įranga?
Vartojamos abi reikšmės. „Serveris“ gali reikšti fizinį ar virtualų kompiuterį arba programą jame, kuri tvarko užklausas, pavyzdžiui žiniatinklio serverį. Dauguma šiandienos programų veikia virtualiose mašinose ar konteineriuose debesų teikėjo duomenų centre, o ne jūsų nuosavoje įrangoje.
Ar kiekvienai svetainei reikia serverio?
Taip, kažkas visada turi siųsti failus lankytojui. Statinei svetainei pakanka paprasto failų serverio ar CDN. Programa, kuri saugo duomenis, tvarko prisijungimus ar laiko slaptus API raktus, taip pat reikalauja backend serverio, paleidžiančio jūsų kodą.
Ką reiškia localhost?
Localhost reiškia „šis pats kompiuteris“. Kūrėjas, paleidęs programą savo kompiuteryje, ją atidaro adresu, pavyzdžiui http://localhost:3000. Tik tas kompiuteris gali ją pasiekti; niekas kitas jos nemato, kol ji neįdiegiama viešame serveryje.