De plus en plus d’entreprises SaaS prennent leur envol aujourd’hui. Et c’est génial. L’activité SaaS est une industrie en très forte croissance qui attire de plus en plus de personnes et d’entreprises.

Ces organisations sont de plus en plus d’applications flottantes dans le cloud. La mise à l’échelle dans le nuage présente également des avantages et des risques essentiels. À partir de cet article de blog, nous allons vous montrer comment créer une architecture SaaS basée sur le cloud, qui traite des problèmes d’évolutivité et de ce que cela signifie pour votre pile logicielle.

Tout dans le Cloud.

Lors de la création d’une application SaaS (globale), il est très probable que vous la construisiez dans le cloud.

Le cloud présente de nombreux avantages – pensez à l’évolutivité – par opposition aux environnements de serveurs locaux.

Par conséquent, cet article, et ceux qui suivront, se concentrent sur les logiciels conçus et développés dans le cloud.

Comment commencer?

Quel langage de programmation, quelle base de données, quels outils logiciels choisir? Il y a beaucoup de questions auxquelles il faut répondre.

Dans cet article, vous pouvez trouver notre choix d’outils préférés pour les domaines suivants:

  • langage de programmation
  • base de données
  • système de file d’attente
  • configuration de l’hébergement et du stockage

Quel langage de programmation?

Construire un produit pour le cloud, c’est construire un produit avec des langages de programmation modernes.

Outre les capacités et compétences personnelles, le choix de votre langage de programmation sera influencé par les possibilités de chaque langue. Il existe différents langages de programmation (modernes), ce qui rend difficile de choisir le bon.

Jetez un coup d’œil sur les plus en vue, jouez avec ceux-ci et tentez de les expérimenter autant que possible.

Utilisation de Python.

Python est un langage de programmation largement utilisé, conçu pour mettre l’accent sur la lisibilité du code.

Python peut faire beaucoup de choses. Quelle que soit l’application Web que vous souhaitiez créer, il existe probablement un cadre pour cela en Python.

Chez Zegus Academy, nous avions une certaine expérience de Python avant de l’utiliser pour notre application Web. Comme nous l’avons déjà mentionné, la flexibilité offerte pour divers cas d’utilisation était une autre raison pour laquelle nous passons à Python.

Python est génial et nos développeurs l’adorent. Typage dynamique, méta programmation, prototypage rapide. Tout est possible avec Python.

La base de données parfaite

Donc, l’une des premières choses sur votre liste inclura l’installation d’une base de données. Nous vous recommandons d’utiliser une base de données orientée document.

Les bases de documents sont très différentes du concept traditionnel de bases de données relationnelles.

Pourquoi choisir une base de données orientée document?

Les bases de documents sont extraites des données elles-mêmes. Par conséquent, chaque instance de données peut être différente d’une autre. Cela le rend plus flexible dans la gestion des modifications et des valeurs optionnelles, se transforme plus facilement en objets programme et réduit souvent la taille de la base de données.

En résumé, le concept DOB est conçu pour offrir une expérience plus riche en techniques de programmation modernes.

MongoDB – la base de données pour votre application web?

Chez Zegus Academy, nous avons terminé en utilisant MongoDB comme base de données antérieure. Pourquoi avons-nous choisi MongoDB?

MongoDB étant une base de données orientée document qui offre des performances élevées, une haute disponibilité et une évolutivité aisée. Oui.

Outre les performances (qui veut une base de données lente?), L’évolutivité est probablement le facteur le plus important pour nous en tant qu’entreprise SaaS globale.

De nombreux fondateurs de SaaS souhaitent développer leur activité. Outre la mise à l’échelle de votre produit d’un point de vue commercial, vous ne devez pas oublier les problèmes techniques.

Mettre à l’échelle votre technologie avec MongoDB est assez facile (ok, au moins plus facile comparé à d’autres bases de données). Avec le sharding automatique, vous pouvez répartir les données sur différentes machines.

La fragmentation est fondamentalement une méthode pour stocker vos données sur plusieurs machines. Et MongoDB utilise le sharding pour prendre en charge le déploiement avec de grands ensembles de données.

En savoir plus sur le concept de sharding avec MongoDB: http://docs.mongodb.org/manual/core/sharding-introduction/

Alors, comment avons-nous configuré MongoDB?

Chez Zegus Academy, nous utilisons Amazon Web Services et avons donc mis en place des instances EC2 en France, et au Québec.

Prise en main de MongoDB, nous avons installé une seule instance MongoDB sur notre instance AWS EC2 en France.

Avec le nombre croissant de clients américains et asiatiques, nous avons constaté des problèmes de performances dans ces régions du monde. Par conséquent, nous avons installé une architecture maître / esclave avec le maître toujours en France et ajouté deux instances d’esclaves MongoDB sur Le brésil et en France.

Ces deux bases de données esclaves utilisent la préférence de lecture pour éviter les requêtes du monde entier, afin de réduire au maximum le délai réseau nécessaire aux opérations de lecture fréquentes.

Système de file d’attente

Parlons maintenant d’un système de file d’attente.

