«Évitez le travail axé sur l'entropie» et autres conseils d'un ingénieur logiciel Sr d'Adtech

Dans cette troisième édition de Jampper Stories, notre brillant ingénieur logiciel senior, Claudio Freire nous donne un aperçu de la «technologie» derrière «adtech», nous en disant un peu sur les défis technologiques des enchères programmées en temps réel, l'amour de la mise en cache, les langages de programmation que nous utilisons, les outils que nous fabriquons…. Plongeons dedans!

Parlez-nous un peu de votre expérience antérieure avant de rejoindre Jampp

Au début (pour moi), je travaillais pour une entreprise qui offrait des services de comptabilité au gouvernement. Pour ceux qui n'ont pas eu le plaisir (?), Le niveau de bureaucratie et d'inertie que vous pouvez trouver dans ces endroits n'est égalé que par la quantité de politique impliquée dans absolument chaque étape de chaque projet, grand ou petit. J'ai laissé ça à Livra et quelques années plus tard, j'ai rejoint Jampp.

Mon séjour à Livra est difficile à séparer de mon séjour à Jampp car l'atmosphère et la culture étaient très similaires - ce qui n'est d'ailleurs pas un hasard, les deux sociétés ont été fondées par les mêmes personnes.

Voici Claudio aux Livra Games 2008, il a fait Survive and Thrive…

Livra a été une véritable expérience d'apprentissage dès le premier jour.

On me donnerait un projet dans un domaine que je connaissais peu, en utilisant des outils que je n'avais pas utilisés auparavant, et c'est ainsi que j'ai appris Python presque à partir de zéro (j'avais utilisé un peu le langage pour les scripts de jeu, mais rien de sérieux jusque-là ).

Je pensais que c'était génial et après avoir passé un certain temps dans la masse salariale du gouvernement, j'ai pu apprécier à quel point j'ai eu de la chance.

Alors, parlez-nous de votre rôle actuel… Quelle journée typique pour vous?

Je fais partie de l'équipe de base ici à Jampp, où nous développons notre soumissionnaire et notre logiciel de reporting. Mais il n'y avait pas toujours d'équipe Core. Au début, il n'y avait même pas de soumissionnaire.

Quand j'ai commencé, je devais faire des recherches sur les enchères en temps réel (dont je ne savais presque rien), et même sur les affaires adtech. C'est une journée typique dans le développement de logiciels ici chez Jampp: apprendre de nouvelles choses . Pour être honnête, cela devrait être le cas dans toutes les équipes de développement logiciel, mais cela ne se produit pas toujours. Bien sûr, nous ne changeons pas de technologie tous les jours, mais il y a suffisamment de changements pour que les choses restent intéressantes, et cela n'inclut même pas le support de production (ou «éteindre les incendies», pour utiliser le terme technique approprié). Croyez-moi, avec des centaines de serveurs servant des centaines de milliers de requêtes par seconde, quelque chose ne va pas tout le temps, donc nous ne sommes jamais inactifs.

Quels défis rencontrez-vous dans ce rôle?

Support de production. Quel voyage! Lorsque le soumissionnaire était en couches, nous avions un interrupteur pour l'éteindre à la rigueur, si un algorithme devenait fou. De nos jours, retourner ce commutateur serait impensable. Cela reviendrait à fermer la bourse. Parfois, je pense que le plus grand défi est de gérer cette exigence inexprimée incroyablement stricte: être toujours opérationnel. «Constant Uptime» signifie que nos systèmes dépensent (et idéalement aussi) de l'argent 24/7/365 jours par an.

Cela signifie également que nous devons rendre l'infrastructure plus efficace sans interrompre les opérations quotidiennes. Habituellement, les questions les plus difficiles à répondre lors de la conception d'une nouvelle fonctionnalité ou de la planification d'une révision du système sont: «Comment migrer les anciennes données?» et "Comment activer cette fonctionnalité sans hoquet?". Dans l'équipe de base, le logiciel que nous produisons est au cœur de l'entreprise et l'arrêt de l'entreprise pendant une semaine ou deux pendant que vous «migrez des choses» n'est vraiment pas une option, vous devez donc faire preuve de créativité.

Donc, à part «être créatif», comment contournez-vous ces défis?

Il n'y a jamais de solution miracle. Nous utilisons beaucoup l'automatisation et les tests A / B, nous déployons également chaque nouveau logiciel dans ce que l'on appelle un déploiement «bleu-vert» (ou Canary Deployment). C'est essentiellement lorsque vous testez de nouveaux logiciels dans une petite fraction du trafic réel, car un environnement simulé ne détectera pas nécessairement tous les problèmes.

La surveillance est l'autre outil très crucial à notre disposition lorsque quelque chose de nouveau est testé. Mais tout n'est pas résolu de cette façon: lorsque nous avons de plus gros projets qui ne peuvent pas être testés dans ces conditions… nous devons donc penser hors des sentiers battus .

