
Les dĂ©veloppeurs sont fous des choses les plus Ă©tranges. Nous prĂ©fĂ©rons tous nous considĂ©rer comme des ĂȘtres super rationnels, mais quand il s'agit de choisir une technologie particuliĂšre, nous tombons dans une sorte de folie, passant d'un commentaire sur HackerNews Ă un post sur un blog, et maintenant, comme dans l'oubli, nous sommes impuissants nous naviguons vers la source de lumiĂšre la plus brillante et nous nous inclinons docilement devant elle, ayant complĂštement oubliĂ© ce que nous cherchions Ă l'origine.
Ce n'est pas du tout ainsi que les gens rationnels prennent des décisions. Mais c'est exactement ainsi que les développeurs décident d'utiliser, par exemple, MapReduce.
Comme Joe Hellerstein l'a noté dans sa conférence sur les bases de données pour les étudiants de premier cycle (à la 54e minute):
Le fait est qu'il existe environ 5 entreprises dans le monde qui exĂ©cutent des tĂąches aussi ambitieuses. Quant Ă tout le monde ... ils dĂ©pensent des ressources incroyables pour fournir un systĂšme tolĂ©rant aux pannes dont ils n'ont vraiment pas besoin. Les gens avaient une sorte de "googleing" dans les annĂ©es 2000: "nous ferons tout exactement comme le fait Google, parce que nous gĂ©rons Ă©galement le plus grand service de traitement de donnĂ©es au monde ..." [ironise en secouant la tĂȘte et attend les rires du public]

Combien d'étages dans le bùtiment de votre centre de données? Google a décidé de rester à quatre, au moins dans ce centre de données particulier situé dans le comté de Mays, en Oklahoma.
Oui, votre systĂšme est plus rĂ©sistant que vous n'en avez besoin, mais pensez Ă ce qu'il pourrait coĂ»ter. Le point n'est pas seulement la nĂ©cessitĂ© de traiter de grandes quantitĂ©s de donnĂ©es. Vous Ă©changez probablement un systĂšme complet - avec des transactions, des index et l'optimisation des requĂȘtes - contre quelque chose de relativement faible. Il s'agit d'un pas en arriĂšre significatif. Combien d'utilisateurs Hadoop le font consciemment? Combien d'entre eux prennent une dĂ©cision vraiment Ă©quilibrĂ©e?
MapReduce / Hadoop est un exemple trĂšs simple. MĂȘme les adeptes du culte du fret ont dĂ©jĂ rĂ©alisĂ© que les avions ne rĂ©soudraient pas tous leurs problĂšmes. NĂ©anmoins, l'utilisation de MapReduce vous permet de faire une gĂ©nĂ©ralisation importante: si vous utilisez la technologie créée pour une grande entreprise, mais en mĂȘme temps que vous rĂ©solvez de petits problĂšmes, vous agissez peut-ĂȘtre sans rĂ©flĂ©chir. Pas mĂȘme ainsi, il est fort probable que vous soyez guidĂ© par des idĂ©es mystiques qui imitant des gĂ©ants comme Google et Amazon, vous atteindrez les mĂȘmes sommets.

