Zašto sam s PHP-a prešao na Node.js — iskustvo jednog programera

Prenosimo priču iz predavanja Uroša Anđelića.  

Danko Novović
09/09/2020

Ne postoji najbolja univerzalna tehnologija, smatra Uroš Anđelić. Postoje samo različite tehnologije koje najuspešnije rešavaju određene zadatke, kao i tehnologije koje najviše odgovaraju timu ili pojedincu. Kako je ovaj programer istakao prilikom predavanja održanog u okviru Quantox Virtual Conference, najproverenija je praksa koristiti one alate koji se najbolje poznaju, ali, ponekad, potrebna je i promena.

Iako se u svojoj karijeri uglavnom služio PHP-om, Uroš je objasnio zašto kolegama preporučuje korišćenje Node.js-a. Naglasio je i da PHP (a naročito framework Laravel) pruža široke mogućnosti, te da predstavlja odličan izbor za razvoj backenda, iako Node.js poseduje izvesne prednosti. Skrenuo je i pažnju na to da je reč o njegovom ličnom mišljenju, te da svaki pristup i izbor treba prilagoditi sopstvenim afinitetima.

Zašto PHP (Laravel)?

Za Uroša, najbitnija osobina programskog jezika koji koristi jeste mogućnost da se u njemu bude produktivan. PHP, koji je njegov primarni jezik, to mu obezbeđuje, a framework Laravel podiže taj kvalitet na još viši nivo. Uz to što pruža sve alate potrebne za razvoj veba, Laravel omogućuje i najjednostavnije načine njihove upotrebe, kao i kreiranje održivih aplikacija, pogodnih za proširenje kapaciteta (skalabilnih).

Osim toga, Laravel nema „strmu krivulju učenja”, pa je i početnicima relativno lako da naprave jednostavnu veb aplikaciju. Dostupna je i odlična dokumentacija, a kako Uroš dodaje — ovaj framework je „zabavno” koristiti.

Uz sve to, zašto bi neko prešao na drugi framework, ili čak na drugi programski jezik?  

Kada je razmišljao u kom smeru bi nastavio obogaćivanje svog poznavanja backend tehnologija, Uroš je razmatrao učenje Pythona i Node.js-a, dok su sve ostale opcije bile ili previše kompleksne za njegove potrebe, nedovoljno „zrele” ili nedovoljno popularne. 

Opredelio se naposletku za Node.js, a za svoju odluku naveo je nekoliko razloga:

Isti programski jezik se koristi i za frontend i za backend — Prema njegovim rečima, lakše je raditi u jednom jeziku (u ovom slučaju JavaScriptu) nego u dva, čak i kada postoje različiti developeri koji rade klijentski i serverski deo aplikacije, ali i kada postoje sasvim odvojene aplikacije za front i back. 

„Ako pravite mali veb-sajt, ne morate previše da komplikujete stvari, možda vam je i WordPress ili neka slična tehnologija dovoljna. Uz poznavanje minimuma PHP-a, jQuery-ja, i CSS-a — završili ste posao. Ali, ako pravimo veliki, moderni sajt sa različitim funkcionalnostima, ili ‘single page’ aplikaciju, moramo da razmišljamo o tome koje ćemo tehnologije da koristimo, koliko ćemo korisnika imati, da li će biti potrebno implementirati notifikacije ili čet, ili neki drugi vid komunikacije u realnom vremenu. Jednostavnost je od velikog značaja, a definitivno je lakše raditi u jednom jeziku nego u dva.”

Popularnost — „Kada se ‘zaglavim’ pokušavajući da rešim neki problem, važno mi je da budem siguran da ću od onlajn zajednice dobiti odgovor na pitanja. Biću pošten, Laravel u tom smislu ima prednost u odnosu na bilo koji pojedinačni Node.js framework, ali ne i u odnosu na celu JavaScript zajednicu. Bitno je pronaći kvalitetnu zajednicu i razvijen ekosistem”. 

Brzina programskog jezika – Prema Uroševim rečima, brzina je vrlo retko limitirajući faktor kod bekend aplikacija, pošto su svi popularni jezici dovoljno brzi u velikoj većini slučajeva. Ipak, različiti su načini funkcionisanja Node.js-a i PHP-a, pa Uroš i u ovoj stavki prednost daje Node-u. 

„U PHP-u, za svaki zahtev upućen serveru, pokreće se novi PHP proces, fajlovi se interpretiraju, a kod se izvršava — pa se tek onda realizuje i ‘biznis logika’ i kreiraju odgovori koji se prosleđuju klijentu. S druge strane, kod Node.js-a proces se pokreće jednom, framework se ‘podiže’ i spreman je da procesuira zahteve. Takođe Node.js koristi ‘event loop’ da ‘hendluje’ zahteve, što je efikasno rešenje, a omogućava i višenitno programiranje. Generalno, Node je mnogo brži od PHP-a.”

Web sockets — „Reč je o tehnologiji koja se koristi za implementaciju funkcionalnosti za koje je potrebna ‘real time’ komunikacija. Četovi, push notifikacije… sve ono što server treba da pošalje korisniku, iako korisnik to nije tražio. 

I PHP i Node.js imaju biblioteke koje omogućuju rad sa veb soketima, ali se PHP-ove koriste znatno manje. Čak i kada se backend deo aplikacije izrađuje u PHP-u, deo sa veb soketima kreira se u odvojenoj Node.js aplikaciji ili pomoću nekog drugog servisa.”

Lične preferencije — „Na kraju svega, važno je da vam se dopada ono u čemu radite, i da vam je zabavno dok koristite svoj odabrani programski jezik, ukoliko je to ikako moguće”, zaključuje Uroš. „Zabava motiviše, motivacija vodi ka produktivnosti, a produktivnost daje željene rezultate. Nemojte ignorisati činjenicu da vam se nešto dopada ili ne dopada.”

Danko Novović

Objavio/la članak.

sreda, 9. Septembar, 2020.

IT Industrija

🔥 Najčitanije