Un peu plus technique, quelle est la meilleure façon de gérer les grandes quantités d'informations qui vont dans les serveurs?

Nous avons des centaines de serveurs recevant plus d'un demi-million de demandes par seconde tout le temps - c'est certain de donner des maux de tête à tout le monde si vous vous y attardez - donc la version TL; DR est que nous utilisons d'énormes quantités de cache pour rendre tout cela aussi rapide.

  • Nous mettons en cache les annonces que nous diffusons avec un CDN afin qu'il se charge rapidement sur les appareils qu'il doit afficher. Si vous êtes à Berlin et que vous regardez une annonce Jampp, vous la téléchargerez probablement sur l'un de nos sites européens.
  • Nous mettons en cache la façon dont les campagnes sont configurées afin que nous n'ayons pas à le charger à partir de la base de données chaque fois qu'une demande d'enchère arrive également.
  • Nous mettons même en cache le cache lui-même car charger quelque chose sur un serveur distant recevant plus d'un demi-million de requêtes par seconde est beaucoup plus lent que de le charger sur une copie locale.

Nous avons donc une architecture de mise en cache plutôt complexe (nous avons des articles de longue haleine à ce sujet dans notre blog technologique).

Nous utilisons Amazon AWS pour la plupart de notre infrastructure cloud, memcache pour la mise en cache mais également certains caches locaux. L'ensemble du soumissionnaire est écrit en Python, il est donc facile de travailler avec, et nous utilisons ensuite Cython pour transpiler Python en C afin qu'il s'exécute le plus rapidement possible.

Nous utilisons Tornado comme framework web, et nous publions beaucoup de ce que nous faisons en tant que bibliothèques open source: Chorde et sharedbuffers en sont quelques exemples. Nous utilisons beaucoup Postgres à diverses fins, principalement pour l'analyse. Tout ce que notre système fait (enchères, enchères, impressions, clics) est dépouillé de toutes les informations personnelles, agrégées en rangées agrégées anonymes et introduites dans Postgres à partir desquelles nous pouvons produire des tonnes de rapports.

Notre équipe utilise également l'EMR (hadoop, hive, presto, spark) et certains outils de «big data» que nous avons créés nous-mêmes.

Nous communiquons tous les composants soit via un bus pub-sub non persistant construit sur zmq, soit via des flux persistants utilisant Amazon Kinesis. Et bien sûr, nous utilisons et abusons beaucoup de S3, c'est vraiment imbattable pour le stockage. (De plus, il est bon marché et efficace, si vous pouvez concevoir votre application en fonction de ses points forts).

En quoi notre technologie diffère-t-elle de la technologie d'autres entreprises?

Je pense que ce qui rend notre infrastructure unique, c'est que nous nous soucions beaucoup de l'efficacité. De nombreuses entreprises utiliseront n'importe quel outil prédéfini sur lequel elles peuvent mettre la main (et que leurs ingénieurs connaissent) et essayer de marteler chaque clou avec, jetant de l'argent sur le problème lorsque les choses deviennent difficiles. Nous essayons d'éviter cela.

Nous avons créé pas mal d'outils personnalisés (même s'il y a déjà quelque chose dans l'écosystème open source qui pourrait faire l'affaire). Un bon exemple est la façon dont nous faisons l'agrégation pour les rapports. Au lieu d'utiliser l'un des outils de Big Data et d'y dépenser, au sens figuré, un camion d'argent, nous gérons cette tâche avec juste un peu d'intelligence et une architecture sur mesure qui pousse la tâche d'agrégation aussi près que possible des soumissionnaires. , réduisant les frais généraux au minimum. Ce système regroupe plus d'un demi-million de demandes par seconde avec seulement 2 (plutôt petites) machines et un tout petit peu d'aide de tous les systèmes qui y introduisent des informations. Et en temps quasi réel pour démarrer!

Sur quels projets sympas avez-vous travaillé (et avez-vous la liberté de discuter )

Personnellement, je pense que les projets les plus cool ont tendance à être de petits «micro-projets» de grande valeur. Même si je le nie jusqu'à mon dernier souffle, nous, les développeurs, sommes, dans nos cœurs, des ventouses pour les choses brillantes . Au moins jusqu'à ce qu'ils déçoivent, ce qu'ils font habituellement (voyez, je le nie déjà). Pour moi, il y avait pas mal de ces petits microprojets vedettes dans nos outils de suivi interne. Celui qui est brillant et assez amusant à regarder (et très utile) montre tous les serveurs et les anomalies qui s'y produisent en temps réel et d'une manière graphique et intuitive que vous pouvez vérifier en un coup d'œil.