Oui, cet article est un autre opposant au culte du cargo. Mais attendez, j'ai une liste de contrÎle utile pour vous, que vous pouvez utiliser pour prendre des décisions plus éclairées.
Cadre cool: UNPHAT
La prochaine fois que vous chercherez sur Google une nouvelle technique intĂ©ressante pour (re) façonner votre systĂšme, je vous invite Ă arrĂȘter et Ă utiliser simplement le framework UNPHAT :
- N'essayez mĂȘme pas de rĂ©flĂ©chir Ă des solutions possibles avant de comprendre le problĂšme (comprendre) . Votre objectif principal est de «rĂ©soudre» le problĂšme en termes de problĂšme, pas en termes de solutions.
- ĂnumĂ©rez (eNumerate) plusieurs solutions possibles. Pas besoin de pointer immĂ©diatement votre doigt sur votre option prĂ©fĂ©rĂ©e.
- Envisagez une solution distincte, puis lisez la documentation (papier) , le cas échéant.
- Définissez le contexte historique dans lequel cette solution a été créée.
- Associez les avantages aux défauts. Analysez ce que les décideurs ont dû sacrifier pour atteindre leur objectif.
- Pensez (pensez) ! RĂ©flĂ©chissez sereinement et calmement Ă quel point cette solution est adaptĂ©e Ă vos besoins. Qu'est-ce qui doit exactement changer pour que vous changiez d'avis? Par exemple, combien moins de donnĂ©es devraient ĂȘtre, de sorte que vous prĂ©fĂ©rez ne pas utiliser Hadoop?
Tu n'es pas amazone
Utiliser UNPHAT est facile. Rappelez-vous ma récente conversation avec une entreprise qui a décidé à la hùte d'utiliser Cassandra pour un processus intensif de lecture des données téléchargées la nuit.
Ătant donnĂ© que je connaissais dĂ©jĂ la documentation Dynamo et savais que Cassandra est un systĂšme dĂ©rivĂ©, j'ai compris que dans ces bases de donnĂ©es, l'accent Ă©tait mis sur la capacitĂ© d'enregistrement (Amazon devait faire en sorte que l'action «ajouter au panier» ne soit jamais n'a pas Ă©chouĂ©). J'ai Ă©galement apprĂ©ciĂ© que les dĂ©veloppeurs aient sacrifiĂ© l'intĂ©gritĂ© des donnĂ©es - et en fait, toutes les fonctionnalitĂ©s inhĂ©rentes aux SGBDR traditionnels. Mais aprĂšs tout, la sociĂ©tĂ© avec laquelle j'ai parlĂ©, la possibilitĂ© d'enregistrer n'Ă©tait pas une prioritĂ©. HonnĂȘtement, le projet signifiait la crĂ©ation d'un gros disque par jour.

Amazon vend beaucoup de tout. Si la fonction «ajouter au panier» cessait soudainement de fonctionner, ils perdraient BEAUCOUP d'argent. Vous avez un problĂšme du mĂȘme ordre?
Cette sociĂ©tĂ© a dĂ©cidĂ© d'utiliser Cassandra car il a fallu plusieurs minutes pour terminer la requĂȘte PostgreSQL en question, et ils ont dĂ©cidĂ© qu'il s'agissait de limitations techniques de la part de leur matĂ©riel. AprĂšs avoir clarifiĂ© quelques points, nous avons rĂ©alisĂ© que la table se composait d'environ 50 millions de lignes de 80 octets chacune. Il faudrait environ 5 secondes pour le lire Ă partir du SSD si vous deviez le parcourir complĂštement. C'est lent, mais il est toujours deux fois plus rapide que la vitesse d'exĂ©cution des requĂȘtes Ă ce moment-lĂ .
à ce stade, j'avais beaucoup de questions (U = comprendre, comprendre le problÚme!) Et j'ai commencé à peser environ 5 stratégies différentes qui pourraient résoudre le problÚme d'origine (N = eNumerate, énumérer quelques solutions possibles!), Mais en tout cas il était déjà clair pour le moment que l'utilisation de Cassandra était fondamentalement la mauvaise décision. Tout ce dont ils avaient besoin était d'un peu de patience pour mettre en place, probablement un nouveau design pour la base de données et, éventuellement (quoique peu probable), le choix d'une technologie différente ... Mais certainement pas un stockage de données de valeur clé avec enregistrement intensif que Amazon a créé pour leur panier!
Vous n'ĂȘtes pas LinkedIn
J'ai Ă©tĂ© trĂšs surpris de constater qu'une startup Ă©tudiante a dĂ©cidĂ© de construire son architecture autour de Kafka. C'Ă©tait incroyable. Autant que je sache, leur entreprise n'effectuait que quelques dizaines de trĂšs grandes opĂ©rations par jour. Peut-ĂȘtre quelques centaines les jours les plus rĂ©ussis. Avec cette bande passante, le principal entrepĂŽt de donnĂ©es pourrait ĂȘtre des entrĂ©es manuscrites dans un livre ordinaire.
Ă titre de comparaison, rappelez-vous que Kafka a Ă©tĂ© créé pour gĂ©rer tous les Ă©vĂ©nements analytiques sur LinkedIn. C'est juste une Ă©norme quantitĂ© de donnĂ©es. Il y a encore quelques annĂ©es, c'Ă©tait environ 1 billion d'Ă©vĂ©nements par jour , avec une charge de pointe de 10 millions de messages par seconde. Bien sĂ»r, je comprends que Kafka peut ĂȘtre utilisĂ© pour travailler avec des charges plus faibles, mais Ă 10 commandes de moins?

