Se connecter

Informatique

Création de sites web

Sujet : J'utilise encore du jQuery
VinkingBanni
Niveau 10
02 juin 2020 à 08:00:11

SSR compliquer ??? lol

boucif
Niveau 24
02 juin 2020 à 12:28:23

Pour faire du ssr avec angular ca nécessite juste l'ajout de package
https://angular.io/guide/universal

Le ssr est compliqué quand tu veux mixer plusieurs techno, perso j'ai laissé tombé sur les dernières version de .net core avec angular, c'est plus simple de directement utiliser angular/node.
Après attention avec le ssr de pas faire de ref à des scripts ne s’exécutant que dans le browser.

Marduweb
Niveau 18
02 juin 2020 à 16:11:56

Le 02 juin 2020 à 08:00:11 VinkingBanni a écrit :
SSR compliquer ??? lol

Ce genre de commentaire en plus d'être hautain ça apporte juste rien à la discussion, mais merci d'être passé hein

Le 02 juin 2020 à 12:28:23 boucif a écrit :
Pour faire du ssr avec angular ca nécessite juste l'ajout de package
https://angular.io/guide/universal

Le ssr est compliqué quand tu veux mixer plusieurs techno, perso j'ai laissé tombé sur les dernières version de .net core avec angular, c'est plus simple de directement utiliser angular/node.
Après attention avec le ssr de pas faire de ref à des scripts ne s’exécutant que dans le browser.

Bah voilà, tu vas avoir un truc qui tourne sur du nodejs, donc deux serveurs, un pour le front, un pour le back, tout communiquer exclusivement en API, c'est hyper compliqué si tu mets ça par rapport à un besoin simple, après ça dépend des besoins... Mais perso je crois que j'ai jamais vu un site web d'un concurrent faire de cette façon.
Et après si tu veux tout faire en node bonne chance, les ORM etc c'est pas encore mature je trouve, même s'il paraît que ça commence à être pas mal... Après je connais pas bien.
Mais mon post initial parlait pas des SPA de toute façon, où je remet pas en cause l'utilisation de frameworks modernes pour ça

Par exemple du symfony et du twig ça fait très souvent le taf, tes données en front sont déjà typées, t'as pas besoin de te faire des interfaces pour chaque appel d'api etc, faire un SPA pour ce genre de choses ça revient à faire presque deux fois le travail, il faut être plusieurs et avoir une bonne organisation pour que ça ai du sens de faire comme ça

VinkingBanni
Niveau 10
02 juin 2020 à 16:37:02

Le 02 juin 2020 à 12:28:23 boucif a écrit :
Pour faire du ssr avec angular ca nécessite juste l'ajout de package
https://angular.io/guide/universal

Le ssr est compliqué quand tu veux mixer plusieurs techno, perso j'ai laissé tombé sur les dernières version de .net core avec angular, c'est plus simple de directement utiliser angular/node.
Après attention avec le ssr de pas faire de ref à des scripts ne s’exécutant que dans le browser.

pas compliquer de tester !

boucif
Niveau 24
02 juin 2020 à 20:57:53

Le problème c’est des fois merdiques à debuguer et savoir quel endroit est passé au travers, pour le ssr avant j’utilisais asp net core avec les templates par défaut qui supporte le ssr mais des que tu veux mettre à jour la version d’angular les galères commencent, mais ça te permet davoir un seul site pour les 2.
Exemple :
https://be-technology.fr/

Et un autre site qui est en angular ssr node classique :
https://covid.ovh/

Perso pour ce second site l’api et le front sont sur le même serveur, 2 sites veut pas dire 2 serveurs.

Marduweb
Niveau 18
02 juin 2020 à 21:28:29

Le 02 juin 2020 à 20:57:53 boucif a écrit :
Le problème c’est des fois merdiques à debuguer et savoir quel endroit est passé au travers, pour le ssr avant j’utilisais asp net core avec les templates par défaut qui supporte le ssr mais des que tu veux mettre à jour la version d’angular les galères commencent, mais ça te permet davoir un seul site pour les 2.
Exemple :
https://be-technology.fr/

Et un autre site qui est en angular ssr node classique :
https://covid.ovh/