Nous travaillons également sur celui qui fournira une visibilité sur ce qui se passe dans ce torrent de trafic tout en étant incroyablement cool ... mais les outils de surveillance interne ne sont cool que pour nous, alors oubliez tout ce que j'ai dit.

Entrer dans certains des GRANDS projets… nous sommes en train de repenser un tas de systèmes, éliminant les barrières à la convivialité, l'évolutivité et la maintenabilité. Cela a même été à l'origine d'examens de la «sagesse» maintenue depuis longtemps qui ne correspondaient pas à la réalité, stimulant les réécritures et les remaniements basés sur de nouvelles connaissances. Le projet a un énorme potentiel, ce qui le rend très cool. C'est aussi monstrueusement complexe, et cela le rend… Eh bien, aussi très cool Bref, quand ce sera fait, nous aurons ouvert les portes à des améliorations qui étaient vraiment difficiles auparavant, alors gardez un œil sur notre blog technologique, je ' Je suis presque sûr qu'il y aura beaucoup de billets de blog quand il sera prêt.

Vous êtes manifestement passionné par le travail que vous faites, y a-t-il autre chose qui a fait de Jampp le bon choix pour vous?

Je vois Jampp comme une solution pour maximiser le bonheur parce que c'est stimulant et intéressant, tout en étant détendu et informel. Nous passons la majeure partie de notre vie au travail, donc si vous ne pouvez pas socialiser confortablement au bureau et être défié intellectuellement et professionnellement en même temps, il n'y a aucune chance de croissance et de bonheur. Je n'aime pas m'ennuyer, pas un tout petit peu, c'est pourquoi Jampp me convient parfaitement.

Jampp Camp 2017

Vous êtes dans l'espace mobile depuis 3 à 4 ans… selon vous, qu'est-ce qui est le plus excitant / stimulant?

La chose qui vous frappe le plus est probablement son échelle. Vous ne vous en rendez pas compte dans un premier temps en technologie, car vous ne voyez que des demandes de traitement. Mais de nos jours, tout le monde a un appareil mobile et sur de nombreux marchés, les smartphones sont devenus les nouveaux PC. Le mobile conquiert le monde, et vous pouvez le ressentir à l'échelle de ce que nous faisons et de la quantité d'informations qui circule: nous traitons + 500 000 enchères par seconde.

Avez-vous une citation de motivation / entrepreneur préférée? Ou y a-t-il quelque chose que vous dites toujours?

Je ne mets pas beaucoup de stock dans les citations et les phrases de motivation. Je trouve leur corniness une déviation. Toute tentative de parler de motivation superficielle est démotivationnelle pour moi, elle déclenche un moment de «geez». Mais, peut-être parce que cela résonnait avec ce que je vivais à l'époque, ou peut-être parce que j'y ai trouvé un sens (probablement pas le même sens que l'auteur avait l'intention de le faire, mais peu importe) Je trouve que la citation suivante offre une description précise de quelque chose que je pense être vraiment important dans le travail de développement:

«Évitez le travail entraîné par l'entropie» - Minnen Ratta

L'entropie est à la fois une mesure du chaos et des informations. Je comprends que le «travail entraîné par l'entropie» est un travail qui suit le chemin de la moindre résistance, qui se déplace de manière aléatoire sans objectif clair, simplement parce qu'il est facile de se déplacer dans cette direction. Le développement de logiciels représente environ 80% de réflexion, 10% d'écriture et 10% de réécriture, avec une pincée d'inspiration. Personne ne devrait jamais commencer à écrire du code sans avoir d'abord défini le résultat final souhaité.

  • Hobbies: Enseigner de nouvelles choses à ma fille (c'est toujours génial) et jouer du piano.
  • Fait aléatoire: je lis régulièrement des articles de physique et d'astrophysique.
  • T-shirt Jampp préféré: T-shirt Jamppowski.
  • Conseils pour quelqu'un qui postule chez Jampp: Attendez-vous à être mis au défi.
  • Décrivez Jampp en 3 mots: 2 suffisent: «Fun stuff».

Dernière question… Comment finiriez-vous cette phrase: «Travailler pour une entreprise de technologie, c'est comme…»

Réparer le moteur d'une locomotive, remplacer les roues de la voiture, peindre chaque voiture d'une couleur différente et attacher de nouvelles voitures (que vous construisez en interne, bien sûr), tout pendant que le train se déplace, car il ne peut pas être arrêté. À 350 km / h, car c'est un TGV. Et d'une seule main, car vous avez besoin de l'autre pour tenir la tasse de café

À propos de Jampper Stories

Notre équipe est notre plus grand atout et nous sommes heureux de partager quelques-unes de leurs histoires. Si vous voulez en savoir plus sur ce que c'est que de travailler chez Jampp, suivez-nous sur Instagram à @gojampp ou visitez jampp.com/jobs pour trouver la bonne opportunité et voyez par vous-même