Le Soleil, étant un objet trÚs massif, et qui n'est que 6 ordres de grandeur plus lourd que la Terre.
Peut-ĂȘtre que les dĂ©veloppeurs ont mĂȘme pris une dĂ©cision dĂ©libĂ©rĂ©e, basĂ©e sur les besoins attendus et une bonne comprĂ©hension de l'objectif de Kafka. Mais je pense qu'ils Ă©taient plutĂŽt alimentĂ©s par l'enthousiasme communautaire (gĂ©nĂ©ralement justifiĂ©) pour Kafka et ne se demandaient presque jamais si c'Ă©tait vraiment l'outil dont ils avaient besoin. Imaginez ... 10 commandes!
Je l'ai déjà dit? Tu n'es pas amazone
L'approche de conception architecturale qui leur offre une évolutivité encore plus populaire que l'entrepÎt de données distribué d'Amazon est une architecture orientée services. Comme Werner Vogels l'a noté dans une interview accordée à Jim Gray en 2006 , Amazon s'est rendu compte en 2001 qu'ils avaient du mal à faire évoluer la partie frontale et qu'une architecture orientée services pouvait les aider. Cette idée a infecté un développeur aprÚs l'autre, tandis que les startups, composées de quelques développeurs et presque pas de clients, n'ont pas commencé à diviser leurs logiciels en nanoservices.
Au moment oĂč Amazon a dĂ©cidĂ© de passer Ă SOA (architecture orientĂ©e services), ils comptaient environ 7800 employĂ©s et leurs ventes dĂ©passaient les 3 milliards de dollars .

La salle de concert Bill Graham Auditorium à San Francisco peut accueillir 7 000 personnes. Amazon comptait environ 7 800 employés lorsqu'ils sont passés à SOA.
Cela ne signifie pas que vous devez reporter la transition vers la SOA jusqu'Ă ce que votre entreprise atteigne le niveau de 7800 employĂ©s ... pensez toujours avec votre propre tĂȘte . Est-ce vraiment la meilleure solution pour votre tĂąche? Quelle est exactement la tĂąche qui vous attend et existe-t-il d'autres moyens de la rĂ©soudre?
Si vous me dites que le travail de votre organisation, qui se compose de 50 développeurs, augmente simplement sans SOA, alors je me suis demandé pourquoi tant de grandes entreprises fonctionnent simplement à merveille en utilisant une seule application, mais bien organisée.
MĂȘme Google n'est pas Google.
Des exemples d'utilisation de systĂšmes pour traiter des flux de donnĂ©es trĂšs chargĂ©s (Hadoop ou Spark) peuvent vraiment ĂȘtre dĂ©routants. TrĂšs souvent, les SGBD traditionnels sont mieux adaptĂ©s Ă la charge, et parfois la quantitĂ© de donnĂ©es est si petite que mĂȘme la mĂ©moire disponible leur suffirait. Saviez-vous que vous pouvez acheter 1 To de RAM quelque part pour 10 000 $? MĂȘme si vous aviez un milliard d'utilisateurs, vous seriez toujours en mesure de fournir Ă chacun d'eux 1 Ko de RAM.
Peut-ĂȘtre que cela ne suffira pas pour votre charge, car vous devrez lire et Ă©crire sur le disque. Mais avez-vous vraiment besoin de plusieurs milliers de disques pour lire et Ă©crire? Voici combien de donnĂ©es vous avez en fait? GFS et MapReduce ont Ă©tĂ© créés pour rĂ©soudre des problĂšmes informatiques sur Internet ... par exemple, pour recalculer l'index de recherche sur Internet .

