PHP sau NodeJS pentru o platforma de socializare?

Salutare tuturor!

As dori sa creez o platforma de socializare unde utilizatorii pot posta, comenta, da like-uri si asa mai departe. Ce limbaj de programare imi recomandati? Avand in vedere ca de abia sunt iesit de pe bancile liceului. :sweat_smile: Ce parere aveti de NodeJS? Dar de PHP? Personal ma gandeam sa pornesc cu React JS pentru front-end, iar pentru back-end sa folosesc NodeJS, dar totusi as vrea sa aud si parerea cuiva mai avansat! As vrea pareri pro si contra daca se poate!

Va multumesc anticipat!

1 Like

Chiar nu contează, alege oricare.

Ai experiență cu vreunul dintre cele două și vrei să faci ceva repede? Mergi cu ce știi.

Vrei să înveți ceva nou cu conștientizarea faptului că o să dureze mai mult? Învață chestia nouă.

Dacă nu știi nici, nici, vezi exemple de la fiecare, vezi care îți pare mai ușor de înțeles și poate mergi pe ăla. Sau dai cu banul.

Dacă nu știi nici, nici, de ce te-ai oprit la astea două și de ce nu alt ecosistem?

IMO nu te uita la eventuale dezavantaje de performanță, asta e o optimizare prematură. Șansele mari sunt că nu ai să te lovești de probleme de astea, de exemplu, că ți-ar merge platforma prea greu cu mulți oameni conectați concomitent. Și dacă da, ai să rezolvi atunci cumva.

Până atunci, tu vrei să lansezi platforma repede sau să înveți un sistem nou în timp ce faci ceva de la 0, deci oricum ai să ieși câștigat.

7 Likes

Well, in astfel de proiecte nu e o buna practica sa pleci de la ce sti ci de la necesitatile tehnice ale aplicatiei iar primele la care ma gandesc ar fi numarul mare de utilizatori concurenti si nevoia de scalabilitate. Daca pornesti pe idea ca faci aplicatia cu ceva si apoi o optimizezi la nevoie vei esua pentru ca la un moment dat unele lucruri nu le vei mai putea optimiza (de luat ca exemplu toate platformele celebre de care auzim pe la televizoare ca s-au blocat cand au fost accesate simultan de multi utilizatori :hear_no_evil:).
Eu in locul tau as incepe cu arhitectura care probabil va trebui sa fie una distribuita, scalabila. Abia dupa ce ai o arhitectura buna care sta in picioare te gandesti la ce tehnologii si limbaje vei folosi (aici poti merge chiar pe o abordare agnostica :thinking:).

Daca e un proiect mic de learning uita ce am zis mai sus (desi ar prinde bine in dezvoltari ulterioare) :sunglasses:

Tip: pentru backend si nu numai, arunca o privire peste limbajul Go :slightly_smiling_face:.

2 Likes

Facebook a fost scris in PHP la inceput. Stii tu de vreo retea de socializare care a fost scrisa in Node?

1 Like

Nu vei concura cu Facebook sau alti giganti, probabil nici cu miile de alte platforme dezvoltate in scop educational de altii.

Scopul va fi deci sa inveti sa faci o aplicatie cap-coada, ce poate avea utilizatori reali. Prin urmare, in locul tau as:

  • Pune aplicatia opensource pe github si as invata cu ocazia asta atat version control (evolutia codului in timp) si as profita la maxim de parerile gratuite oferite de cei mai experimentati.
  • Scrie niste idei de arhitectura a aplicatiei si as cere pareri inainte sa scriu cod cu saptamanile.
  • Alege C# sau Java ca limbaje pentru backend. Mai curate/sanatoase pentru incepatori.
  • Typescript pentru frontend
  • O baza de date relationala pentru inceput. N-o fi ideala pentru orice dar va trece mult timp pana ii vei simti lipsurile. Postgresql are un manual foarte bine scris si te invata mai multe lucruri & ofera mai multe decat Mysql la acelasi pret PostgreSQL: Documentation: 16: PostgreSQL 16.1 Documentation

