close
Web

9 millions d’utilisateurs et 150 millions de requêtes par jour pour Evernote

Les développeurs d’Evernote ont eu la bonne idée de rédiger un aperçu de leur architecture dans un billet intitulé Architectural Digest. Dave Engberg décrit leur approche sur la mise en réseau, la fragmentation, le stockage des données des utilisateurs, la recherche, et certains autres services personnalisés.

Wikipedia décrit succinctement les caractéristiques d’Evernote :

Evernote permet aux utilisateurs du monde entier de capturer facilement une information, dans n’importe quel environnement, en utilisant l’appareil et la plateforme qui leur conviennent le mieux, et d’y avoir accès ou de la rechercher à n’importe quel moment et depuis n’importe quel endroit. Une « note » peut être un texte mis en forme, une page web (entière ou un extrait), une photo, un mémo vocal ou une note manuscrite et peut également inclure des pièces jointes. Les notes peuvent être triées dans des carnets de notes, être taguées, annotées, éditées, commentées et retrouvées via un module de recherche. Evernote est disponible sur Windows, Mac, Web, iPhone, iPad, BlackBerry, Windows Mobile, Android, Palm WebOS et sur d’autres appareils encore. Avec plus de six millions d’utilisateurs dans le monde (chiffres janvier 2010), Evernote offre deux niveaux de services : une version gratuite et une version Premium.

Alors, qu’est-ce qu’EverNote ?

Il s’agit d’un service multi-plateforme :

  • utilisable en ligne sur le site de l’éditeur
  • et/ou, de préférence, à travers des logiciels « clients » installés sur :
    • des ordinateurs Windows, MacOs
    • ou sur des smartphones (Android, iPhone, BlackBerry, Palm Pre, Sony Ericsson-X, Windows Mobile…)
  • de gestion de notes
    • textuelles
    • manuscrites
    • constituées d’extraits de pages de sites internet, capturés quasi automatiquement
    • d’images
    • ou de documents (fichiers PDF par exemple)
  • ces notes étant automatiquement indexées, mot par mot (y compris le texte contenu dans certains fichiers PDF ou reconnu sur des photos), et pouvant faire, optionnellement, l’objet d’un classement et d’un étiquetage manuels

Les notes entrées sur le logiciel client utilisé sur un ordinateur personnel seront à la fois stockées sur ledit ordinateur mais également synchronisées avec les serveurs d’Evernote, et donc accessibles (une fois l’identifiant et le mot de passe fournis) de n’importe quel ordinateur connecté à internet, ou de votre smartphone, qui lui même pourra servir de point d’entrée à vos notes, photos, mémos sonores…

Le contenu des notes gérées par Evernote étant automatiquement indexé, il sera très simple de retrouver l’information souhaitée, en faisant une recherche sur un ou plusieurs mots, ou par l’étiquetage (les « tags ») et le classement qu’on leur aura appliqué.

Stockage et sécurisation des données

La clé d’Evernote est qu’il stocke beaucoup de données, qui doivent être recherchées et synchronisées sur le cloud depuis n’importe quel dispositif que vous utilisez.

Un autre élément clé est l’effet du modèle économique d’Evernote et sa structure des coûts. Evernote est remarquable notamment pour son modèle prenium basé sur l’idée de leur PDG : la meilleure façon d’obtenir un million de comptes payants est d’obtenir un milliard d’utilisateurs. Evernote est destiné à devenir rentable à un taux de conversion de 1%. Le service en ligne gratuit limite ces utilisateurs à un téléchargement de 60 Mo/mois tandis que les utilisateurs titulaires d’un compte prenium, qui devront débourser 5$ par mois ou 45$ par an, pourront télécharger jusqu’à 1Go/mois. Pour que cela soit rentable, ils doivent stocker beaucoup de données sans dépenser beaucoup d’argent. Il y a très peu de possibilité d’extras, ce qui explique la mise en œuvre simple de leur architecture.

