CLOUD & INFRA

Comment concevoir l’architecture d’un réseau social de partage de photo dans Azure ?

 

Microsoft profile picture
Maxime Villeger

Cloud Solution Architect

Microsoft profile picture
Mathilde Gaudefroy

Cloud solution Architect

Retour vers le futur

 

Depuis le début des années 2000, les réseaux sociaux ont considérablement changé notre façon de partager des photos.

 

Grâce au lancement de ces plateformes, couplé à l’évolution technologique que nous connaissons aujourd’hui, partager les temps forts de son quotidien n’a jamais été aussi simple. Qu’il s’agisse de photos, vidéos, stories, ou autres, ces contenus connaissent un succès grandissant. Ces types de contenu donnent aujourd’hui à n’importe quelle personne équipée d’un smartphone – que ce soit une star de cinéma, le community manager d’une grande marque, ou votre voisin du 7e – la possibilité de s’exprimer librement auprès d’une communauté plus ou moins large.

 

Vous‐êtes‐vous déjà demandé comment concevoir l’architecture d’une telle plateforme sur Azure ?

 

Rapport Magic Quadrant de Gartner sur l’IaaS

Pour la cinquième année consécutive, Gartner positionne Microsoft comme un des leaders mondiaux en 2018 du Magic Quadrant pour l’infrastructure cloud en tant que service (IaaS).

Télécharger

 

Qu’est-ce qu’une application de partage de photo ?

 

Tout d’abord, définissons ensemble les caractéristiques d’une application de partage de photos :

  • La plateforme doit pouvoir partager des photos à un groupe spécifique d’individu ou au monde entier,
  • Les utilisateurs de la plateforme doivent pouvoir trouver des photos correspondant à leurs centres d’intérêts.

En effet, l’élément essentiel d’une application de partage de photos est sa capacitée à identifier des photos selon certaines caractéristiques :

  • Lieu où la photo a été prise,
  • Hashtag (Mot‐dièse) caractérisant la photo

La plateforme nécessite une capacité à gérer un profil utilisateur, permettant ainsi de retrouver toutes les photos partagées.

Aujourd’hui, les applications de partage de contenu photographique sont utilisées au quotidien par des millions d’utilisateurs à travers le monde. Pourquoi ce type de contenu connait‐il une telle popularité ? Tout simplement car les évolutions technologiques de ces dernières décennies ont permis l’essor de ce type de plateforme. En effet, nous avons, au travers des smartphones, non seulement un accès à Internet, mais aussi à la position GPS de l’utilisateur, à un appareil photo haute définition, et ce, en permanence. Couplé à la puissance du cloud, cela va permettre de créer une plateforme de partage de photos reposant sur Azure.

Comment créer un réseau social de partage de photos sur Azure ?

 

Rappelons les différents objectifs auxquels l’application doit répondre :

  • Partager des photos,
  • Taguer des photos (identifier des photos au travers de certaines caractéristiques),
  • Trouver les photos en fonctions de ses caractéristiques (position géographique, tag…),
  • Créer et mettre à jour un profil utilisateur regroupant ses photos.

Afin de garantir la meilleure expérience possible, cette application doit être performante et hautement disponible. En effet, ce type de plateforme étant utilisée par des millions d’utilisateurs, sa résilience est essentiel à sa pérennité.

Pour différentes raisons, nous faisons le choix d’uniformiser le format de toutes les photos sur la plateforme, cela permet d’obtenir :

  • Un standard pour tous les utilisateurs,
  • Une facilité de traitement (notamment en cas d’ajout d’intelligence artificielle),
  • Une uniformisation de la plateforme.

De ce fait, la première chose à faire est de modifier les photos avant de les poster sur la plateforme. Pour cela nous préconisons l’architecture suivante :

 

L’utilisateur va communiquer avec une API App, laquelle gère les mécanismes d’authentification et redirige les requêtes utilisateurs vers les bonnes fonctions. De plus, cela permet de filtrer les personnes n’étant pas inscrites sur la plateforme et de les rediriger vers une page de création de profil.

