Parliamo di software 2: Dudeswave
-
@absc said in Parliamo di software 2: Dudeswave:
E sí, l'informatica è moda, e tutti usano Javascript non perché è intrinsecamente una scelta migliore, ma perché facebook dice che è fico fare tutto in Javascript.
@absc said in Parliamo di software 2: Dudeswave:
La storia del "eh tutti fanno cosí" ha stancato. L'informatica è peggio del fashion e quando chiedi motivazioni tecniche VERE, quasi tutti i programmatori ti rispondono "ma Guggle fa cosí, quindi DEVE essere buono" e si segue l'hype per gonfiare il CV. Non ci sono motivazioni tecniche.
Bho, sinceramente non mi trovate d'accordo. Per alcuni puo' essere anche cosi'. Ma mediamente, si tende a virare verso le soluzioni tecniche migliori (non tutti, per carita'), ci sono soldi dietro eh.
Se poi mi dici e dimostri che, senza javascript, puoi offrire un sito come (esempio) ferrari.com, a costi minori, ed uguale resa finale, cospargo il capo di cenere e ti daro' ragione da oggi fino all'eternita' .
Non puoi rispondere a questa domanda, per lo stesso motivo che ti dissi prima.
Che alternative ho a Javascript sul client?
Posso usare altri linguaggi di programmazione su un browser web per fare "cose"? No, non posso.
Quindi la domanda che hai posto non ha senso.
È questo che intendo quando ti dico che confondi tecnologie di back-end con tecnologie di front-end.
P.S: il sito di ferrari fa diventare il mio pc caldo come una stufa e lento come la morte!
-
Non puoi rispondere a questa domanda, per lo stesso motivo che ti dissi prima.
Che alternative ho a Javascript sul client?
Posso usare altri linguaggi di programmazione su un browser web per fare "cose"? No, non posso.
Quindi la domanda che hai posto non ha senso.
È questo che intendo quando ti dico che confondi tecnologie di back-end con tecnologie di front-end.
P.S: il sito di ferrari fa diventare il mio pc caldo come una stufa e lento come la morte!
@absc un tempo i siti come quello di ferrari li facevano in Flash. Il concetto era lo stesso, ma anziche' scaricare un pezzo di javascript scaricavi un pezzo di flash. Il guaio era che a livello di sicurezza flash era penoso, altrimenti avrebbe probabilmente vinto su javascript.
Perche'?
Perche' a quei tempi tutti sapevano usare flash, e nessuno javascript.
Puoi sempre scrivere questo:
<script type="application/javascript" src="https://example.com/script.js"></script>
e girera' uno script in javascript. Ma se scrivi:
<script type="text/html" src="https://example.com/myrest"></script>
al posto del pulsante ti compare il codice html che vuoi, compreso se serve un altro pulsante.
Ci sono tanti modi per fare quel sito, anche usando object e flash.
Ha vinto javascript perche' i programmatori lo amano di piu', tutto qui.
O meglio, perche' non sanno fare nient'altro. -
Non puoi rispondere a questa domanda, per lo stesso motivo che ti dissi prima.
Che alternative ho a Javascript sul client?
Posso usare altri linguaggi di programmazione su un browser web per fare "cose"? No, non posso.
Quindi la domanda che hai posto non ha senso.
È questo che intendo quando ti dico che confondi tecnologie di back-end con tecnologie di front-end.
P.S: il sito di ferrari fa diventare il mio pc caldo come una stufa e lento come la morte!
@amigaunicorn
no, non intendevo quello. Seppure rimango della mia idea che con una web (progressive) app full client, si possano strutturare meglio i micro-servizi ed ottimizzare i consumi di questi lato server, comunque no. Era una risposta puramente di chi fa cosa. Se mi dici che puoi mettere il Javascript nel back-end, che poi cosi' una volta arrivato al browser fa il suo lavoro... bhe, che posso dire, in linea mooolto astratta si. Ti vuoi male ma si@absc
Io sono partito dal presupposto che hai scritto tu, riguardo il tuo progetto. Se mi dici che stai implementando una parte back-end che fa quello che hai scritto, ok. Io non userei Erlang, ma queste sono solo opinioni. Se avevo capito male, e cioe' che faceva anche la parte di sputare l'html del blog (o qualsiasi altra cosa debba fare sul web), ci siamo semplicemente non capiti (io non ho capito).
Se invece lo vuoi fare.. meh, per me e' un no ! (cit)
-
@Aethiss said in Parliamo di software 2: Dudeswave:
Se poi mi dici e dimostri che, senza javascript, puoi offrire un sito come (esempio) ferrari.com , a costi minori, ed uguale resa finale, cospargo il capo di cenere e ti daro' ragione da oggi fino all'eternita' .
aspetta, stai chiedendo di sapere quanto cala il consumo della CPU dei server se io metto il javascript sul server, con CDN e acceleratori, o sul client come app?
La differenza e' nemmeno misurabile. Se anche metti il javascript sui server, o altri contenuti statici, un'azienda come il gruppo fiat avra' i suoi netscaler direttamente nel DC dell' ISP telefonico, dove termina il tunnel GPT, e non passi nemmeno da internet per scaricarli. Cosi' come li ha BMW, o Porsche, o chiunque altro. Si chiama edge computing.
Tutto quello di cui non fai cache sara' al massimo qualche chiamata ad un API gateway, che non e' possibile mettere in cache, ma appunto, facendo edge computing, non mi raccontare che hai tolto carico sui server se metti il javascript sul client anziche' sul server.
In linea astratta, puoi generare lo stesso javascript del sito usando unbackend erlang: lo fa per esempio Discord, che e' scritta in Elixir, che gira sulla VM di Erlang, come Scala gira su quella Java. E ha una signora UI.
Non capisco davvero questo tuo ignorare l'infrastruttura e concentrarsi sul linguaggio... sei tu, quello che sosteneva che mettere il JS sul client risparmiasse CPU sui server. Che non e' assolutamente vero.
Non capisco davvero questo tuo ignorare l'infrastruttura e concentrarsi sul linguaggio... sei tu, quello che sosteneva che mettere il JS sul client risparmiasse CPU sui server. Che non e' assolutamente vero.
Probabilmente è solo un programmatore... (dai, ci si sfotte).
-
@amigaunicorn
no, non intendevo quello. Seppure rimango della mia idea che con una web (progressive) app full client, si possano strutturare meglio i micro-servizi ed ottimizzare i consumi di questi lato server, comunque no. Era una risposta puramente di chi fa cosa. Se mi dici che puoi mettere il Javascript nel back-end, che poi cosi' una volta arrivato al browser fa il suo lavoro... bhe, che posso dire, in linea mooolto astratta si. Ti vuoi male ma si@absc
Io sono partito dal presupposto che hai scritto tu, riguardo il tuo progetto. Se mi dici che stai implementando una parte back-end che fa quello che hai scritto, ok. Io non userei Erlang, ma queste sono solo opinioni. Se avevo capito male, e cioe' che faceva anche la parte di sputare l'html del blog (o qualsiasi altra cosa debba fare sul web), ci siamo semplicemente non capiti (io non ho capito).
Se invece lo vuoi fare.. meh, per me e' un no ! (cit)
@Aethiss said in Parliamo di software 2: Dudeswave:
Seppure rimango della mia idea che con una web (progressive) app full client, si possano strutturare meglio i micro-servizi ed ottimizzare i consumi di questi lato server,
come se fosse antani. Il punto e' che hai un client e un server. Il resto della supercazzola non serve a nulla. Se mi metto sulla rete e sniffo il traffico, non vedo passare niente di tutto questo. Vedo passare traffico. Vedo passare il tuo javascript, come potrei veder passare flash, e come un tempo vedevo passare applet java, e altro e altro e altro.
Se mi dici che puoi mettere il Javascript nel back-end, che poi cosi' una volta arrivato al browser fa il suo lavoro... bhe, che posso dire, in linea mooolto astratta si. Ti vuoi male ma si
non mi voglio affatto male, perche' alla fine anche sul tuo cellulare e' sempre un client che lo fa girare. E ho migliaia di tool a disposizione per fare in modo che la latenza che conta in realta' sia quella del tuo lentissimo schermo da cellulare. Te lo ripeto: se ho un accordo con la telco, metto un netscaler a fare cache direttamente nell'infrastruttura dell' ISP, dove termina il tunnel GPT del tuo cellulare. E praticamente, hai il javascript al massimo della banda.
Cosa mi cambia, alla fine? Quasi il 100% delle automobili "connected mobility" funzionano cosi'. Mica in Javascript.
Il carico sui server cala di pochissimo. Conosco un'azienda di auto che gestisce otto milioni di auto continuamente connesse, ogni volta che sono accese, e non usa javascript, al massimo fa passare del json. E per 8 milioni di auto paga circa 50K/mese al suo cloud.
Davvero pensi che risparmierebbe molto se mettesse il javascript sull'auto, sotto forma di app?
Molti ci hanno provato. Ci hanno provato e hanno fallito? Ci hanno provato e sono morti. (cit. Reverenda Madre bene Gesserit, dune)
Perche'? Perche' la distribuzione di software su dispositivi embedded e' un casino. L'auto parte, scarica il JS , lo esegue in locale comincia la magia.
Del resto, Whatsapp e' scritto in Erlang sul backend, e non mi sembra che abbia particolari problemi di performance.
Ma alla fine, per esempio, il JS di cui parlo nelle auto non e' certo scaricato da un server con node.js, nel caso delle auto e' in Java.
Davvero, non capisco la tua attenzione verso il particolare linguaggio.
-
@amigaunicorn
no, non intendevo quello. Seppure rimango della mia idea che con una web (progressive) app full client, si possano strutturare meglio i micro-servizi ed ottimizzare i consumi di questi lato server, comunque no. Era una risposta puramente di chi fa cosa. Se mi dici che puoi mettere il Javascript nel back-end, che poi cosi' una volta arrivato al browser fa il suo lavoro... bhe, che posso dire, in linea mooolto astratta si. Ti vuoi male ma si@absc
Io sono partito dal presupposto che hai scritto tu, riguardo il tuo progetto. Se mi dici che stai implementando una parte back-end che fa quello che hai scritto, ok. Io non userei Erlang, ma queste sono solo opinioni. Se avevo capito male, e cioe' che faceva anche la parte di sputare l'html del blog (o qualsiasi altra cosa debba fare sul web), ci siamo semplicemente non capiti (io non ho capito).
Se invece lo vuoi fare.. meh, per me e' un no ! (cit)
Se fossi un programmatore web esperto, magari farei come faresti tu. Servirei dal back-end un bundle Javascript, che poi farebbe chiamate XMLHttpRequest al back-end in erlang. Userei forse delle API Json. ok.
Ma io non sono un programmatore web.
Renderizzare del banale HTML lato server ed inviarlo al browser è facile. Templating engines ne esistono a iosa e quella parte addirittura l'ho già fatta.
Nessuno mi impedirà di migrare verso un modello piú evoluto sul client in futuro, ma al momento non ne ho bisogno, anche se ci avevo pensato.
-
Se fossi un programmatore web esperto, magari farei come faresti tu. Servirei dal back-end un bundle Javascript, che poi farebbe chiamate XMLHttpRequest al back-end in erlang. Userei forse delle API Json. ok.
Ma io non sono un programmatore web.
Renderizzare del banale HTML lato server ed inviarlo al browser è facile. Templating engines ne esistono a iosa e quella parte addirittura l'ho già fatta.
Nessuno mi impedirà di migrare verso un modello piú evoluto sul client in futuro, ma al momento non ne ho bisogno, anche se ci avevo pensato.
@absc Rinnovo quello che ho gia' detto. Compatibilmente con i miei tempi a disposizione, si, e volentieri. Davvero.
@amigaunicorn
sti cercando di convincermi di una cosa sul quale sono gia' d'accordo.
pero' io punto la luna e tu guardi il dito.Parlando solo di "web", perche' altrimenti cade il discorso. Posso "scaricare" la mia "macchina" dove c'e' il web-server dal lavoro di fornire html ad ogni richiesta ? Si.
Aiuta nel strutturare i miei micro-servizi (login, categorie-dei-mondi-degli-arkonnen, pagamenti o quello che vuoi). Si.
Posso ovviare al carico del lavoro del web-server e del linguaggio che gira sulla macchina (php o chi vuoi) con una CDN. Si. Sarebbe uguale, no. Dipende da cosa fa il "sito", avra' dei costi differenti.
Posso ammortizzare tali costi. Si.Eh no, seppur programmo ancora (mi piace sempre tanto), qualche infrastruttura medio-grande (tipo 40 milioni di sterline al black-friday, 80 milioni di accessi unici in 3 gg [lo so che per quelli grossi davvero sono numeretti eh]) ci ho lavorato. E non per mettere su i css
-
@absc Rinnovo quello che ho gia' detto. Compatibilmente con i miei tempi a disposizione, si, e volentieri. Davvero.
@amigaunicorn
sti cercando di convincermi di una cosa sul quale sono gia' d'accordo.
pero' io punto la luna e tu guardi il dito.Parlando solo di "web", perche' altrimenti cade il discorso. Posso "scaricare" la mia "macchina" dove c'e' il web-server dal lavoro di fornire html ad ogni richiesta ? Si.
Aiuta nel strutturare i miei micro-servizi (login, categorie-dei-mondi-degli-arkonnen, pagamenti o quello che vuoi). Si.
Posso ovviare al carico del lavoro del web-server e del linguaggio che gira sulla macchina (php o chi vuoi) con una CDN. Si. Sarebbe uguale, no. Dipende da cosa fa il "sito", avra' dei costi differenti.
Posso ammortizzare tali costi. Si.Eh no, seppur programmo ancora (mi piace sempre tanto), qualche infrastruttura medio-grande (tipo 40 milioni di sterline al black-friday, 80 milioni di accessi unici in 3 gg [lo so che per quelli grossi davvero sono numeretti eh]) ci ho lavorato. E non per mettere su i css
@Aethiss said in Parliamo di software 2: Dudeswave:
Eh no, seppur programmo ancora (mi piace sempre tanto), qualche infrastruttura medio-grande (tipo 40 milioni di sterline al black-friday, 80 milioni di accessi unici in 3 gg [lo so che per quelli grossi davvero sono numeretti eh]) ci ho lavorato. E non per mettere su i css
non capisco, allora perche' insisti? sai benissimo che una volta fatto il backend, OGGI o spedisci javascript o spedisci JSON. Ma sai anche benissimo che non e' la cosa piu' efficente. Si sono fatte cose ben piu' belle di quel sito ferrari usando flash, ai suoi tempi.
Solo che flash ha perso.
Parlando di html, non hai bisogno di renderizzarlo ogni volta. Lo puoi renderizzare per user-agent, e a quel punto la cache non ti richiedera' di renderizzarlo ogni volta. Cosa cambia se la renderizzi con una macchina virtuale node.js o con una che lavora con erlang?
-
@absc Rinnovo quello che ho gia' detto. Compatibilmente con i miei tempi a disposizione, si, e volentieri. Davvero.
@amigaunicorn
sti cercando di convincermi di una cosa sul quale sono gia' d'accordo.
pero' io punto la luna e tu guardi il dito.Parlando solo di "web", perche' altrimenti cade il discorso. Posso "scaricare" la mia "macchina" dove c'e' il web-server dal lavoro di fornire html ad ogni richiesta ? Si.
Aiuta nel strutturare i miei micro-servizi (login, categorie-dei-mondi-degli-arkonnen, pagamenti o quello che vuoi). Si.
Posso ovviare al carico del lavoro del web-server e del linguaggio che gira sulla macchina (php o chi vuoi) con una CDN. Si. Sarebbe uguale, no. Dipende da cosa fa il "sito", avra' dei costi differenti.
Posso ammortizzare tali costi. Si.Eh no, seppur programmo ancora (mi piace sempre tanto), qualche infrastruttura medio-grande (tipo 40 milioni di sterline al black-friday, 80 milioni di accessi unici in 3 gg [lo so che per quelli grossi davvero sono numeretti eh]) ci ho lavorato. E non per mettere su i css
Posso "scaricare" la mia "macchina" dove c'e' il web-server dal lavoro di fornire html ad ogni richiesta ? Si.
Aiuta nel strutturare i miei micro-servizi (login, categorie-dei-mondi-degli-arkonnen, pagamenti o quello che vuoi). Si.
Posso ovviare al carico del lavoro del web-server e del linguaggio che gira sulla macchina (php o chi vuoi) con una CDN. Si. Sarebbe uguale, no. Dipende da cosa fa il "sito", avra' dei costi differenti.
Posso ammortizzare tali costi. Si.Io a questo punto fallisco nel capire cosa c'entri il linguaggio di programmazione usato per la parte back-end. Sul serio, non ci arrivo.
Erlang lo uso per il back-end, per servire risorse e in teoria nessuno mi vieterebbe di costruire una SPA con un back-end Erlang, usando cowboy come webserver.
Un altro punto che non comprendo: dove andrebbe a prendere il bundle del codice dell'applicazione il browser web dell'utente se non dal mio back-end? Una qualche CDN? Dove?
-
Posso "scaricare" la mia "macchina" dove c'e' il web-server dal lavoro di fornire html ad ogni richiesta ? Si.
Aiuta nel strutturare i miei micro-servizi (login, categorie-dei-mondi-degli-arkonnen, pagamenti o quello che vuoi). Si.
Posso ovviare al carico del lavoro del web-server e del linguaggio che gira sulla macchina (php o chi vuoi) con una CDN. Si. Sarebbe uguale, no. Dipende da cosa fa il "sito", avra' dei costi differenti.
Posso ammortizzare tali costi. Si.Io a questo punto fallisco nel capire cosa c'entri il linguaggio di programmazione usato per la parte back-end. Sul serio, non ci arrivo.
Erlang lo uso per il back-end, per servire risorse e in teoria nessuno mi vieterebbe di costruire una SPA con un back-end Erlang, usando cowboy come webserver.
Un altro punto che non comprendo: dove andrebbe a prendere il bundle del codice dell'applicazione il browser web dell'utente se non dal mio back-end? Una qualche CDN? Dove?
@absc said in Parliamo di software 2: Dudeswave:
Io a questo punto fallisco nel capire cosa c'entri il linguaggio di programmazione usato per la parte back-end. Sul serio, non ci arrivo.
@amigaunicorn sostiene, che un servizio che gira (node, php o quello che vuoi) che deve fornire dell'html (ripeto questo punto eh, un servizio web, che ritorna un html bello pronto che il tuo browser ti mostra), con i dovuti "accorgimenti" (cdn) non debba essere "chiamato" dinamicamente ad ogni sezione.
Io dico che si, e' vero, ma una cdn non ha senso che cachi tutto. Io dico che un app js, una volta ricevuto il bundle js (sempre di "servizio" in un server che restituisce, un html), e' piu' performante, e non ti serve richiamare quel servizio ad ogni pagina.E' pur sempre vero, come altresi' fatto notare da @amigaunicorn , che puoi scrivere
<html> <script type='text/javascript' src='il-path-del-mio-js'></script> ....
ed ottieni (se vuoi) lo stesso risultato. Io sostengo che a quel punto ci sono framework (aimhe' in quel linguaggio di merda che e' js), che gia' lo fanno, e lo fanno meglio. Tutto qui' .
-
@absc said in Parliamo di software 2: Dudeswave:
Io a questo punto fallisco nel capire cosa c'entri il linguaggio di programmazione usato per la parte back-end. Sul serio, non ci arrivo.
@amigaunicorn sostiene, che un servizio che gira (node, php o quello che vuoi) che deve fornire dell'html (ripeto questo punto eh, un servizio web, che ritorna un html bello pronto che il tuo browser ti mostra), con i dovuti "accorgimenti" (cdn) non debba essere "chiamato" dinamicamente ad ogni sezione.
Io dico che si, e' vero, ma una cdn non ha senso che cachi tutto. Io dico che un app js, una volta ricevuto il bundle js (sempre di "servizio" in un server che restituisce, un html), e' piu' performante, e non ti serve richiamare quel servizio ad ogni pagina.E' pur sempre vero, come altresi' fatto notare da @amigaunicorn , che puoi scrivere
<html> <script type='text/javascript' src='il-path-del-mio-js'></script> ....
ed ottieni (se vuoi) lo stesso risultato. Io sostengo che a quel punto ci sono framework (aimhe' in quel linguaggio di merda che e' js), che gia' lo fanno, e lo fanno meglio. Tutto qui' .
no, piano con gli straw man argument. Con me non funzionano.
Sei tu che te ne sei uscito col fatto che se usi il bundle javascript, allora tutto il lavoro si sposta dalla CPU del server alla CPU del mobile.
Ed e', ripeto, una catastrofica cazzata, della quale non riuscirai MAI, per OVVIE ragioni, a produrre alcuna prova o test che lo confermi, nel caso ci sia un'infrastruttura decente, con gli acceleratori nel frontend e le CDN.Generare HTML o generare JSON, di cui la tua "bundle" si nutre, per una CPU e' uguale, in termini di sforzo, o quasi. E non voglio parlare di quando usate dei cazzo di graph database sul backend , o Jquery, e nessuno dei due gira sul frontend. Che differenza faccia, secondo te, per la CPU del server tra generarti pagine web statiche o json, lo sai solo tu.
Poi, dentro la tua stanzetta di developers puoi usare i soliti termini mai definiti, tipo 'ottimizzare". Noi di operations invece parliamo di KPI,
e no, non si e' mai vista traccia, sulle CPU dei server, di alcuna "ottimizzazione", se scarichi il bundle da una CDN, o ce l'hai che gira sul cellulare.Quella e' soltanto l'unica tecnologia che il developer moderno sa usare, sull'unico protocollo che conosce parzialmente, cioe' HTTP. Ed e' per questo che va forte.
-
undefined philotette referenced this topic
-
no, piano con gli straw man argument. Con me non funzionano.
Sei tu che te ne sei uscito col fatto che se usi il bundle javascript, allora tutto il lavoro si sposta dalla CPU del server alla CPU del mobile.
Ed e', ripeto, una catastrofica cazzata, della quale non riuscirai MAI, per OVVIE ragioni, a produrre alcuna prova o test che lo confermi, nel caso ci sia un'infrastruttura decente, con gli acceleratori nel frontend e le CDN.Generare HTML o generare JSON, di cui la tua "bundle" si nutre, per una CPU e' uguale, in termini di sforzo, o quasi. E non voglio parlare di quando usate dei cazzo di graph database sul backend , o Jquery, e nessuno dei due gira sul frontend. Che differenza faccia, secondo te, per la CPU del server tra generarti pagine web statiche o json, lo sai solo tu.
Poi, dentro la tua stanzetta di developers puoi usare i soliti termini mai definiti, tipo 'ottimizzare". Noi di operations invece parliamo di KPI,
e no, non si e' mai vista traccia, sulle CPU dei server, di alcuna "ottimizzazione", se scarichi il bundle da una CDN, o ce l'hai che gira sul cellulare.Quella e' soltanto l'unica tecnologia che il developer moderno sa usare, sull'unico protocollo che conosce parzialmente, cioe' HTTP. Ed e' per questo che va forte.
@amigaunicorn said in Parliamo di software 2: Dudeswave:
. E non voglio parlare di quando usate dei cazzo di graph database sul backend , o Jquery, e nessuno dei due gira sul frontend.
Sinceramente non so che intendi. Forse graphql? JQuery, se intendiamo la stessa cosa, cosa centri con il back-end non lo so. Forse intendiamo cose diverse.
Sul resto…Bho, come ho detto qualche post fa, non sono d’accordo, ma rispetto la tua competenza e le tue posizioni.
Io dovevo “gestire” un e-commerce con migliaia di items.
Ho sbattuto la testa sui costi/configurazione della cdn (Akamai). Io ero un supervisore, gli esperti ci mettevano le mani. Il sito mobile era un app in react, il desktop era ancora un vecchio mix di php e amenie varie.
Diciamo che 2 o 3 cose le ho viste su come dovevano scalare i server a seconda del carico.
Forse eravamo scarsi noi, tutto può essere. -
@amigaunicorn said in Parliamo di software 2: Dudeswave:
. E non voglio parlare di quando usate dei cazzo di graph database sul backend , o Jquery, e nessuno dei due gira sul frontend.
Sinceramente non so che intendi. Forse graphql? JQuery, se intendiamo la stessa cosa, cosa centri con il back-end non lo so. Forse intendiamo cose diverse.
Sul resto…Bho, come ho detto qualche post fa, non sono d’accordo, ma rispetto la tua competenza e le tue posizioni.
Io dovevo “gestire” un e-commerce con migliaia di items.
Ho sbattuto la testa sui costi/configurazione della cdn (Akamai). Io ero un supervisore, gli esperti ci mettevano le mani. Il sito mobile era un app in react, il desktop era ancora un vecchio mix di php e amenie varie.
Diciamo che 2 o 3 cose le ho viste su come dovevano scalare i server a seconda del carico.
Forse eravamo scarsi noi, tutto può essere.stai mescolando cose che non c'entrano niente. Il database di backend di un sito di e-commerce di certo non gira sul tuo cellulare. gira sul backend. qualsiasi cosa tu metti sul cellulare chiamera' indietro per avere dei dati. Il punto e' molto semplice: alla fine il server consuma CPU solo per dare dei dati a qualsiasi cosa giri sul cellulare. E non c'e' modo di fuggire da questo.
Ma a questo punto ho un dubbio: secondo te, cosa gira sul cellulare, di preciso, e cosa gira sui backend? Che cosa, secondo te, consuma CPU sui server, e che cosa sul client?
-
stai mescolando cose che non c'entrano niente. Il database di backend di un sito di e-commerce di certo non gira sul tuo cellulare. gira sul backend. qualsiasi cosa tu metti sul cellulare chiamera' indietro per avere dei dati. Il punto e' molto semplice: alla fine il server consuma CPU solo per dare dei dati a qualsiasi cosa giri sul cellulare. E non c'e' modo di fuggire da questo.
Ma a questo punto ho un dubbio: secondo te, cosa gira sul cellulare, di preciso, e cosa gira sui backend? Che cosa, secondo te, consuma CPU sui server, e che cosa sul client?
@amigaunicorn said in Parliamo di software 2: Dudeswave:
stai mescolando cose che non c'entrano niente. Il database di backend di un sito di e-commerce di certo non gira sul tuo cellulare. gira sul backend.
Scusa, mi trovi dove mai ho scritto questo ?
@amigaunicorn said in Parliamo di software 2: Dudeswave:
Ma a questo punto ho un dubbio: secondo te, cosa gira sul cellulare, di preciso, e cosa gira sui backend? Che cosa, secondo te, consuma CPU sui server, e che cosa sul client?
sul cellulare, ma sarebbe piu' appropriato dire sul browser, e' indifferente mobile o desktop. (sempre web eh, non stavo parlando di app native), gira solo html & javascript. Niente altro.
forse ha tratto in inganno quando ho scritto "sito mobile". Spiego meglio, quando un browser accedeva sul sito, veniva intercettata la richiesta, se era un dispositivo mobile, gli si dava in pasto un app in react, ottimizzata per l'uso in un browser di un cellulare, altrimenti andava sulla versione legacy.
-
@amigaunicorn said in Parliamo di software 2: Dudeswave:
stai mescolando cose che non c'entrano niente. Il database di backend di un sito di e-commerce di certo non gira sul tuo cellulare. gira sul backend.
Scusa, mi trovi dove mai ho scritto questo ?
@amigaunicorn said in Parliamo di software 2: Dudeswave:
Ma a questo punto ho un dubbio: secondo te, cosa gira sul cellulare, di preciso, e cosa gira sui backend? Che cosa, secondo te, consuma CPU sui server, e che cosa sul client?
sul cellulare, ma sarebbe piu' appropriato dire sul browser, e' indifferente mobile o desktop. (sempre web eh, non stavo parlando di app native), gira solo html & javascript. Niente altro.
forse ha tratto in inganno quando ho scritto "sito mobile". Spiego meglio, quando un browser accedeva sul sito, veniva intercettata la richiesta, se era un dispositivo mobile, gli si dava in pasto un app in react, ottimizzata per l'uso in un browser di un cellulare, altrimenti andava sulla versione legacy.
@Aethiss ma non hai risposto alla domanda. cosa fa la app, di preciso, per consumare la CPU sul cellulare?
Perche' sinora stai descrivendo quello che IO ho cercato di dire, ovvero che qualcuno legge il tuo user-agent della chiamata http, e gli fornisce un contenuto statico. Va bene ma in che modo questo ti ha salvato CPU sui server? Nel senso che, cosa fanno i server, di preciso, per consumare CPU, che adesso non consumano piu' perche' hai il javascript sul client?
-
@Aethiss ma non hai risposto alla domanda. cosa fa la app, di preciso, per consumare la CPU sul cellulare?
Perche' sinora stai descrivendo quello che IO ho cercato di dire, ovvero che qualcuno legge il tuo user-agent della chiamata http, e gli fornisce un contenuto statico. Va bene ma in che modo questo ti ha salvato CPU sui server? Nel senso che, cosa fanno i server, di preciso, per consumare CPU, che adesso non consumano piu' perche' hai il javascript sul client?
@amigaunicorn sembra quasi che io sia qua a rispondere perche' voglio avere ragione. Se mi conoscessi, io amo essere nel torto. Vuol dire che e' il momento in cui imparo qualcosa.
Mi rendo conto che per rispondere con cura devo fare un wall of text.
Se mi dici, fallo. Lo faccio. -
@amigaunicorn sembra quasi che io sia qua a rispondere perche' voglio avere ragione. Se mi conoscessi, io amo essere nel torto. Vuol dire che e' il momento in cui imparo qualcosa.
Mi rendo conto che per rispondere con cura devo fare un wall of text.
Se mi dici, fallo. Lo faccio.senti, sono ore che mi sbrodoli addosso buzzwords. Adesso voglio capire cosa volevano dire. Perche' dall'inizio del thread io ti sto dicendo che alla fine non risparmi nessuna CPU nel backend scaricando dalla rete un javascript, e finalmente dopo qualche domanda apprendo che effettivamente la tua soluzione comprende di far scaricare il javascript dalla rete, soltanto uno diverso a seconda dell' header User-Agent.
Che e' quello che sto cercando di dire sin dall'inizio del thread. Credi davvero che scaricare una cosa da un filesystem faccia crescere la CPUoccpata? No , perche' su Linux il filesystem e' sotto cache, e quindi, alla fine legge da memoria e serve indietro, che e' di fatto una print.
E allora dov'e', di preciso, che usare questastrategia ti fa risparmiare CPU sui server, di preciso?
-
senti, sono ore che mi sbrodoli addosso buzzwords. Adesso voglio capire cosa volevano dire. Perche' dall'inizio del thread io ti sto dicendo che alla fine non risparmi nessuna CPU nel backend scaricando dalla rete un javascript, e finalmente dopo qualche domanda apprendo che effettivamente la tua soluzione comprende di far scaricare il javascript dalla rete, soltanto uno diverso a seconda dell' header User-Agent.
Che e' quello che sto cercando di dire sin dall'inizio del thread. Credi davvero che scaricare una cosa da un filesystem faccia crescere la CPUoccpata? No , perche' su Linux il filesystem e' sotto cache, e quindi, alla fine legge da memoria e serve indietro, che e' di fatto una print.
E allora dov'e', di preciso, che usare questastrategia ti fa risparmiare CPU sui server, di preciso?
@amigaunicorn okies, ci mettero' un po', per descrivere con cura la mia esperienza a riguardo (nel post successivo scrivo tutto nel dettaglio)... coming...
-
Per spiegare nel dettaglio cosa intendo nel consumare meno risorse lato server, utilizzo una (delle tante) esperienza lavorativa che ho avuto nella mia carriera.
Nell'anno del signore 2015, vengo assunto come programmatore senior, per una multinazionale che vendeva (per lo piu') indumenti online, fatturato di varie centinaia di milioni di sterline l'anno, con vari marchi, ognuno dei quali con il suo sito.
Scrivevamo un applicazione, che doveva essere sfruttata per gli utenti che si connettevano al sito web tramite cellulare.
Se si accedeva da un portatile, rispondeva il sito "legacy", di cui, al tempo, non era di mia competenza.Il vantaggio, era che se si andava in uno dei qualsiasi siti (erano 7 brand diversi) era sempre la stessa applicazione che rispondeva, e renderizzava i contenuti in base a quale richiesta (leggi url) veniva fatta. Applicazione isomorfica in React (https://en.wikipedia.org/wiki/Isomorphic_JavaScript)
Perche' un applicazione isomorfica ? Perche' ogni singolo prodotto (un jeans, una scarpa) doveva essere indicizzata. E cioe', un motore di ricerca doveva vedere l'html bello che pronto senza alcun javascript, di cui non tiene conto. (E' ancora cosi' ? penso di si).
Tagliando corto, sono diventato lead developer, e poco dopo Principal Lead developer. Cosa comportava ? Tanti cazzi, riportavano a me tutti team di programmatori (circa 50-60), il team di dev-ops etc. Ma soprattutto la responsabilita' di portare la versione "legacy" (chiamiamola per semplicita', versione Desktop) al pari di quella mobile.
L'infrastruttura:
-
Akamai era il servizio che usavamo per la cdn e qualche altra cosa che ora non ricordo.
-
Il servizio Node (App isomorfica), girava su macchine (EDIT: scrivo meglio) in aws ec2 (regole di scaling e tutto quello che serve).
-
Il Database era un servizio offerto da una grossa compagnia indiana, Cognisant (https://www.cognizant.com/us/en/industries/information-services-digital-solutions). In realta' fornivano il servizio completo, e cioe' tutta la parte rest per interfacciarsi con il loro database, fatto apposta per e-commerce (a detta loro).
-
Il servizio per i pagamenti, non ho memoria di come si chiamasse, era ovviamente anche esso esterno, e fuori dalla mia giurisdizione (come per la parte DB)
Quando si accedeva al sito, cosa doveva sputare indietro l'applicazione Node/React, tante cose.
Ad esempio il content della pagina iniziale, che era servito da un micro-servizio sul quale lavoravano i designer, creava un html, e ce lo dava in pasto. La lista dei prodotti piu' importanti, e gia' qua' c'e' un primo scoglio. La lista dei prodotti piu' importanti, NON e' uguale per tutti.
Esempio: io e tu accediamo nello stesso momento allo stesso sito. Ci sono cookie, soprattutto se era gia' stato loggato ed avevi/o gia' acquistato, sa la mia/tua eta', sa i miei/tuoi gusti, e deve darci come primi "vestiti" quelli che si pensa siano tra i nostri preferiti, ed altre cose simili, come ad esempio se ho qualcosa salvato nella lista dei preferiti, il sistema decide se fartelo vedere in sconto o no.
Tutto questo, nella applicazione Desktop, veniva fatto durante la richiesta, direttamente dal php. La quale comunicava con il database gestito dagli indiani, e ritornava i risultati al browser che aveva fatto accesso al sito. Lo stesso valeva per un qualsiasi Item (scarpa, sciarpa o quello che volete), se qualcuno ti mandava un link, tu potevi/dovevi accedere a quella specifica pagina, e non solo vedere quella bella sciarpa, ma anche cosa altro poteva piacerti di simile (e no, non era uguale per tutti. Sembra una cosa stupida, ma su milioni di accessi, queste cose in termini di resa finale di $$, fanno una bella differenza).
Quando ho avuto l'incarico di gestire anche la parte "Desktop", ho lavorato tanto con i dev-ops e gli esperti di Akamai per cercare di cachare il piu' possibile, ma aimhe', quello qua' sopra spiegato, era un grosso limite, e spesso si faceva piu' danno che altro.Comparando le 2 applicazioni ("mobile" e "desktop"), ho potuto vedere il carico sui server web della versione php e della versione React/Node.
Per capirci, e dare 2 numeri, fatto X il numero di persone che accedevano in un minuto, la macchina dove girava il servizio React/Node poteva reggere un numero X * 5 di utenti, rispetto alle macchine dove girava l'applicazione php (e mi tengo basso), prima di iniziare a scalare su un nuovo server.
Inoltre, quando un utente accedeva al sito "Desktop", ogni navigazione, aveva l'effetto sopra spiegato, ripeto: vedo scarpa, dammi tutte le scarpe che possono piacere a me relativa a quella (ed altro che non ricordo), e tutto questo veniva fatto via php, e cioe' lato server appunto.
L'applicazione React/Node, una volta servita la prima pagina, tutto il resto della navigazione, non parlava piu' con la macchina dove girava il server Node dell'app isomorfica, ma semplicemente diceva al servizio di cognisant (dammi questo ItemID, sono l'utenteID), e avevo lo stesso risultato.
Client -> Micro-servizio -> Client.Quando c'era un evento particolare, i numeri di accessi e di navigazione, si moltiplicavano a dismisura, ed ho visto con i miei occhi, cluster di server per l'applicazione php, nell'ordine di 100 a 1 rispetto a quella React/Node.
Era un buona architettura ? No, era una merda, ma purtroppo, nel mondo reale bisogna adattarsi a cose gia' esistenti, contratti di anni gia' definiti (mazzette??) etc etc.
Le nostre conoscenze erano scarse nel saper configurare una CDN come dio vuole ? Puo' Essere, ma caxx, abbiamo pagato della gente di Akamai, ore ed ore di meeting, dove spiegavamo la nostra infrastruttura, i nostri problemi etc etc.Comunque, dopo poco tempo, ho fatto fare dei cambiamenti (il lavoro maggiore alla fine era, non scherzo, css e design) ed abbiamo adattato la versione Node/React anche per essere correttamente visible su un browser da portatile/desktop.
Una sola app, serviva 7 brand, salvava centinaia di migliaia di sterline l'anno solo di costi per i server web.
Ovviamente il mio lavoro era anche quello di garantire tutti i processi della piramide di Test. Il corretto funzionamento/implementazione della CI , dal localHost, passando per develop, pre-prod, ed infine produzione.
Piccola Nota di Colore: Usciva la seconda stagione di Stranger Things. Mega evento al centro di Londra con quella caxxo di bambina protagonista, televisioni etc etc.
Era un giovedi', io dovevo andare ad un matrimonio fuori ferrara, mia moglie mi aspettava la sera all'aereporto di Bologna.
Dovevamo mandare in prod una serie di aggiornamenti (mandi in produzione, di venerdi'????), cosa poteva mai andare storto ?
Al sabato, mentre sto sorseggiando vinello da qualche parte in una villa intorno a ferrara, nel mio cellulare iniziano ad apparire tanti allarmi, e chiamate .... e.
Per farla breve, avevamo inserito un bug nei pagamenti visa, soldi persi "stimati", circa 2 milioni di sterline.Evviva gli sposi
-