Notre participation au concours AWS Startup Architecture of the Year 2020

Mis à jour : févr. 13



Pourquoi participer à un concours d'architecture après tout? C'est la question que l'on peut se poser...


Cette année Eleven Life participe en effet à ce concours qui est organisé par AWS à l'occasion du AWS Summit Paris au Palais des congrès.


L'idée est simple, plusieurs startups vont concourir en déposant leur dossier le 31 janvier. Celle qui aura l'architecture la plus innovante, sécurisée, fiable et performante remportera la mise.


Et quelle mise?


• Figurer parmi les 10 finalistes et de recevoir un coaching technique personnalisé par l'équipe d’experts techniques AWS • Pitcher sur la scène de l'AWS Paris Summit le 17 mars 2020 devant un jury d'experts (VCs partenaires et CTOs) • Devenir la “Startup Architecture of the Year” 2020 et gagner en visibilité auprès de 9000 visiteurs • Figurer dans la presse startup : articles et vidéos diffusées par notre partenaire Maddyness • Gagner un pass pour la grande finale à Las Vegas lors de AWS Re:invent en novembre 2020 • Gagner jusqu'à 50 000$ de crédits AWS • Accéder au programme de mentoring startup AWS (rencontres VCs et Corporate, formations et meet-ups avec des CTOs)





Pour donner un peu de contexte, il est important de rappeler notre activité.

Eleven Life est une application mobile qui vous permet de découvrir toutes sortes d'activités insolites ou séances de sport autour de vous. Que vous soyez à l'étranger ou chez vous, vous pouvez trouver des choses intéressantes à faire autour de vous et les découvrir en vidéo. Recherchez, regardez, réservez et payez votre expérience directement dans la même application pratique, sur votre smartphone ou sur votre ordinateur

Télécharger Eleven Life sur l'app store



Lorsqu'on décide de se lancer dans l'univers du réseau social, et de surcroit du réseau social vidéo, on se rend rapidement compte que les challenges sont divers et variés :

  • La maitrise du transcodage et de la gestion de la vidéo

  • La performance du streaming en toutes conditions

  • La sécurité générale de la plateforme


La maitrise de ces points est extrêmement importante pour avoir une crédibilité auprès des utilisateurs. Les autres acteurs du marché Facebook, Instagram, Meetup... possèdent tous des plateformes qui sont d'un point de vue technique très solides, et en 2020 tout le monde s'attend à la même réactivité de service, sous peine de ne pas être du tout considéré.


Comme on le sait, les startup qui commencent ne sont souvent dotées de peu de moyens. Il n'est donc pas envisageable d'embaucher à la fois un ingénieur devOps, plusieurs ingénieurs back-end, et un spécialiste du transcodage vidéo.


"Il fallait alors trouver le moyen de pouvoir avoir la réactivité et la performance des géants du web, tout en ayant une structure de coûts qui soit proche d'une startup en phase d'amorçage."


Le serverless, une approche sécurisante et scalable



Les solutions traditionnelles d'hébergement de machines dans le cloud ont un inconvénient majeur :


Vous avez l'obligation de prévoir combien de personnes vont utiliser votre application, site web à l'avance afin de choisir une machine taille convenable).


Même si cela peut s'automatiser, cette machine choisie devra tourner 24h/24 et vous serez donc facturé à la minute d'utilisation même si personne n'utilise votre service en ce moment même.


Cette structure de couts n'est pas bien adaptée à la startup car elle induit des couts supplémentaires qui peuvent s'avérer problématiques dans les premiers mois de vie une société faible en ressources financières.




De plus il se trouve que cette machine est exposée aux dangers de l'internet, car elle est publiquement accessible depuis le monde entier. Vient alors une gestion supplémentaire quotidienne qui consiste à s'assurer que la machine est toujours à l'abri des menaces. Concrètement cela revient à embaucher une personne supplémentaire dans l'équipe, et donc un salaire en plus.





La solution s'est tournée du coté d'une nouvelle approche appelée server-less (ou sans serveur). Elle consiste à ne pas développer son infrastructure sur le dos d'une machine exposée publiquement, mais au contraire de compter sur les géants du cloud tels que AWS et sa grande équipe d'experts pour s'en charger.


Une startup comme la notre n'a alors plus qu'à gérer le code et la logique de la plateforme, et laisser le reste des tâches rébarbatives à AWS.


