Déjà ne pas être trop orthodoxe, il vaux mieux une URI qui est logique dans votre contexte que de vouloir absolument coller à une norme et finir avec un truc abscons.
Ceci dit, en REST, et surtout dans le domaine d'un CRUD, tu ne mettra pas les actions sur l'URI, mais via le verbe (aussi connu sous le nom "HTTP request methods") par exemple, si je veux créer une voiture je ferai
La récupérerCode:POST /api/voiture/1
La mettre à jourCode:GET /api/voiture/1
La supprimerCode:PUT /api/voiture/1
L'URI défini uniquement la ressource, les actions via les verbes.Code:DELETE /api/voiture/1
Mais cette méthode a ses limites, par exemple quand on veux appliquer des actions qui vont plus loin que les verbes disponibles (en général, tout ce qui est lié à ton domaine). Dans ce cas là tu essaye de combiner ton set d'URI de manière élégante avec des actions dans l'URI et tu y accède en POST.
Merci pour la réponse
Du coup on s'est aussi dit que le but c'était surtout d'avoir une norme claire sur laquelle on est à l'aise pour travailler, quitte à plier un peu le pattern.
En essayant de traduire certains endpoints en pur REST pour voir si ça nous apporterait quelque chose, on a pas mal d'actions qu'on a eu du mal à traduire en verbes HTTP + Body / Query params.
A plus forte raison sans changer une bonne partie du code / demander aux équipes front pas mal de changements aussi.
Tu veux dire quoi par "tout ce qui est lié à ton domaine" ? (C'est surtout la notion de domaine sur laquelle j'ai un doute ici).
Je te conseille de jeter un coup d'oeil à la norme http quand à l'utilisation des verbes (protip, il y en a plein).
Deuxièmement, regarde le niveau de maturité de ton api https://martinfowler.com/articles/ri...rityModel.html ça peut t'aider à y voir plus clair
Ton sujet / ton domaine d'application, par exemple dans comme on le défini dans le DDD.
Salut !
Je viens quémander de l'aide sur Docker, car je n'y connais rien et la documentation/tutos que je trouve ne m'aide pas des masse. Je sais, j'ai 10 ans de retard.
J'ai un gros projet node/js, réparti sur de nombreux repo git, qui utilise 3-4 bases de données différentes, tout ça.
Comment commencer la dockerisation d'un tel projet ? Est-ce qu'il faut une image pour chaque "partie" du projet : une pour la BDD relationnelle, une autre pour cassandra, une pour chaque app du projet, etc ? Est-ce qu'au contraire c'est possible de tout faire tourner dans le même container ?
Si il faut effectivement lancer une dizaine de containers, comment orchestrer tout ça ?
Comment gérez-vous vos Dockerfile rapport à vos repo git ? Je prefererais avoir un repo qui gère Docker et qui pull tous les repos de code pour contruire l'infra locale, mais j'ai aussi vu pas mal de gens avoir leur Dockerfile directement dans le code source de chaque projet ? Il faut que j'ai une même instance de chaque base de données partagées entre chaque app, donc ça me semble compliqué d'avoir un Dockerfile par app.
Merci d'avance
Alors si tu veux faire un trucs relativement simple :
- un container docker par "service" (chaque app ou bdd)
- chaque "service" utilise une image custom définie par un dockerfile (situé dans le repo associé au service)
- le lien entre les containers (qui communique avec qui, qui est lancé en premier, etc) se fera avec un fichier docker-compose : https://docs.docker.com/compose/
Ça va te permettre de faire tourner un truc fonctionnel en local et de découvrir le fonctionnement de base de Docker.
Après, quand tu voudras aller plus loin, tu pourras te pencher sur les questions de déploiement/orchestration avec Kubernetes.
C'est la faute à Arteis
Ou pas pour Kubernetes : https://www.jeremybrown.tech/8-kuber...-optimisation/
Je pense que si tu cite ce post, il faut églement parler de celui-ci que l'auteur à publié quelques jours après
Merci !
J'ai réussi à avoir un mariadb qui tourne en local avec un script qui initialise la base via docker-compose. Ça tourne nickel, c'est en fait plus simple que ce que j'imaginais à la base. Plus qu'une dizaine de services à configurer .
Pour le déploiement en prod j'ai déjà pas mal de trucs prêts, même si j'aimerais en savoir plus sur Kubernetes à terme. Et surtout son équivalence AWS.
Oui c'est extrêmement simple docker, j'ai mis aussi trop de temps à m'y mettre.
Fournir un docker-compose sur un projet open-source par exemple, c'est quasi 0 support à faire. Ton stagiaire qui veux tester un truc ? Un fichier et une ligne de commande, c'est bon. Jongler entre les environnements de tests en développement sans pourrir ta machine ? Pareil.
Le problème c'est que maintenant que tu y a goûté tu ne pourra plus t'en passer.
Pas vraiment, l'overhead de docker est vraiment très contenu.
Bah ça dépend clairement combien de container tu dois faire tourner et ce qu'ils contiennent.
Je viens de prendre un job et on m'a filé un laptop où les 32gb de ram ne sont pas de trop.
Au quotidien je fais tourner 16 containers et c'est seulement pour faire tourner les services qui sont nécessaires pour faire fonctionner ce sur quoi je bosse.
C'est pas Docker le soucis alors, mais les services que tu host. Une BDD qui te prends 8Go de RAM en direct ne va pas prendre magiquement moins via Docker.
Ok car tu t'en rends pas compte mais de la manière dont tu a tourné ta phrase, ça pourrai aussi faire référence à la mauvaise réputation de Docker héritée des premières versions où le tooling était pas tout à fait mature, et où la conso RAM/CPU pouvais devenir folle ; dans la tête de beaucoup de sysadmin/devs, Docker = perte de ressources, alors que ce n'est plus du tout le cas depuis plusieurs années.
Même docker-compose qui était déconseillé en prod, ne l'est désormais plus et tourne un peu partout sans soucis.
J'aurais une autre question liée à l'env de dev, sur les mails.
A l'heure actuelle j'utilise un serveur smtp payant en dev, mais j'aimerais que les credentials ne soient pas partagés avec la team.
J'ai vu plusieurs possibilités :
- créer des credentials SMTP pour chaque membre de la team, mais c'est chiant à setup, et ça n'empêche pas un leak
- utiliser un serveur/mailcatcher local, qui envoie le mail en local et le capture directement dans une petite interface web
- bypasser les mails, au moins pour l'auth via un truc qui check qu'on est bien en env de dev. Ce serait le plus simple mais ça ne résoudra pas comment tester les autres mails transactionnels.
Comment faites-vous ?
Ayant hérité d'une infra utilisant GKE et 36 autres services managés GCP, le tout deploy avec Terraform, tout ça pour 1 backend avec 4 services et une DB ... Je peux que valider.
C'est bien tant que t'as au moins une personne dispo tout le temps qui sait comment gérer ça, histoire que le moindre déploiement / modif soit pas une plaie. Sinon ça peut vite coûter cher.
(Ceci étant dit même si Terraform c'est un peu âpre quand on connait pas, pour avoir vécu l'opposé, l'Infra as code c'est quand même top)
Ah et les Mbp pre m1 ont tendances à prendre leur envol quand ont lance un peu trop de containers en local (même si ils font pas grand chose d'ailleurs). L'avantage c'est que y a un indice sonore assez clair quand il faut prendre une pause
Bon après avoir un peu bataillé, j'ai les 4 bdd qui tournent. Maintenant j'essaie de faire tourner mon app, et je paie le prix d'avoir été le seul dev pendant ces dernières années... packages npm installés globalement, clefs non partageables en env de dev (smtp, recaptcha, paiement), (pas les clefs de prod hein) etc etc Bref pas de quoi être fier, mais mieux vaut tard que jamais...
Ca y est, toute l'app tourne Effectivement je suis un homme heureux. 11 images, il en manque quelques unes mais qui ne sont pas importantes pour l'instant.
J'ai pu installer la stack sur mon laptop du coup, à moi le développement au bord de la piscine
Par contre mieux vaut une bonne connexion, l'install de toutes les images sur du wifi à 400ko/s a été long.
Question con, vu que je ne suis vraiment pas expert en dev web :
J'ai une variable globale en Typescript. Je l'alimente dans une méthode, mais quand j'essaie d'y accéder via une autre méthode, ça ne marche pas dans le script js. Si je passe la valeur en paramètre de la méthode, ça marche.
Quand je regarde le code généré, une méthode est transformée en fonction, du coup, ça me parait logique qu'elle doit être en paramètre. Mais y'a pas moyen d'utiliser des variables globales pour ce genre de choses en TS ?
Qu'entends tu par variable globale ? Comment déclares-tu ta variable et dans quelle scope ?
Tu peux faire des variables globales simplement en les declarant avec const ou let dans le scope principal. Avec var ou sans declarateur tu peux faire des choses étranges aussi, que je ne recommanderais pas.
Parmi les canards qui font du Symfony, il y en a qui en ont déployé sur du Platform.sh ?
Techniquement, sur le papier ça a juste l'air... idéal. Par contre côté tarif c'est très opaque.