Ima vec XY tehnologija koje ce ovo out-of-the-box zavrsiti :) Najgora nocna mora je podesiti sve to, i posle 2 godine odraditi migraciju na neko drugo mesto i nemas pojma sta si uopste i radio :D A na stranu kompleksnost i razne "rupice u zakonu" da izvedes sve to. Ako pravis nesto stabilno za produkciju, nije ovo neki problem koji se ne da resiti sa postojecim stvarima bez maltene ikakvog podesavanja :) Taman se covek izigra sa silnim tehnologijama da razbije monotoniju, a u isto vreme zadrzavas neki regularan build proces kompatibilan sa maltene svim sistemima da ti ni kontejnerizacija ne treba, i ne moras da razmisljas o upgrade pathu jer je sve pravljeno da se koristi onako kako ga koristis :)
Kompleksni upiti i cuvanje podataka - SQL
Realtime manipulacija podacima - Websocks
Smanjivanje upita ka bazi date koja je vecinom staticna a cesto se "trazi" - Redis (eventualno memcached)
Smanjivanje overfetchinga i fazon "get only what you need" - GraphQL
Bavis se developmentom na miru, primera mali zilion na netu, nema glavobolja :)
Sto se socketa tice, ja bih odmah krenuo na Pushera - nemas zezancije da podizes svoj websocks server, a u startu ce da ti pruzi SVE sto ti je potrebno. Ako krenes da prebijas limite, onda dizi svoj server. Do tad mozes na nekom stagingu da isprobas kako bi tvoj websocks server funkcionisao, mada iskreno, Pusher je prilicno velikodusan sa free tier limitima da neces tako lako i brzo dostici granicu. PHP to lepo hendluje, ne znam da li koristis neki FW, na primer Laravel u startu ima podrsku bas za pusher.
Nema tu njegovih socketa, to su univerzalni websockets, samo nadjes osnovi tutorial kako ih broadcastujes i to je to, browseri ih nativno resavaju. Da se ne pravim pametan, izguglaj "Pusher with PHP", ima primera koliko hoces.
Ja bih u startu krenuo na sockete radije nego posle menjao core aplikacije kad vec postane cupavo, mada imaj u vidu da 30 sekundi nije strasan interval - doduse ne znam kakav query je u pitanju. Ja trenutno radim neki masivni ecommerce gde koristimo Postgres i imamo upite koji traju po 45 minuta sa sve ispravnim indexima, Boga oca ekstenzija, cega sve ne... jednostavno kad naraste data, upiti ce se duze izvrsavati i nema spasa. Jedno je kad lokalno testiras pa sve ide k'o podmazano, drugo je kad se natrpa podacima. Ako mozes ikako, daj nam otprilike primer sta se tacno desava pa da vidimo koja je najbolja solucija, ne moras da kazes tacno sta je u pitanju, metaforizuj :) Ja muku mucim trenutno sa Postgresovim ilike-om na 30 left-joinovanih tabela (suludo ali takav je projektni zahtev, jedno dugme na novoj app menja 40 dugmadi sa stare) sa par desetina miliona upita a rezultat mi treba za manje od 2-3 sekunde jer ide autocomplete... da sam se od starta oslanjao samo na Postgres, sad bih bio u ogromnom problemu. Tu su i neke druge stvari gde Postgres ama bas nista ne moze da uradi da nam resi problem i tu ide Elastic. I performanse nikako ne testiraj na 100-200 rekorda, ni na 1000, racunaj koliko bi otprilike imao za godinu dana, dve godine, seeduj neku dummy datu, stavi na staging i vidi sta se desava. Ja sam u ovom ecomm-u prvo mislio da ce "par minuta" update queryja biti solidno, i bilo je, dok nismo seedovali ono sto ocekujemo u nekoj malo daljoj buducnosti i sa 2-3 minuta dosli na 45. Nije strasno jer ide po noci 2x i jednom dnevno, ali svejedno...
Pa iz ove price vidi da ti je bolje od samog starta da uzmes najbezbolniju mogucnost jer posle mozes da ubijes sql server :D
THE ONLY EASY DAY WAS YESTERDAY