Cela à plusieurs conséquences directes :


  1. Vous êtes capables de scaler votre plateforme du jour au lendemain, de 100 utilisateurs à plusieurs millions

  2. Vous pouvez avoir la sérénité d'esprit que les équipes de AWS auront bien en main la partie sécurité de votre infrastructure

  3. Vous ne payez que pour ce que vous utilisez (fini la facturation importante alors que le traffic est calme)


En tant que startup qui démarre c'est un point essentiel du succès budget des débuts.



Distribuer du contenu vidéo dans le monde entier


En tant que plateforme vidéo, nous devions maitriser parfaitement la totalité du processus afin d'obtenir la crédibilité technique qui est indispensable pour un service comme le notre.



Nous devions donc créer une infrastructure capable de capter du contenu video, de le stocker, transcoder puis de le diffuser dans le monde entier.


L'une des problématiques réside aussi dans le choix d'un encodeur qui soit capable d'accepter tous les formats vidéos en entrée. En effet nous ne pouvons pas savoir à l'avance quel sera le format vidéo du prochain post transféré.



Cependant les encodeurs classiques n'acceptent qu'une poignée de formats, et il faut faire appel à un encodeur différent pour chaque entrée, ce qui peut multiplier le temps de développement et les couts license. Sans parler des problèmes de scalabilité d'une telle solution sur plusieurs régions.




AWS Elemental MediaConvert nous permet de résoudre ce problème en externalisant la gestion machine de l'encodage sur une solution de service de transcodage unifiée, et disponible dans plusieurs régions.



Vient ensuite le problème de la diffusion de ce contenu.


En effet, il ne suffit pas de publier quelques fichiers vidéo sur une adresse publique pour que tout le monde y ait accès.


Le streaming vidéo est un procédé complexe qui requiert précision et performance. Notamment la latence d'accès aux fichiers est primordiale pour un streaming sans failles. Il est également important que le débit d'accès aux données soit bon. Les fichiers doivent être placés au plus proche de l'utilisateur pour garantir un usage optimal.


"La performance du streaming est en effet un enjeu majeur dans notre cas car, après 2 secondes d'attente l'utilisateur fermera l'application."

Il n'est donc pas négociable pour nous de négliger cette donnée critique.


Nous avons donc opté pour une distribution du streaming des vidéos, et de toutes les images de la plateforme, via AWS CloudFront. Cela nous permet de mettre en cache tout ces blocs de données au plus proche de l'utilisateur afin d'obtenir la meilleure latence possible partout dans le monde.





CloudFront fonctionne avec une structure de couts de paiement à l'utilisation ce qui est essentiel pour nos débuts car nous ne pouvons vraiment pas estimer quel sera la charge de transfert dans le futur, et quelle zone géographique est a privilégier...


Ce service nous ouvre à nous petite startup les portes du streaming à échelle mondiale, ce sans quoi notre application n'aurai aujourd'hui pas pu exister.


"...certainement, il existe des services concurrents utilisés par les géants du streaming comme Akamai ou autre CDN, mais la structure de couts est trop importante pour une société comme la notre en phase d'amorçage. AWS CloudFront peut permettre à de jeunes sociétés vidéos d'émerger."

> En savoir plus sur notre utilisation de MediaConvert


Sécuriser son réseau, comme des pros...


Défrayant la chronique de manière régulière, les attaques informatiques ciblent souvent les puis de données les plus importants.


Les réseaux sociaux sont les premiers en ligne en matière de tentatives d'infiltrations et de vol de données personnelles.


De plus, après les événements récents, l'opinion publique est plus que jamais à vif sur les questions de protection des informations privées. Il n'est donc pas question de laisser la place au bad buzz qui pourrait entrainer l'arrêt de notre aventure très rapidement.


"La confiance de nos utilisateurs est directement liée à leur satisfaction. Nous donc avons décidé d'en faire un enjeu stratégique, et de prendre les mesures nécessaires pour faire de notre plateforme un lieu d'échange sécurisé, par défaut."

Toute communication entre l'infrastructure et les clients est toujours sécurisée via HTTPS, qu'il s'agisse de données, d'images ou de vidéos.


Nous utilisons des certificats de confiance délivrés par Amazon Certificate Manager afin d'authentifier chaque échange. Chaque client est alors certain que ses données sont bien délivrées au domaine Route53 elevenlife.com est à personne d'autre. Chaque client possède également un certificat client pour authentifier l'origine de la demande.