Un système de mise en file d’attente de messages est un protocole de communication asynchrone permettant à l’expéditeur et au destinataire d’un message de ne pas interagir en même temps. Également connue sous le nom de technologie Message Queuing (MSMQ), elle permet aux applications Web de s’exécuter à différents moments et de communiquer de manière asynchrone avec diverses intégrations / API / partenaires tiers.

 Un message (par exemple une requête demandant à un service tiers via une API) est placé dans la file d’attente. Il est stocké là-bas jusqu’à ce que le destinataire le récupère.

Une file d’attente de messages a des limites concernant la taille et la quantité de données transmises dans la file d’attente. L’avantage des systèmes de file d’attente modernes est qu’ils peuvent être mis à l’échelle facilement.

RabbitMQ

Encore une fois, je voudrais vous donner quelques informations sur le système de file d’attente que nous utilisons. RabbitMQ est un excellent système de mise en file d’attente open source fonctionnant sur tous les principaux systèmes d’exploitation.

Nous exécutons notre application Web sur AWS EC2, où RabbitMQ peut être exécuté, installé et exécuté de manière extrêmement fluide.

Assurez-vous de consulter ce guide sur l’exécution de RabbitMQ sur EC2.

Comment avons-nous installé RabbitMQ?

Python avec la bibliothèque de gestion de tâches de céleri open source est la solution idéale pour tirer le meilleur parti de RabbitMQ. Il est extrêmement important d’avoir à ce stade un logiciel robuste et éprouvé, car il constitue l’ossature de notre infrastructure.

En fait, nous utilisons un seul serveur RabbitMQ, avec plusieurs points finaux qui alimentent la file d’attente avec des tâches (tâches périodiques ainsi que des tâches induites par les actions de l’utilisateur), ainsi que des points finaux qui traitent ces tâches (produisant par exemple de superbes captures d’écran).

La configuration optimale inclurait un deuxième serveur RabbitMQ pour offrir des mécanismes de réplication et de basculement (en les cachant derrière un équilibreur de charge).

AWS et EC2

En créant une application Web évolutive, vous finirez probablement par utiliser Amazon Web Services tôt ou tard. Je suppose que c’est plus tôt

AWS vous permet d’héberger et d’exécuter vos applications Web, ainsi que d’effectuer des travaux par lots très performants. Avec Elastic Compute Cloud (EC2), AWS fournit des serveurs virtuels évolutifs pour toutes les entreprises.

Pour un premier cours intensif AWS, je vous recommande de consulter cette présentation en diaporama:

Pourquoi EC2?

Amazon EC2 est un outil essentiel pour notre système et lui fournit une capacité de calcul redimensionnable. Nous avons essentiellement loué des serveurs virtuels sur lesquels notre application Web est exécutée.

La grande chose ici est que ces serveurs EC2 sont répartis dans le monde entier. En fonction de votre besoin d’échelle et des marchés géographiques à cibler en premier, vous pouvez choisir entre différents emplacements de votre EC2.

Nous disposons actuellement de trois serveurs EC2 situés aux États-Unis, en Irlande et à Singapour. Nous continuerons d’ajouter de nouveaux sites (en particulier aux États-Unis et en Europe), car la demande de notre produit ne cesse d’augmenter. Avec l’EC2 installé, il est très facile d’ajouter de nouveaux serveurs et ressources.

Stockage Web S3

Obtenir de plus en plus d’utilisateurs de votre produit vous incitera facilement à vous interroger sur votre stockage Web. Avec le service de stockage Amazon S3, nous avons installé un stockage d’objets extrêmement évolutif et hautement évolutif.

Amazon Simple Storage Service (S3) est facile à utiliser, à stocker et à récupérer toute quantité de données. Vous vous demandez peut-être si Amazon S3 ne peut être utilisé qu’avec d’autres services AWS? La bonne réponse est: non. Il peut également être utilisé seul ou avec d’autres référentiels et passerelles de stockage tiers. Et bien sûr, cela fonctionne très bien avec EC2.

En plus de stocker vos données de votre application Web avec S3, cela pourrait être très utile pour les sauvegardes, les archives ou les analyses de données volumineuses.

CDN et la grande image nuageuse

Un réseau de diffusion de contenu est essentiellement un système de serveurs distribués qui vous permet de fournir du contenu à vos utilisateurs d’applications avec des performances et une disponibilité élevées.

Supposons que vous avez 3 EC2 installés. Un aux États-Unis, un en Europe et un à Singapour. Si une personne de New York visite votre application, le CDN vous permet de fournir du contenu à l’utilisateur via l’EC2 situé aux États-Unis.

Vous pourriez donc vous demander comment relier les points. Vous trouverez ci-dessous un aperçu de la manière dont nous avons configuré notre application Web , ainsi que le rôle de EC2, S3 et CDN.

Il y a beaucoup plus.

Avec Python, MongoDB – en tant que grande base de données orientée document, la configuration de base du logiciel RabbitMQ est terminée. Cependant, il y a beaucoup plus à penser. Dans nos articles de suivi, nous aborderons le besoin d’un logiciel de suivi et d’analyse approprié, ainsi que la manière dont les procédures de paiement peuvent s’effectuer sans heurts dans le cloud.

Plus loin, nous vous montrerons également quelques guides détaillés sur la configuration de votre pile d’outils pour l’exécution de votre application Web à l’échelle mondiale.