J'ai appris une petite leçon (à la dure). J'ai créé une application de calcul du nombre qui fonctionne sur les services cloud Ubuntu AWS EC2 (utilise des GPU puissants), et je voulais créer une interface pour elle juste pour regarder ses progrès en temps réel. En raison du fait qu'il avait besoin de données en temps réel, il était évident que j'avais besoin de websockets pour pousser les mises à jour.
Cela a commencé par une preuve de concept et a très bien fonctionné. Mais ensuite, lorsque nous voulions le rendre accessible au public, nous devions ajouter une session utilisateur, nous avions donc besoin de fonctionnalités de connexion. Et peu importe comment vous le regardez, le websocket doit savoir avec quel utilisateur il traite, nous avons donc pris le raccourci d'utilisation des websockets pour authentifier les utilisateurs . Cela semblait évident et c'était pratique.
Nous avons en fait dû passer un peu de temps au calme pour fiabiliser les connexions. Nous avons commencé avec des didacticiels Websocket bon marché, mais nous avons découvert que notre implémentation ne pouvait pas se reconnecter automatiquement lorsque la connexion était interrompue. Tout cela s'est amélioré lorsque nous sommes passés à socket-io. Socket-io est un must!
Cela dit, pour être honnête, je pense que nous avons manqué certaines fonctionnalités de socket-io. Socket-io a beaucoup plus à offrir, et je suis sûr que si vous en tenez compte dans votre conception initiale, vous pouvez en tirer davantage. En revanche, nous venons de remplacer les anciens websockets par la fonctionnalité websocket de socket-io, et c'est tout. (pas de salles, pas de canaux, ...) Une refonte aurait pu rendre tout plus puissant. Mais nous n'avons pas eu le temps pour ça. C'est quelque chose à retenir pour notre prochain projet.
Ensuite, nous avons commencé à stocker de plus en plus de données (historique des utilisateurs, factures, transactions, ...). Nous avons tout stocké dans une base de données AWS dynamodb, et ENCORE, nous avons utilisé socket-io pour communiquer les opérations CRUD du front-end au backend. Je pense que nous avons pris un mauvais virage. C'était une erreur.
- Parce que peu de temps après, nous avons découvert que les services cloud d'Amazon (AWS) offrent d'excellents outils d'équilibrage de charge et de mise à l'échelle pour les applications RESTful .
- On a maintenant l'impression qu'il faut écrire beaucoup de code pour effectuer les handshakes des opérations CRUD.
- Récemment, nous avons implémenté l'intégration Paypal. Nous avons réussi à le faire fonctionner. Mais encore une fois, tous les tutoriels le font avec des API RESTful . Nous avons dû réécrire / repenser leurs exemples pour les implémenter avec des websockets. Nous l'avons fait fonctionner assez rapidement. Mais c'est comme si nous allions à contre-courant.
Cela dit, nous allons vivre la semaine prochaine. Nous sommes arrivés à temps, tout fonctionne. Et c'est rapide, mais va-t-il évoluer?