Les Azure Functions vont avoir pour but de gérer le bon fonctionnement de la plateforme :

  • La fonction « Utilisateurs » permet de gérer l’utilisateur en tant que tel : nom, photo de profil, biographie …
  • La fonction « Resize picture » permet de modifier les photos des utilisateurs pour qu’elles aient le même format (hauteur, largeur, définition). Ce n’est donc pas une fonction isolée, mais bien un groupe de fonction. Pour implémenter le reformatage, nous recommandons l’utilisation d’ImageSharp.
  • La fonction « Archivage » permet, après un certain temps, d’archiver les photos, afin de faire des économies de coûts.

Le Content Delivery Network (CDN) permet de mettre à disposition le contenu au plus près de l’utilisateur et d’améliorer son expérience sur la plateforme. En effet, nous allons y mettre en cache les photos les plus consultées de la plateforme et ainsi réduire le temps de chargement.

Une base de données de type Cosmos DB permet de stocker les informations utilisateurs. Elle permet également de stocker les positions des images avec leurs tags. Le but étant de pouvoir lier les photos à des utilisateurs et à des tags, facilitant ainsi la recherche et la classification d’images. En effet, afin d’obtenir la meilleure expérience utilisateur possible, il est essentiel que la donnée soit au plus près de l’utilisateur. Azure Cosmos DB est une base de données, permettant de répliquer, en toute transparence, les données partout dans le monde. Ainsi, l’application peut fonctionner sur une copie des données, au plus proche des utilisateurs, où qu’ils soient dans le monde.

L’avantage d’Azure Cosmos DB est la possibilité d’ajouter ou de supprimer une nouvelle région à tout moment, en un clic. La réplication multi‐maître permet d’écrire partout à travers le monde, garantissant le traitement des lectures en moins de 10 millisecondes. Azure Cosmos DB apporte également une scalabilité horizontale illimitée en répartissant les données sur un grand nombre de partitions logiques, reliées à des partitions physiques. Les partitions physiques sont gérées par Azure Cosmos DB ; les partitions logiques sont définies par la clef de partition. Il est essentiel de choisir une bonne clef de partition, afin de bien distribuer les données, la charge et le débit, et ainsi éviter de créer des partitions chaudes.

Pour cette application de partage de photos, une clef de partition de type « user ID » est un bon choix. En effet, on s’assure ainsi que chaque photo d’un utilisateur sera stockée dans la même partition, optimisant ainsi les requêtes.

Nous avons désormais une application où il est possible de poster et retrouver des photos en fonction de tag, tout en gérant les utilisateurs. Nous pouvons cependant rendre notre plateforme plus pertinente en allant plus loin …

 

Les défis auxquels sont confrontés les dirigeants I&O et comment y faire face

En raison du rythme soutenu d’évolution des systèmes IT, les dirigeants I&O font face à des défis importants lorsqu’ils travaillent à l’élaboration d’une stratégie d’infrastructure agile et évolutive.

Télécharger

Et l’IA dans tout ça ?

 

Grâce au mécanisme d’intelligence artificielle qu’offre le cloud, il est possible de rendre notre plateforme « intelligente », via ce que l’on appelle les services cognitifs.

Les services cognitifs sont une famille d’API, de kits de développement logiciel (SDK) et de services destinés à aider les développeurs à générer des applications intelligentes. Cela sans disposer des connaissances ou compétences directes en matière d’intelligence artificielle et de science de la donnée.

En utilisant ces outils, nous allons pouvoir enrichir notre application. Par exemple,  l’analyse d’image permet de proposer aux utilisateurs des photos basées sur les photos qu’ils ont déjà aimés.

Le but de cet enrichissement est de créer des recommandations spécifiques aux utilisateurs. En fonction de ce que ce dernier aime, regarde et partage, du contenu similaire pourra lui être proposé. Notre architecture devient alors :

 

 

La clef de voûte du processus est portée par une Azure Function, « Personalized Offer Logic » : la donnée est lue dans la base de données, afin de voir les interactions de l’utilisateur avec la plateforme. Elle est ensuite stockée dans un Azure Cache Redis.

S’en suit alors un score de prédiction générée à l’aide d’Azure Machine Learning. Le score qui découle de la donnée brute va permettre de proposer un contenu adapté et personnalisé. Azure Event Hub récupère les données brutes relatives aux activités des utilisateurs, les offres proposées et les données de performances. Puis, Azure Event Hub va transmettre ces données aux services Azure Stream Analytics pour proposer une expérience utilisateur personnalisée.