1 Like

Pe vremea cand s-au construit marile retele de socializare, nu exista inca Node. Azi, as vedea foarte fezabil sa fie construit pe Node.

—-
Related: PHP vs Javascript (NodeJS) - Care e mai bun?

Recunosc, am trollat putin.

Sunt de parere ca poti sa folosesti orice limbaj/tehnologie vrei atat timp cat ai o infrastructura/arhitectura buna in spate.

1 Like

Din ce inteleg, OP este la inceput de drum si are nevoie de sfaturi la nivelul curent.

Ontopic: cred ca saltul direct in programarea asincrona e cam mare, de aceea parerea mea e ca nodejs poate astepta.

Spor la codat, @razvanpnn !

3 Likes

Nu o să o dau pe după gard: NodeJS pe backend este foarte la îndemână.

In special pe partea de performanță, scalabilitate si comunicare in timp real.

Setul de tehnologii pe care ti l-ai propus e bun.
Dacă vrei să avansezi rapid, îți recomand solutiile de la Stream.io.

Ia limbajul pe care il stapanesti cel mai bine si spor la codat!

3 Likes

Cum s-a zis mai sus: vrei repede și bine, fă in ce cunoști deja. (bine=cunoști bine limbaj, framework). Vrei să înveți, alege ce vrei să înveți.

Multumesc mult!

Revitalizez un pic conversatia ca m-am lovit si eu recent de intrebarea “ce naiba e cu toata lumea de vrea nodejs pe server?” Din cate am citit e foarte rapid dar nu foloseste decat un singur “CPU core”. Fiind JS se potriveste bine cu bazele de date gen mongoDB care folosesc JSON pentru manipularea datelor. In consecinta cazurile ideale de utilizare sunt aplicatiile in timp real, ex. chat-urile.

Pe de alta parte, oricand e nevoie de o baza de date relationala si continut livrat prin HTTP, solutiile traditionale sunt raspunsul, adica NU NodeJS.

Mie-mi pare ca cei care cer nodejs in proiecte sunt:

  • constienti ca au nevoie de raspuns instant pentru chatul lor, deci stiu ce fac (cazul ideal)
  • nu au habar de solutia potrivita, dar e la moda nodejs si cred ca daca e rapid e suficient
  • au sefi zgarciti care nu vor sa plateasca un programator front-end JS si unul backend in PHP/Python/etc
2 Likes

Eu am asa timp de raspuns la o aplicatie scrisa in PHP cu vreo 10.000 de utilizatori de test si datele aferente.


2 Likes

Felicitari browserului pt caching! :slight_smile:

Ma refeream la timpul de executie de 58 de milisecunde din care vreo 47 e timpul de trimis/primit pachetele de la masina unde e host-at.

Adica vreo 11 milisecunde ii ia sa valideze utilizatorul, sa ia datele din baza de date, sa le proceseze, sa incarce template-ul HTML, sa-l parseze si sa returneze toata pagina.

Foloseste un singur core, dar n-ai nevoie de mai mult. Pentru microservicii e decent din cauza faptului ca porneste aproape instant si manipulezi JSON la el acasa. Nu iti trebuie serializare, deserializare mai speciala (chiar daca exista librarii). La fiecare request creezi serverul si il inchizi cum returneaza, iti faci un pool (se poate ocupa k8s sau pm2 de asta), cache-ul il tii extern in redis.

Ai librarii foarte bune de validare, programare functionala, sockets, tutoriale bune, ORM-uri interesante.
Implementarea la GraphQL e probabil cea mai buna in nodejs.

Nu cred ca asa caculezi viteza. Esti sigur ca la ping iti ia date din baza de date si iti proceseaza ceva?

2 Likes

Simpatic, dar nu asa testeze performanta unei aplicatii web. Deloc.

ping trimite cativa bytes de test care trec prin toate routerele de pe drum ajung la serverul cu IP-ul respectiv si raspunde nivelul de networking de pe server. Adica nu ajunge nici la server web, apoi la cod PHP.

1 Like