Perso pour ce second site l’api et le front sont sur le même serveur, 2 sites veut pas dire 2 serveurs.

covid.ovh, si j'y accède par la home tout fonctionne et est super rapide, mais si je vais sur une URL du genre https://covid.ovh/news (en mode SSR, donc sans cliquer sur le bouton via le menu mais en allant sur https://covid.ovh/news par exemple) la page ne charge pas et çe me fait un 504 Gateway Time-out pour info

ça tourne bien sinon c'est pas mal :oui:
mais pour moi pour ce genre de site y'a pas besoin d'angular. Après si c'est une stack que tu maitrise c'est sûr que tu vas partir sur de l'angular, moi je ferais ça en symfony et twig, et à la fin l'utilisateur il verra pas la différence

Perso pour ce second site l’api et le front sont sur le même serveur, 2 sites veut pas dire 2 serveurs.

tu as quand même 2 "instances" de nodejs qui tournent du coup ou pas ?
par exemple pour récupérer tes données de news, si elles étaient stockés dans une BDD SQL, comment tu les récupère ? tu as back qui te les donne sous forme d'api ? et ça peut être sur la même instance de nodejs ou pas ?
mais du coup le back est un peu géré par angular non ? j'ai du mal à comprendre c'est un peu magique là :hap: genre t'as pas d'ORM pour accéder à la base de données je suppose ? ou bien tu peux avoir ce que tu veux, et t'as genre une fonction dans angular qui dit "cette page est chargée dès que l'API des news a retourné sa réponse, tu peux la mettre en cache et envoyer le html pour le SSR" ?

dans be-technology si tu devais gérer les erreurs de formulaires type "adresse e-mail non valide" et afficher cette erreur sur le champs correspondant, comment tu ferais ? tu le ferais deux fois, une fois côté back et une fois côté front ? tu peux partager la logique des deux côtés ? ou genre tu renverrais le form avec les erreurs dedans (comme symfony) ? ou tu enverrais par exemple un objet en json qui est parsé pour afficher l'erreur au bon endroit par exemple ? si le mec trifouille son JS pour t'envoyer n'importe quoi il faut aussi faire la vérif côté serveur du coup ?

on dévie un peu du sujet initial :rouge: mais c'est ça m'intéresse :oui:

boucif
Niveau 24
03 juin 2020 à 10:24:36

En faite mon api se trouve à cette adresse :
https://api.covid.ovh/
C'est l'ancienne version du site dev en asp net core (donc du c#, je crois en plus il y a jquery de base XD), j'utilise un ORM pour le coup (mais au départ un micro "orm" ).
pour le bug sur la page news j'ai du mal config mon nginx, disons que j'ai voulu me mettre à docker et c'est un joyeux bordel, au début j'avais un seul site et donc je renvoyais directement le container docker sur le bon port et ça marchait, j'ai ajouté un autre site et les ennuis commence, j'ai du au finale installer nginx pour qu'il se charge de ca (j’aurai pu prendre l'image docker de nginx mais non merci).

Au finale j'ai 3 images docker: une avec mon angular ssr (qui contient mon site angular et node), une avec mon site asp net core, et une autre avec postgre (ma base de donnée), j'aurai pu faire un docker compose des 3 ça aurait été plus simple, pour connecter l'api à la base de donnée c'est un gros bordel quand il y a pas de lien entre les images.
Au finale docker m'a fait perdre plus de temps qu'en gagner ...
Et j'ai nginx d'installer pour les redirection et autre joyeuseté, les sites que je dev à titre perso me servent de laboratoire.

Pour be-technology, c'est un seul site hébergé en tant que service sur un autre serveur, ensuite apache fait la redirection (j'ai plusieurs site sur ce serveur dont 1 wp, 1 angular/node).
Pour le ssr avec Asp net core moi même je saisi pas tout le fonctionnement, j'ai cru comprendre qu'il héberge un service node qui se charge du prérendu.
Et pour la validation oui c'est des 2 côtés, je t'avoue par flemme des fois j'ai bien envie de la faire que côté serveur :rire:, si tu fais du net core avec le moteur de rendu razor (donc pas de spa) tu peux partager la validation je crois, après je t'avoue que je ne code plus trop comme ça.

