Salut à tous,
Je suis en train de mettre en œuvre un nouveau projet simple basé sur les microservices comme exemple de guide étape par étape pour ceux qui ont eu du mal avec une architecture de microservices et qui sont toujours à la recherche d'une «autre» bonne référence. De plus, j'apprécierais vraiment la réflexion à travers les commentaires et les propositions pour faire de ce projet un morceau de travail de haute qualité.
Il y a des tonnes d'articles et d'exemples de code source. Mais, malheureusement, je n'ai trouvé aucune référence avec de simples instructions étape par étape, sans plonger profondément dans Docker, Event Store, une multitude de configurations, des trucs de déploiement cloud, etc. J'ai cloné plusieurs projets et essayé de commencer à jouer avec eux, mais vous savez, seul Dieu sait comment les démarrer, quelles dépendances manquent et pourquoi tous ces scripts échouent avec des milliers d'ERREURS.
Par exemple,
ce projet eShop de Microsoft contient tout ce dont nous avons besoin, mais ce n'est pas si simple de comprendre ce qui se passe là-bas, les chaînes de connexion à la base de données SQL, les scripts Docker échouent, aucun mode d'emploi et je ne suis pas sûr qu'il soit super -une architecture simple dont vous avez besoin pour commencer.

Ces gars-là de Pologne essaient de faire quelque chose de précieux et de simple, veuillez le
vérifier .
Donc, ici, je vais essayer d'implémenter un tel tutoriel pour être aussi simple que possible pour commencer avec les bases et écrire du code de base à utiliser ensuite dans vos projets.
Nous ne parlerons pas de «pourquoi / quand devrions-nous utiliser des microservices?», Il y a tellement d'articles à ce sujet. Par exemple, ce type a fait de
bonnes recherches et a résumé les microservices .
Couvrira les sujets suivants et essayera de rester simple:
- Pré-requis et configuration de l'environnement
- Choisir un nom pour un projet + les objectifs que nous voulons atteindre
- Architecture globale
- Début de l'implémentation (.NET Core)
- Configuration et test de la base de données et du cache
- Configuration des outils et utilitaires
- Définir un scénario de cas d'utilisation super basique + son implémentation
- Déploiement quelque part
Utilisera .NET Core 2.1, VS2017 sous Windows 10. Les tiers suivants doivent être installés et exécutés sur votre
ordinateur :
Redis pour Windows ,
MongoDB ,
Seq ,
RabbitMQ . Exécute toutes les choses avec ses paramètres par défaut. J'ai trouvé ces outils rapides et faciles à installer et à travailler dès la sortie de la boîte.
Client de bureau pour Redis (
https://redisdesktop.com/ ):

Client de bureau pour MongoDB (
https://nosqlbooster.com/ ):

2. L'objectif du projet est de créer un backend pour l'acquisition de données à partir de milliers d'appareils mobiles / portables. Le type de données est le capteur: mouvement 9 axes, géo-localisation, température, humidité, etc. Voudra également traiter et analyser toutes ces données pour les afficher sur une belle interface utilisateur Web sous forme de statistiques, de graphiques, de suivi, etc. Le nom d'un projet a été choisi pendant que j'écrivais ce paragraphe - «Sensor Fusion Backend». Les deux premiers microservices auxquels je peux penser sont DataProcessorService et DataAnalyticsService.
3. Commençons à penser à l'architecture et à une infrastructure minimale au moins pour les débutants. Connectivité: notre projet traite du type de données IoT / capteurs, donc, avec cette chose à l'esprit, j'utiliserais RabbitMQ Message Broker pour la communication client-serveur. Voici deux explications
courtes et
simples . Base de données: utilisera la
combinaison MongoDB + Redis . MongoDB comme système de stockage principal et Redis comme cache. Journalisation: bibliothèque d'enregistreurs Serilog + Seq comme outil de visualisation.
Seq est une application web hébergée sur votre infrastructure:

Pour simplifier l'API, j'utiliserai Swagger:

Ainsi, la première partie concerne davantage les outils que nous utiliserons pour démarrer la mise en œuvre. Va voir le code à la partie 2 et commencer à jouer avec l'infrastructure.