Uvod
Tehnologija i internet postali su središnja prisutnost u našim svakodnevnim, akademskim i profesionalnim životima. Zato ne čudi sam broj web stranica i aplikacija koje istovremeno postoje. Ako ste tvrtka, željeli biste imati povezanu web platformu. Aplikacija vam omogućuje da s lakoćom plasirate i isporučite svoje usluge ciljanim kupcima.
Bez obzira na razlog zbog kojeg stvarate web aplikaciju, morate odrediti kako ćete je izgraditi. Na raspolaganju vam je mnogo opcija kada je u pitanju odabir najbolje konfiguracije poslužitelja. Arhitektura poslužitelja za koju se odlučite odrediti će kako pokrećete i upravljate svime u svom okruženju. Zato se odluka mora donijeti nakon pažljivog razmatranja.
Kako odabrati pravu konfiguraciju poslužitelja
Dakle, kako odlučiti koja je arhitektura 'prava' za vašu aplikaciju? Da biste to učinili, najprije morate razmisliti o tome koji su zahtjevi za vašu web aplikaciju. Moraju postojati određene značajke koje morate ugraditi kako bi učinkovito radila za vaš specifični slučaj upotrebe. Na primjer, možda težite aplikaciji koju je lako skalirati. Ili vam je možda potrebno da vaša aplikacija glatko radi na preglednicima kao i na mobilnim uređajima. Istovremeno, vaš proračun također može biti vaša primarna briga.
Bez obzira na to koji su vaši zahtjevi, trebali biste znati da možete stvoriti prilagođeno rješenje za svoju aplikaciju. U ovom vodiču istražit ćemo različite vrste poslužitelja koje mnogi ljudi obično koriste za svoje web aplikacije. Razgovarat ćemo o različitim slučajevima upotrebe i o tome kada je najbolje koristiti određenu konfiguraciju. Kako bismo vam pomogli odlučiti je li prikladna za vas, navest ćemo i neke prednosti i nedostatke svake arhitekture poslužitelja.
1. Sve na jednom poslužitelju
Kao što i samo ime sugerira, cijelo okruženje učitavate na jedan, jedinstveni poslužitelj. Okruženje bi uključivalo vaš web poslužitelj, vaš aplikacijski poslužitelj, kao i poslužitelj baze podataka. Na primjer, radi na Linux, Apache, MySQL, i PHP (LAMP) konfiguraciji stoga. Možete pratiti naše vodiče o tome kako instalirati LAMP stog na Ubuntu poslužitelj i kako instalirati LAMP stog na CentOS.

Kada koristiti:
Ova vrsta rasporeda najbolje funkcionira ako ste u stisci s vremenom. Jednostavno je i brzo za postavljanje. Zato funkcionira za jednostavne web aplikacije.
Prednosti:
- Jednostavno i lako za razumijevanje i implementaciju.
- Zahtijeva malo vremena za postavljanje u cijelosti.
Nedostaci:
- Ne dopušta horizontalnu skalabilnost.
- Nudi vrlo malo u smislu izolacije komponenti.
- Aplikacija i baza podataka se u biti natječu za iste resurse jer se nalaze na jednom poslužitelju.
- Kao rezultat toga, možete doživjeti loše performanse.
2. Zasebni poslužitelj baze podataka
Glavni problem s korištenjem jednog poslužitelja je natjecanje za ograničene resurse. Ova konfiguracija ima za cilj riješiti taj problem. Ovdje se sustav za upravljanje bazom podataka, ili DBMS, drži odvojeno od aplikacijskog poslužitelja. Poslužitelj baze podataka nalazi se u privatnoj mreži i ima vlastite resurse. To rezultira boljim performansama i povećanom sigurnošću.