Le point de contact de notre infrastructure avec le monde extérieur est opéré par API Gateway. Il nous permet avec son écosystème de nous prémunir contre les diverses attaques de Denial Of Service et de gérer de manière précise les entrées sorties.


Les contrôles d'accès sont effectués par AWS Cognito qui permet d'authentifier chaque utilisateur au sein de notre communauté. C'est un service entièrement géré et crypté par Amazon qui nous permet de reposer sur les experts en sécurité de ce géant pour obtenir une sécurité sans faille dans la gestion des utilisateurs et mots de passe du réseau.


Performances à tous les étages, partout dans le monde


gif

Poster une vidéo à Paris, la rendre disponible partout dans le monde en moins de 20 secondes.



Voila le challenge que nous nous sommes assignés pour faire de Eleven une communauté sans frontières.





En effet une partie non négligeable de notre cible est touristique. Il était donc impossible de faire l'impasse sur la mise en place d'une infrastructure internationale.


Si une personne à Tokyo, cherche un cours de sport à Paris pour son séjour le mois prochain, la vidéo doit démarrer en moins de 2 secondes sur son appareil au Japon. Et ce, qu'il soit connecté en 3G, 4G ou sur un wifi public instable.





DynamoDb nous permet de bénéficier de la même table de base de données sur plusieurs régions synchronisées. Nous avions activé 5 régions de disponibilité pour être au plus près de l'utilisateur lors de sa requête. Nos points d'interconnexion sont en :


  • 🇮🇪 Irlande

  • 🇺🇸 Virginie du nord

  • 🇧🇷 Sao-Paolo

  • 🇯🇵 Tokyo

  • 🇦🇺 Sydney


De même tout le traitement des requêtes est effectué par Lambda dans la région de la requête afin de minimiser la latence de la réponse.


Recherches géo localisées, multi critères, pondérée


Mais que se cache derrière ces buzzwords disposés en titre de cette dernière section. En réalité c'est le résultat du dernier des challenges au quel nous avons du faire face, la recherche intelligente. En effet nos posts vidéo comportent beaucoup d'informations :


Il fallait trouver un moyen de générer un flux d'accueil pertinent en fonction de l'utilisateur qui le regarde. En effet si je suis situé dans le marais à Paris, il faut que la plateforme me propose des activités en priorité autour de moi.

Egalement si j'ai le street art comme intérêt ou encore la littérature, il faut que l'on m'oriente directement vers ce type de posts plutôt que d'autres. Je dois également être capable d'effectuer une recherche précise en indiquant plusieurs critères tels que par ex : Golf, Barcelone, 23-27 mars

Nous avions donc besoin d'un outil qui puisse effectuer des recherches par système de scoring du post le plus probable de plaire à telle recherche, et également de proposer un flux d'accueil personnalisé pour chaque utilisateur. Ceci en prenant en compte que certains critères comme les intérêts ou le lieu sont plus importants que la durée de l'activité ou que nombre de places restantes. D'ou la pondération des critères.


AWS Elasticsearch service nous à permis, tout en conservant notre approche sans gestion de serveur, de provisionner un cluster dans lequel nous transférons toutes ces données concernant les posts. Nous en disposons donc à n'importe quel moment de manière indexée et prête à être cherchée.

"... Nous pouvons donc faire demander à Elasticsearch des requêtes complexes pour afficher un flux d'accueil personnalisé à chaque utilisateur, en fonction de tous ses critères qui lui sont propres. Cela ouvre également la possibilité pour l'utilisateur d'effectuer des recherches avancées comme celle ci : Équitation, Lisbonne, du 12-18 avril, 5 personnes, ≤ 30€"

Elasticsearch est également disponible sur plusieurs régions afin de garantir une performance optimale sur chaque zone géographique.

Conclusion

La route est encore longue et nous avons plein de projets de développement pour les prochains mois et années. Cependant il est important de noter que nous n'aurions pas pu réaliser ce défi technique sans l'aide des services avancés mis à disposition par AWS.

Ils nous ont vraiment permis de franchir un cap et de "jouer dans la cour des grands", malgré notre faible effectif et légère structure de couts liés aux débuts de l'aventure.


Amazon met à la portée de ceux qui veulent bien se donner la peine, la capacité de créer sans limites, tant que l'on veut bien y passer le temps et la volonté nécessaire.

Plusieurs autres articles sont/seront disponibles sur ce blog pour découvrir plus en profondeur les caractéristiques de notre architecture.



185 vues