Les prix des disques durs sont désormais bien inférieurs à ceux de 2003 lors de la publication de la documentation GFS.
Peut-ĂȘtre que vous avez lu la documentation GFS et MapReduce et que vous avez remarquĂ© que l'un des problĂšmes pour Google n'Ă©tait pas la quantitĂ© de donnĂ©es, mais la bande passante (vitesse de traitement): ils utilisaient le stockage distribuĂ© car cela prenait trop de temps pour transfĂ©rer des octets Ă partir des disques. Mais quelle sera la bande passante des appareils que vous utiliserez cette annĂ©e? Ătant donnĂ© que vous n'avez mĂȘme pas besoin d'autant d'appareils que Google en aurait besoin, serait-il prĂ©fĂ©rable d'acheter simplement des disques plus modernes? Combien cela coĂ»tera-t-il d'utiliser un SSD?
Vous souhaitez peut-ĂȘtre envisager lâĂ©volutivitĂ© Ă lâavance. Avez-vous dĂ©jĂ fait tous les calculs nĂ©cessaires? Allez-vous accumuler des donnĂ©es plus rapidement que les prix des SSD ne baissent? Combien de fois votre entreprise devra-t-elle se dĂ©velopper pour que toutes les donnĂ©es disponibles ne tiennent plus sur un seul appareil? En 2016, Stack Exchange traitait 200 millions de requĂȘtes par jour avec prise en charge de seulement 4 serveurs SQL : le principal pour Stack Overflow, un de plus pour tout le reste et deux copies.
Encore une fois, vous pouvez recourir Ă UNPHAT et toujours dĂ©cider d'utiliser Hadoop ou Spark. Et la dĂ©cision peut mĂȘme ĂȘtre juste. L'essentiel est que vous utilisiez vraiment la bonne technologie pour rĂ©soudre votre problĂšme . Soit dit en passant, cela est bien connu de Google: lorsqu'ils ont dĂ©cidĂ© que MapReduce n'Ă©tait pas adaptĂ© Ă l'indexation, ils ont cessĂ© de l'utiliser.
Tout d'abord, comprenez le problĂšme
Mon message n'est peut-ĂȘtre pas quelque chose de nouveau, mais c'est peut-ĂȘtre sous cette forme qu'il vous rĂ©pondra ou peut-ĂȘtre qu'il vous sera simplement facile de vous souvenir de l'UNPHAT et de l'appliquer dans la vie. Sinon, vous pouvez regarder Rich Hickey parler au Hammock Driven Development ou au livre de Paul , How to Solve it , ou Ă Hamming âs The Art of Doing Science and Engineering . Parce que la principale chose que nous demandons tous est de rĂ©flĂ©chir!
Et comprenez vraiment le problÚme que vous essayez de résoudre. Dans les mots inspirants de Paul:
« Il est insensé de répondre à une question que vous ne comprenez pas. C'est triste de viser un objectif que vous ne voulez pas atteindre. "
Traduction russe
Traduction: Alexander Tregubov
ĂditĂ© par Alexey Ivanov (@ponchiknews)
Communauté: @ponchiknews
Figure: Ăquipe de contenu LucidChart