Cet article est bref et succinct, vous devrez donc certainement lire le billet officiel pour plus de détails. Voici les faits principaux :

  • La maîtrise des coûts : Evernote stocke toutes les données dans un centre de données à Santa Clara, en Californie. L’utilisation du cloud ne ​​fournirait pas assez de puissance de traitement et de stockage à un coût assez bon marché pour faire fonctionner le business model d’Evernote. Comme leur charge ne ​​semble pas être importante, utiliser leur propre système de stockage prend tout son sens, compte tenu en particulier sur la façon dont ils font usage des machines virtuelles pour la fiabilité.
  • Architecture basée sur la nature des données : Les notes des utilisateurs sont indépendantes les unes des autres rendant très pratique la fragmentation pour Evernote de leurs 9,5 millions d’abonnés. Cela se traduit par environ 90 “shards” traitant toutes les données et tout le trafic (Web et API). Physiquement chaque shard est une paire de deux processeurs Intel de qautre cœurs, des lots de RAM et un châssis complet de disques durs Seagate en configuration RAID miroir (mirroring). Tout ceci est contenu dans un boîtier de SuperMicro. Ils ont trouvé que l’utilisation du stockage en local donnait un meilleur rapport performance/prix. L’utilisation d’un stockage sur des systèmes tiers, avec le même niveau de redondance, coûterait beaucoup plus.
  • Application de la redondance : Chaque boîte possède deux machines virtuelles Xen. La VM principale, déployée sur un OS Debian, exécute le noyau de l’application. De nombreux services viennent enrichir l’OS : Java, Tomcat 6, Hibernate, Ehcache, Stripes, GWT, MySQL (pour les métadonnées) et la hiérarchie du système de fichiers local (pour les données du fichier). Un DRBD (Distributed Replicated Block Device en anglais, ou périphérique en mode bloc répliqué et distribué en français) est utilisé pour la réplication de la machine virtuelle primaire à une VM secondaire sur une autre machine. Heartbeat est utilisé pour basculer vers une VM secondaire dès que la VM principale a un problème. Il s’agit d’une manière intelligente d’utiliser ces puissantes machines et de faire un système fiable avec moins de ressources
  • Fiabilité des données : Les données utilisateur sont stockées sur quatre disques durs différents à travers deux différents serveurs physiques. Les sauvegardes nocturnes copient les données sur un réseau d’1Gbps dédié, a un centre de données secondaire
  • Demande rapide de routage : Le minimum d’informations sur le compte utilisateur (nom d’utilisateur, MD5 du mot de passe, identifiant du shard) stockée en base de données MySQL est tellement faible qu’il est possible de le stocker en mémoire vive. De plus le même principe de redondance décrit précédemment (RAID en “miroir”, réplication par DRBD, et sauvegardes nocturnes secondaires) est également utilisé pour ces données. Cette approche permet un temps de réponse faible pour l’accès aux données des utilisateurs, tout en restant simple et tout en étant hautement disponible
  • Afin de permettre de rechercher des mots trouvés dans les images de vos notes, 28 serveurs passent chaque jour à l’aide de leurs 8 cœurs traitent les nouvelles images déposées. Sur une journée, cela se traduit par 1,3 ou 1,4 millions d’images distinctes. Ce logiciel nettoie chaque image, identifie les régions d’un mot, puis tente de compiler à l’aide d’une liste pondérée, des correspondances possibles pour chaque mot en utilisant un ensemble de “moteurs de reconnaissance” contribuant chacun à une série d’estimations. Le logiciel utilisé entièrement développé par l’équipe R&D d’Evernote, est une forte valeur ajoutée dont il est difficile à reproduire par quelqu’un d’autre
  • Puppet est utilisé pour la gestion de la configuration
  • Le suivi (monitoring) est réalisé à l’aide de plusieurs services : Zabbix, Opsview, et AlertSite

9 millions d'utilisateurs et 150 millions de requêtes par jour pour Evernote

Conclusion

Les systèmes comme le sharding sont prévus pour compenser la panne logicielle ou matérielle d’un serveur en éclatant les données sur plusieurs serveurs. On lui associe en général un mécanisme de réplication des données : en cas de panne, on ne perd donc qu’une partie des données, données que l’on peut récupérer sur une copie. La panne du système complet est un événement assez exceptionnel : c’est une occasion de rappeler que le stockage en ligne aussi peut avoir des défaillances, malgré toutes les précautions prises, et que rien ne vaut mieux que de multiplier les points de sauvegarde pour les données les plus importantes.

Il y a une promesse de la part d’Evernote de dévoiler de futurs articles mettant davantage l’accent sur chacun des sous-systèmes. J’ai vraiment hâte d’en découvrir d’avantage et apprécier l’élégance du système qu’ils ont créé pour leur modèle économique. C’est un bon exemple d’apprendre…

Que pensez-vous de la méthode employée par Evernote ? Son architecture vous semble-t-elle fiable ?

Tags : architecturedonnéesevernoteredondanceréplicationsécuritéshardingstockage
Yohann Poiron

The author Yohann Poiron

J’ai fondé le BlogNT en 2010. Autodidacte en matière de développement de sites en PHP, j’ai toujours poussé ma curiosité sur les sujets et les actualités du Web. Je suis actuellement engagé en tant qu’architecte interopérabilité.