Kada koristiti:
Opet, ako želite implementirati brzo postavljanje, ovo je prilično jednostavno konfigurirati. To je idealno rješenje ako ste zabrinuti da se baza podataka i aplikacija natječu za iste resurse.
Prednosti:
- Zasebni, namjenski resursi sustava za aplikaciju i bazu podataka, uključujući procesor, memoriju, I/O itd.
- Veći potencijal za skalabilnost u sloju aplikacije ili baze podataka.
- Možete dodavati i uklanjati resurse prema potrebi.
- Ako uklonite bazu podataka s javnog interneta, možete također pojačati svoju sigurnost.
Nedostaci:
- Malo složenije od konfiguracije s jednim poslužiteljem.
- Niska propusnost ili visoka latencija mrežne veze između dva poslužitelja mogu uzrokovati probleme s performansama.
3. Obrnuti proxy ili balanser opterećenja
Ovdje se balanseri opterećenja stupaju na scenu. Balanseri opterećenja obično se koriste u poslužiteljskim okruženjima za poboljšanje performansi i pouzdanosti. To postižu 'balansiranjem opterećenja', odnosno raspodjelom radnog opterećenja na niz poslužitelja.

Kada ga koristiti:
Balanseri opterećenja iznimno su korisni kada trebate izvršiti horizontalno skaliranje. Horizontalno skaliranje u osnovi znači dodavanje više poslužitelja u okruženje. Također možete koristiti reverzni proksi na aplikacijskom sloju za posluživanje nekoliko aplikacija odjednom koristeći jednu domenu i port. HAProxy, Nginx, i Varnish primjeri su softvera koji omogućuju balansiranje opterećenja putem reverznog proksija.
Prednosti:
- U slučaju da jedan poslužitelj u nizu otkaže, ostali poslužitelji kompenziraju njegovu funkciju balansiranjem radnog opterećenja.
- Omogućuje vam izvođenje horizontalnog skaliranja radi povećanja ili smanjenja kapaciteta okruženja.
- Također ograničava veze klijenata, što pruža zaštitu od DDOS napada.
Nedostaci:
- U slučaju da resursi sustava nisu dovoljni, balanser opterećenja može ograničiti performanse vaše aplikacije.
- Potrebna je ispravna konfiguracija kako bi se osigurale odgovarajuće performanse.
- Znatno složenije od postavljanja s jednim poslužiteljem ili odvojenim poslužiteljima.
- Morate uzeti u obzir čimbenike kao što su SSL terminacija i aplikacije koje zahtijevaju ljepljive sesije.
- Glavni razlog za zabrinutost kod korištenja balansera opterećenja je taj što on predstavlja jedinstvenu točku kvara. To znači da ako balanser opterećenja prestane raditi, cijela vaša usluga će pasti.
4. HTTP akcelerator ili predmemorirajući reverzni proksi
Ovo je konfiguracija koju možete koristiti za povećanje brzine isporuke sadržaja korisniku vaše aplikacije. Koristi različite tehnike za smanjenje tog vremena. Najvažnija je predmemoriranje odgovora s aplikacijskog poslužitelja. Akcelerator sprema sadržaj u svoju memoriju kada ga korisnik zatraži prvi put. Stoga, kada stignu slični budući zahtjevi, on brzo poslužuje sadržaj bez interakcije s aplikacijskim poslužiteljem. Svi od Nginx, Varnish i Squid sposobni su za HTTP akceleraciju.

Kada ga koristiti:
Razumljivo, ova je konfiguracija najprikladnija za datoteke i sadržaj koje korisnici vrlo često traže. Također radi vrlo dobro za dinamičke web aplikacije s puno sadržaja.
Prednosti:
- Predmemoriranje i kompresija značajno povećavaju brzinu aplikacije i obrade zahtjeva.
- Smanjenje opterećenja procesora također poboljšava performanse web-mjesta.
- Ovo također možete koristiti kao balanser opterećenja s reverznim proksijem.
Nedostaci:
- Morate ga dobro prilagoditi kako biste izvukli njegove najbolje performanse.
- Možete doživjeti loše performanse u slučaju da je stopa pogodaka predmemorije niska.
5. Replikacija baze podataka primarni-replika
Konfiguracija replikacije baze podataka primarni-replika obično je vrlo korisna za sustave koji obavljaju više čitanja nego pisanja. Na primjer, sustavi za upravljanje sadržajem mogu uvelike iskoristiti takvu arhitekturu. Za replikaciju trebate jedan primarni i jedan ili više replikacijskih čvorova. Ona raspoređuje čitanja na sve čvorove. Ažuriranja idu samo na primarni čvor.