Au finale j'ai 2 vps chez ovh et même avec le moins cher (3€), tu peux héberger un tas de truc.

Marduweb
Niveau 18
03 juin 2020 à 14:19:29

Ouais Docker je galère aussi j'ai lâché l'affaire, ça doit être bien quand on a l'expérience dessus et qu'on le connait sur le bout des doigts mais c'est pas mon cas :rire:

C'est vrai qu'en tout cas ça a l'air de bien tourner bien les VPS OVH à 3€ faudra que je test pour la science, d'habitude j'héberge mes sites avec des Digital Ocean ou des scaleway pour les plus petits (mais j'évite de plus en plus ce dernier j'ai eu 2/3 soucis)

En tout cas merci pour la réponse c'est cool :ok:

VinkingBanni
Niveau 10
03 juin 2020 à 17:59:19

Docker:
utilisé docker-compose

et pour l’hébergement sans mal : traefik

par controne arrete du faire du microsoft (ASC C#) fais juste PHP NODE celons ton besoins et mélange pas tous ta pas besoin d'un back en node si tu utilise ASP ou C#

juste d'un service NODE pour servir ton app front

boucif
Niveau 24
03 juin 2020 à 18:55:53

Je n'y connais rien à PHP et je t'avoue que j'ai pas envie d'en faire.

Pour Angular ssr c'est node derriere parce que c'est le fonctionnement par défaut je code rien dessus, bon pour le coup j'ai juste gérer la compression gzip sur express, mais en l'état le node c'est juste pour servir mon front.
Je préfère coder mes api en C#, surtout qu'actuellement c'est une des solution les plus performantes qui existe pour ça.

Je t'avoue j'ai pas creusé plus que ça pour docker, j'ai déjà eu assez de mal comme ça, il me semble que dans l'idéal je devrai générer l'image chez moi la uploader et déployer depuis cette image en ligne.
Pour docker compose je l'ai utilisé mais pas pour lier mes images, comment ça marche si je veux par exemple utiliser mon serveur sql avec plusieurs autres container ?

wouh_pinaise_
Niveau 6
03 juin 2020 à 20:54:33

Je t'avoue j'ai pas creusé plus que ça pour docker, j'ai déjà eu assez de mal comme ça, il me semble que dans l'idéal je devrai générer l'image chez moi la uploader et déployer depuis cette image en ligne.

Pour docker compose je l'ai utilisé mais pas pour lier mes images, comment ça marche si je veux par exemple utiliser mon serveur sql avec plusieurs autres container ?

Non dans l'idéal, c'est l'intégration continue (via gitlab, github,...) qui génère tes images quand tu pousses sur ton repository et qui dépose tes images sur un private registry (par exemple sur docker hub).
Quand tu fera un docker start (ou docker-compose) sur ton serveur, il ira chercher l'image sur le private registry si la version n'est pas connue sur le serveur sur lequel tu souhaites lancer le conteneur (il prendra l'image stockée localement si tu l'a déjà lancé).
Et le top c'est de gérer les conteneurs avec kubernetes + rancher, mais en général c'est à éviter pour de petits projets :hap:

Exemple d'un fichier docker-compose pour un petit poc que j'avais mis en place. C'est pas forcément les meilleurs pratiques (c'est même pas super propre :-) ), mais c'est pour donner une idée de la simplicité de gérer plusieurs services en passant par docker-compose.


version: '3.3'

networks:
  backend-network:
    driver: bridge

services:
  postgres:
    container_name: postgres_container
    image: postgres:12.1
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
      POSTGRES_DB: db
    networks:
      - backend-network
    volumes:
      - /var/lib/postgresql/data:/var/lib/postgresql/data

  backend:
    container_name: backend
    image: backend:0.0.1
    ports:
      - "10022:8080"
    depends_on:
      - postgres
    networks:
      - backend-network

  front:
    container_name: front
    image: front:0.0.1
    ports:
      - "10021:80"

J'ai donc 3 services (3 images) : un front, un backend et une base de données (la base est une image officielle postgresql).
Il y a normalement un reverse proxy, mais j'avais préféré l'installer plutôt qu'utiliser docker.

J'ai mis en place un network entre les mon backend et ma base de données --> la base de donnée ne sera disponible que pour le backend car je n'ai pas défini de mapping de port.