Dans toutes plateformes de médias, il est essentiel de monitorer le TTD (je laisse au plus aguerri d’entre vous la recherche de la définition de cet acronyme). Ce paramètre permet de gérer le temps entre la mise en ligne d’une photo ne respectant pas les lois en vigueur et sa suppression. En effet, il est à la charge de l’hébergeur de la plateforme de partager ce média, de vérifier que le contenu partagé est respectueux des lois en vigueur. Cela englobe notamment les photos contenant du contenu pour adultes et/ou choquant.

Nous pouvons alors enrichir les fonctions en charge de la gestion du bon format des images, afin d’y inclure un service cognitif permettant de modérer le contenu : Content Moderator. Les images ne respectant pas la politique de la plateforme seront alors supprimées avant même d’être mises en ligne.

Nous pourrions encore enrichir notre plateforme d’un canal de messagerie, afin que les utilisateurs puissent échanger entre eux et ainsi créer une véritable communauté au sein de la plateforme de partage de photos.

 

Planifiez votre migration vers le SaaS en fonction des besoins de vos clients

Dans ce rapport de Forrester, apprenez comment vous pouvez aider vos clients à identifier et mettre en œuvre des solutions qui répondent à leurs besoins prioritaires pour des expériences cohérentes et

Télécharger

En résumé …

 

Vous savez désormais comment concevoir une architecture de plateforme de partage de photos, scalable et hautement disponible. Azure vous offre la capacité d’utiliser une solution de cryptage et de sécurité capable d’assumer de fortes montées en charge tout en s’assurant de la performance et de la bonne expérience utilisateur.

Découvrez Azure et ses possibilités afin d’innover et disrupter votre marché !

 

Et vous, have you ever wondered ?

 

Liste des produits utilisés :

  • Blob Storage : Sert à stocker de grandes quantités de données non structurées (ex. données textuelles ou binaires), qui sont accessibles depuis n’importe où dans le monde via HTTP ou HTTPS. Vous pouvez utiliser les BLOBs pour exposer des données publiquement ou de façon privée pour une application.
  • Azure Cognitive Services : Famille d’API, de kits de développement logiciel (SDK) et de services destinés à aider les développeurs à générer des applications intelligentes sans disposer de connaissances ou compétences directes en matière d’intelligence artificielle ou de science des données.
  • Content Delivery Network : Fournit une livraison de contenu sécurisée et fiable avec une portée mondiale et un ensemble riche de fonctionnalités.
  • Azure Functions : Azure Functions est une solution serverless pour faire tourner des petites parties de code, ou des fonctions, dans le cloud.
  • Azure Cosmos DB : Azure Cosmos DB est le service de base de données multimodale ayant une distribution mondiale.
  • Stream Analytics : Azure Stream Analytics est un moteur d’analyse d’événements qui vous permet d’analyser de grands volumes de données récupérées en quasi‐temps réel de différentes sources (Web, IoT, applications …).
  • Azure Redis Cache : Azure Redis Cache est utilisé comme cache pour améliorer les performances et l’évolutivité des systèmes qui dépendent fortement des backend.
  • Azure Machine Learning : Azure Machine Learning fournit des SDKet des services pour préparer rapidement des données, entrainer et déployer des modèles d’apprentissage automatique.
  • Azure Mobile App : Azure Mobile App est un service managé offrant aux développeurs et aux intégrateurs systèmes une plateforme de développement d’application mobile.
  • Azure API App : Azure API App permet de gérer (get/post) des API dans le cloud dans différents langages
  • Azure Notification Hub : Azure Notification Hub est un moteur de notifications push managé prenant en charge tous les types d’OS.
  • Azure Key Vault : Azure Key Vault est un gestionnaire de secrets et de certificats dans le cloud.
  • Azure Active Directory : Azure ACtive annuaire d’identité permettant de gérer les identités et les accès utilisateurs.

 

 

 

Disclaimer

©2019 Microsoft Corporation. All rights reserved. This information is provided « as‐is » and may change without notice. Microsoft makes no warranties, express or implied, with respect to the information provided here. Third‐party data was used to generate the Solution. You are responsible for respecting the rights of others, including procuring and complying with relevant licenses in order to create similar datasets.