Kada ga koristiti:
Kao što smo spomenuli, konfiguracija baze podataka temeljena na replikaciji pomaže poboljšati performanse čitanja sustava. Možete je koristiti za aplikacije poput CMS-a.
Prednosti:
- Poboljšava performanse čitanja baze podataka jer ih raspoređuje na replike.
- Ako primarni čvor koristite samo za ažuriranja, također možete poboljšati performanse pisanja.
Nedostaci:
- Svaka aplikacija koja pokušava pristupiti bazi podataka mora moći odlučiti kojem čvoru poslati ažuriranja, a kojem zahtjeve za čitanje.
- U slučaju kvara primarne replike, ažuriranja prestaju. Morate riješiti problem kako bi se ažuriranja mogla nastaviti.
- Ne postoji mehanizam automatskog prebacivanja u slučaju kvara koji bi ublažio potencijalni kvar primarnog čvora.
Kombiniranje poslužiteljskih konfiguracija
Srećom, također je moguće kombinirati različite tehnike kako biste postigli željeni ishod. To znači da možete uravnotežiti opterećenje aplikacijskih poslužitelja s poslužiteljima za predmemoriranje u jednom okruženju i replicirati bazu podataka. To vam omogućuje da iskoristite funkcionalnost obaju poslužitelja. Međutim, to ne čini postavljanje ništa složenijim ili problematičnijim.
Primjer:
Pokušat ćemo razumjeti takvo okruženje na primjeru:

U takvom okruženju, load balancer će slati statičke zahtjeve poslužiteljima za predmemoriranje. Statički sadržaj uključuje, između ostalog, CSS, slike i Javascript. Umjesto toga, sve druge vrste zahtjeva za sadržajem usmjerit će na aplikacijske poslužitelje.
Recimo da korisnik traži neki statički sadržaj iz okruženja. Evo što bi se dogodilo:
- Load balancer će najprije utvrditi je li sadržaj cache-hit ili cache-miss. Cache-hit sadržaj je prisutan u predmemoriji, dok cache-miss sadržaj nije tamo. To čini provjerom s cache-backendom.
- U slučaju da je cache-hit, load balancer šalje sadržaj korisniku.
- U slučaju da je cache-miss, cache poslužitelj prosljeđuje zahtjev pozadinskom dijelu aplikacije.
- App-backend će pronaći i poslati sadržaj iz baze podataka.
- Cache-backend prima sadržaj od load balancera. Također sprema ovaj sadržaj u predmemoriju prije nego što ga vrati load balanceru.
- Potonji zatim prosljeđuje odgovor korisniku.
S druge strane, evo što će se dogoditi ako korisnik zatraži dinamički sadržaj:
- Zahtjev će stići od korisnika do load balancera.
- Ovaj zahtjev dolazi do app-backenda.
- App-backend pronalazi traženi sadržaj i vraća ga load balanceru.
- Korisnik prima sadržaj.
Jedna od glavnih prednosti takvog kombiniranog okruženja je ta što je pouzdanije. Ne samo to, već ima i vrhunske performanse. Međutim, i dalje postoje dvije jedinstvene točke kvara – load balancer i primarni poslužitelj baze podataka.
Zaključak
Svaku konfiguraciju poslužitelja možete koristiti samostalno u svom okruženju. S druge strane, možete i kombinirati nekoliko njih kako biste stvorili personalizirano rješenje. Nema 'točnog' odgovora. Sve ovisi o funkcionalnosti koju želite dobiti iz arhitekture.
Posjedovanje temeljnog znanja o tome kako svaka konfiguracija poslužitelja radi pomoći će vam da donesete odluku za vlastitu aplikaciju. Najbolje je početi s malim i jednostavnim koracima. Možete nastaviti povećavati složenost svoje konfiguracije kako stječete iskustvo.
Sretno s radom!
Komentari
Još nema komentara. Budite prvi.