Par un simple 'docker-compose up', je vais lancer l'ensemble de mes services. Il est ensuite possible d'en arrêter un, d'en mettre à jour.
Il y a également plusieurs options possibles: créer des volumes pour stocker les logs et qu'ils soient accessible directement sur le serveur, créer plusieurs instances du même service pour du load balancing,...

C'est pas forcément évidemment au départ, mais j'ai quand même l'impression qu'une fois que l'infra est en place, ça fait gagner du temps.

VinkingBanni
Niveau 10
03 juin 2020 à 21:42:23

Le 03 juin 2020 à 18:55:53 boucif a écrit :
Je n'y connais rien à PHP et je t'avoue que j'ai pas envie d'en faire.

Pour Angular ssr c'est node derriere parce que c'est le fonctionnement par défaut je code rien dessus, bon pour le coup j'ai juste gérer la compression gzip sur express, mais en l'état le node c'est juste pour servir mon front.
Je préfère coder mes api en C#, surtout qu'actuellement c'est une des solution les plus performantes qui existe pour ça.

Je t'avoue j'ai pas creusé plus que ça pour docker, j'ai déjà eu assez de mal comme ça, il me semble que dans l'idéal je devrai générer l'image chez moi la uploader et déployer depuis cette image en ligne.
Pour docker compose je l'ai utilisé mais pas pour lier mes images, comment ça marche si je veux par exemple utiliser mon serveur sql avec plusieurs autres container ?

ASP == PHP
franchement c'est pas différent ....
Ah bon C# plus performant pour une api ....
maybe mais j'y crois pas ..

Oui c'est que je dis tu utilise express et pm2 ?

Voilà pourquoi VueJS est mieux XD

Oui Docker tu perds du temps pour apprendre mais une fois que tu maitrisse un minimum c'est tellement bon !

C'est pas forcément évidemment au départ, mais j'ai quand même l'impression qu'une fois que l'infra est en place, ça fait gagner du temps.

Oui surtout avec traeffik tu lance ton site en 5sec !

Marduweb
Niveau 18
03 juin 2020 à 21:44:37

En fait ce qui me dérange avec docker c'est que si j'ai bien compris, tu fais 1 docker-compose.yaml par projet.
Ça en théorie c'est bien, car un autre dev qui reprend ton projet il pourra juste faire un docker-compose up et tout marchera chez lui en local sans qu'il ai besoin de versions spécifiques etc

mais moi genre dans mon agence je dois souvent naviguer d'un projet à l'autre en local, faire un petit fix par-ci, un petit changement par là, etc donc c'est compliqué, je dois m'amuser à faire un docker-compose up pour chaque projet à chaque fois du coup et faire attention à ce que des ports entre pas en collision ? puis attendre que le docker se lance etc pour pouvoir faire ma modif ? et pour lancer des lignes de commandes directement (genre clear le cache dans symfony, habituellement je vais juste php bin/console cache:clear), là pour accéder à php faudra que je fasse la commande docker correspondante etc ?

Là actuellement j'ai un apache qui va regarder dans /var/www/ et genre si je vais sur mon-site.localhost bah automatiquement ça va regarder dans /var/www/mon-site, le dernier dossier est dynamiquement trouvé selon le nom de l'URL, et comme ça je peux jongler hyper facilement de projets.

Vous croyez que c'est envisageable ça avec docker ? J'ai l'impression que mon workflow est pas trop fait pour :(

D'ailleurs pareil en prod, j'ai des serveurs qui ont plusieurs dizaines de sites, ça me paraît lourd de faire tourner des dockers pour chaque sites en prod non ? et j'ai plusieurs serveurs, au total j'ai des centaines de sites qui tournent sur une dizaine de VM on va dire
même pour administrer les bases de données, j'ai un phpmyadmin (sécurisé par ip, mdp d'apache etc) global par serveur et de là je peux voir toutes les BDD de mon serveur, ça me paraît difficile de gérer ça avec docker non ?

je pense que c'est bien quand tu travaille sur 1 gros projets sur plusieurs années, moi en l'état c'est plusieurs petits projets et on est genre 3 devs donc on a tous le même environnement de base

On est peut-être old school dans notre approche après mais j'ai du mal à trouver un autre workflow plus efficace :(

Pour les kubernetes là j'y suis pas encore je pense du coup vu que je galère avec docker :rire:

VinkingBanni
Niveau 10
03 juin 2020 à 21:51:14

tu fais un docker-compose down avant ...

tu pourrais utilisé treaffik pour ça ... avec un host widcard *.dv en host

mais ça prends 2sec sur une bonne becanne de switché

D'ailleurs pareil en prod, j'ai des serveurs qui ont plusieurs dizaines de sites, ça me paraît lourd de faire tourner des dockers pour chaque sites en prod non ? et j'ai plusieurs serveurs, au total j'ai des centaines de sites qui tournent sur une dizaine de VM on va dire

non surtout pour des petits site, j'ai des exemples si tu veux
je l'ai meme fais sur un PI

oui c'est tres old-school

bas enfaîte tu as pas besoin de phpmyadmin en prod ... si tu a vraiment besoin de ce genre d'outils tu deploie un adminer sur ton docker .....

ça a tellement d'avantage !
Comme ne pas pourrir ta machine avec Apache (j'utilise Ubuntu pour dev) et mac

Marduweb
Niveau 18
03 juin 2020 à 22:11:45

tu fais un docker-compose down avant ...

ouais c'est ce que je faisais du coup quand je testais de dev avec docker, mais c'était chiant :(
après d'un autre côté j'ai peur qu'à terme ça devienne chiant quoi qu'il en soit, vu que j'aurais des sites en php8, d'autres en php7 etc
en plus un autre truc chiant c'est qu'à chaque fois je retournais dans localhost:8080 par exemple, et du coup il faut retaper tous les mdps etc quand tu dois corriger un truc dans l'admin, je trouvais pas ça confortable même si c'est minime

bas enfaîte tu as pas besoin de phpmyadmin en prod ... si tu a vraiment besoin de ce genre d'outils tu deploie un adminer sur ton docker .....

ça arrive souvent que clients demandent souvent des exports excel de leurs données, et quand ils demandent ça bah je vais dans phpmyadmin, je fais ma requête et j'exporte vu que phpmyadmin propose cette fonctionnalité direct c'est super pratique, j'ai essayé adminer mais je trouve qu'il est moins confortable, y'a moins de trucs, genre dans phpmyadmin j'ai une auto-completion pour faire des requêtes SQL facilement etc
après je sais que c'est pas reconnu comme étant des bonnes pratiques mais je vois pas d'alternatives en fait :(

non surtout pour des petits site, j'ai des exemples si tu veux

mais du coup si tu as plusieurs eptits sites, tu fais plusieurs docker compose pour ces sites ? si je veux un phpmyadmin / adminer je dois le rajouter pour chaque site, et y accéder via une URL différente pour chaque site ? ou y'a un truc qui permet de gérer ça ?

Comme ne pas pourrir ta machine avec Apache (j'utilise Ubuntu pour dev) et mac

mais au final tu va la "pourrir" avec un docker qui lui va faire tourner des apaches ça revient au même non ?

après à l'époque où je testais docker j'avais des lenteurs quand même sur le système de partage de fichier je trouve, parfois symfony détectait pas certains changements et je devais rafraichir le cache à la main etc
après j'étais sur windows et c'était une horreur les performances :rire: mais depuis je dev direct de linux mint et il paraît que les perfs c'est incomparable, c'est beaucoup mieux, mais un collègue avait testé docker et il avait toujours 2/3 problèmes de modifications de fichiers pas détectés du coup :(

Faudrait que je me repenche sérieusement sur tout ça quand j'aurais le temps

boucif
Niveau 24
04 juin 2020 à 09:00:23

Pour les perfs d'asp :
https://www.developpez.com/actu/245430/ASP-NET-Core-est-le-3e-serveur-Web-le-plus-rapide-repondant-a-7-millions-de-requetes-HTTP-s-selon-un-test-de-TechEmpower/

Euh non asp est complètement différent de php à part si tu me parles d'asp classic premier du nom, et encore je ne suis pas sur qu'il soit similaire, asp.net core c'est le framework web de microsoft qui utilise le moteur de rendu razor pour les pages et c# comme langage de prog.

Et non je n'utilise pas pm2 je ne sais pas à quoi ça sert et oui j'utilise express pour l'Angular SSR mais c'est le truc de base quand tu suis le tuto, je vois pas en quoi vue.js est mieux pour avoir fait les 2 je préfères angular après les goûts et les couleurs.

Donc pour générer mon image il me faut un service d'intégration continue soit je me le conf moi même truc assez chiant je pense ou je paye pour un service, surtout que j'héberge chez Microsoft et le moindre truc chez eux ça coûte une fortune :rire:

J'ai utilisé docker-compose pour ma dbb :
version: '3' services: database: image: "postgres" # use latest official postgres version container_name: postgres_bdd ports: - "5432:5432" environment: - POSTGRES_USER=** - POSTGRES_PASSWORD=*** - POSTGRES_DB=*** volumes: - /home/database/:/var/lib/postgresql/data/ # persist data even if container shuts down restart: unless-stopped

Mais la question que je me pose comment par exemple partagé cette database entre plusieurs container, si j'ai 3 sites différents qui n'ont aucun lien entre eux mais qui utilise tous postgres, je ne veux pas forcément 1 db par site mais partagé celle déjà instancié, concrètement comment je fais.

Seconde question quand tu boss avec un docker-compose en dev tu fais comment ? tu as par exemple tout tes projet ref dans le même répertoire et tu les montes ?

Je pense il faudrait créer un topic docker, perso ça m'intéressait mais il y a quelques problèmes d'intégration avec Microsoft faisant qu'au moment du déploiement ça à merder, un comble quand tu utilises docker.

VinkingBanni
Niveau 10
04 juin 2020 à 09:30:27

déjà t'es pro microsoft c'est pas la solution bonne solution.

Ton test est très objectif.....
Je pourrais trouver le même sur php tu sais.
Surtout que la le protocole de test est pas décris ...

donc tu fais juste tourner des app nondejs sans pm2 donc tu en-capusle sur ton serveur après si tu utilise windows server ....

ba oui tu fais une instance par site. Regroupé c'est pas top pour X raisons.

L'integration continue tu dois avec ou sans docker ...

mais du coup si tu as plusieurs eptits sites, tu fais plusieurs docker compose pour ces sites ? si je veux un phpmyadmin / adminer je dois le rajouter pour chaque site, et y accéder via une URL différente pour chaque site ? ou y'a un truc qui permet de gérer ça ?

ba oui tu a une instance par site genre tu fais :
monsite.com/adminerXXX.php

non docker n'instancie par hors conteneur, sur mon hôte je n'ais pas php ni apache

boucif
Niveau 24
04 juin 2020 à 09:37:26

Bein je tourne sur linux, wake up asp.net core est ouvert ca tourne sur nux, mac, windows.
Surtout qu'un windows server à cause de la licence ca double le cout de ton vps.
Chez moi je boss sur Windows par contre mais tous mes vps sont sur linux, un debian l'autre ubuntu.

Mon app angular est dockerize aussi et j'utilise nginx en reverse proxy.

Comment on dev avec différents projets qui sont tous dans le même docker compose ?

VinkingBanni
Niveau 10
04 juin 2020 à 12:28:46

si tu dev different projet ils ne doivent pas être sur le même compose
si c'est une question de reverse proxy avec Nginx tu utilise pas la bonne méthode .
Pour ça tu as supper outils treafik, qui lui va gérer ça et pour deployer un site ça prends 5sec .

boucif
Niveau 24
04 juin 2020 à 13:36:36

Le 04 juin 2020 à 12:28:46 VinkingBanni a écrit :
si tu dev different projet ils ne doivent pas être sur le même compose
si c'est une question de reverse proxy avec Nginx tu utilise pas la bonne méthode .
Pour ça tu as supper outils treafik, qui lui va gérer ça et pour deployer un site ça prends 5sec .

Je viens de voir ce qu'est Traeffik, c'est lui qui se charge du reverse proxy en quelque sorte

Ce que je veux dire si dans mon cas j'ai un front, une api et une base de donnée comment tu dev sur ca avec docker, tu les mets dans le même répertoire tes projets ?

Sujet : J'utilise encore du jQuery
   Retour haut de page
Consulter la version web de cette page