Skip to main content
BlogAperçu du cloudMon parcours Linode : D'un serveur Minecraft à un stage d'ingénieur

Mon parcours avec Linode : D'un serveur Minecraft à un stage en ingénierie

Mon parcours avec Linode : D'un serveur Minecraft à un stage en ingénierie

Bonjour ! Je m'appelle Gurleen et je suis stagiaire en génie logiciel chez Linode. J'étudie l'informatique et l'entrepreneuriat à l'université Drexel de Philadelphie, en Pennsylvanie. Au cours des cinq derniers mois, j'ai eu l'occasion d'être le premier stagiaire chez Linode, en travaillant avec l'équipe API.

La mission de Linode, qui consiste à rendre l'informatique en nuage simple, abordable et accessible à tous, me tient particulièrement à cœur. J'ai commencé à utiliser Linode en 8e année pour créer un serveur Minecraft (qui, soit dit en passant, est maintenant disponible sous la forme d'une application facile à utiliser en un clic), et aujourd'hui j'utilise Linode pour héberger de grandes applications. Dès le début de mon stage en mars, j'ai senti qu'il était important de poursuivre cette mission et d'apporter le cloud à une nouvelle génération de technologues.

Au cours de ma carrière chez Linode, j'ai eu l'occasion de travailler sur des projets internes et des projets orientés vers les clients :

Améliorer les temps de réponse des API

L'APIv4 est l'épine dorsale de nos offres de produits. Elle alimente notre gestionnaire de cloud et permet à nos clients d'avoir un accès programmatique à tous les produits et services de Linode. Cette année, nous nous sommes attachés à accélérer l'API afin de mieux servir nos clients, en particulier ceux qui se connectent depuis l'autre bout du monde. 

Avant de nous atteler à cette tâche, nos temps de réponse tournaient autour de 150 ms. C'est déjà très rapide, mais nous voulions encore améliorer les performances.

En tant que nouveau venu dans ce grand projet, j'ai pu y plonger avec un œil plus critique. Nous voulions trouver des optimisations qui permettraient de réaliser des économies sur l'ensemble de nos points d'extrémité (qui sont nombreux). J'ai commencé à réfléchir aux opérations qui se déroulent partout, et j'ai trouvé la solution : la journalisation !

Cela semblait un peu tiré par les cheveux au début, mais c'est logique quand on le mesure. L'écriture sur stdout, ainsi que l'enregistrement dans un fichier, est une opération synchrone dans Python, et elle peut prendre de 10 à 20 ms en fonction de la quantité de texte écrit. C'est une grande partie du temps passé sur une tâche qui peut être utile ou non.

J'ai exploré plusieurs options, telles que la journalisation asynchrone, mais j'ai trouvé que la réduction du niveau de journalisation serait la plus bénéfique. Notre environnement de développement reflète les conteneurs que nous utilisons en production, j'ai donc développé un test de stress en utilisant Locust et j'ai recueilli des données sur les temps de réponse. Le gain le plus important a été obtenu en changeant le niveau de journalisation de DEBUG, notre paramètre de production précédent, à INFO. Ce seul développement nous a permis d'obtenir une réduction moyenne de 15 millisecondes en production, même avec ~18k requêtes par minute ! 

L'amélioration des temps de réponse de l'API représentait une formidable opportunité d'améliorer l'expérience client pour tout le monde, en particulier en Europe et en Asie.  

Rassembler les métriques GitHub pour les managers

Les responsables de l'ingénierie logicielle chez Linode ont pour tâche de rassembler des données sur la productivité de leurs équipes. Ils utilisent les métriques GitHub, telles que les PR et les commits, pour obtenir certaines de ces informations. Cependant, cette tâche peut s'avérer laborieuse, car nous avons des dépôts à la fois dans notre serveur d'entreprise GitHub et des projets open-source sur GitHub comme le Linode Cloud Manager. Mon responsable, Samir, m'a demandé si je pouvais l'aider à accélérer la collecte de ces données.

Ce processus était mûr pour l'automatisation. J'ai commencé par explorer les offres d'API de GitHub et j'ai découvert que GitHub public et GitHub Enterprise partageaient le même schéma d'API, ce qui m'a permis de partager plus facilement la logique dans les deux cas. La fonctionnalité de recherche m'a permis d'obtenir les chiffres dont j'avais besoin en quelques appels d'API.

En l'espace d'une semaine, j'ai mis au point un prototype utilisable comme outil en ligne de commande. L'étape suivante consistait à fournir une interface web utilisable par nos managers. Compte tenu de la taille de ce projet, j'ai utilisé Vue.js pour faire le travail. Le résultat est une petite application auto-hébergée qui peut prendre des clés API, des listes d'équipes et une plage de dates, et les transformer en chiffres bruts pour que les managers puissent les transférer dans des outils comme Google Sheets. 

Les responsables ont déjà économisé de nombreuses heures de suivi de ces mesures, et je suis convaincue que mon programme continuera à apporter de la valeur même après la fin de mon stage.

Apportez votre propre certificat

De nombreux clients utilisent notre Object Storage pour héberger des sites web statiques. Par défaut, nous servons un certificat SSL sur le domaine linodeobjects.com qui nous appartient. Cependant, il n'existait aucun mécanisme permettant aux utilisateurs de servir leurs propres certificats s'ils le souhaitaient. L'un de mes mentors, Adam Mohammed, est venu me voir avec l'idée d'ajouter cette fonctionnalité. En tant qu'utilisateur de Object Storage , j'ai compris la valeur que cela apporterait à nos clients, et j'ai donc travaillé avec lui pour développer cette fonctionnalité.

Ma tâche consistait à créer l'interface API pour prendre en charge cette nouvelle fonctionnalité. La création d'une nouvelle fonctionnalité m'a permis de visiter tous les recoins du projet API. En tant que grande application web monolithique, il y a beaucoup de pièces mobiles à comprendre. Cela a également permis de combler les lacunes que j'avais encore dans la manière dont nos systèmes communiquent et fonctionnent ensemble.

L'accent mis sur la sécurité a constitué une part importante de ce projet. Traiter les secrets des clients n'est pas une tâche facile, et nous avons passé de nombreuses heures à planifier, discuter et tester chaque maillon de la chaîne pour nous assurer que nous fournissions un service sécurisé. Cela m'a donné une nouvelle perspective sur la conception des systèmes et m'a permis de me mettre à la place de l'utilisateur. Je suis impatient de voir les clients utiliser et apprécier cette fonctionnalité.

Ce travail est maintenant terminé. Vous pouvez maintenant télécharger un certificat et une paire de clés privées, et Object Storage les servira lorsqu'une requête arrivera sur votre bucket. C'est aussi simple que cela. Cette fonctionnalité s'inscrit dans le cadre de notre mission qui consiste à simplifier l'informatique en nuage. Nous vous donnons les outils dont vous avez besoin pour construire votre projet ou votre entreprise, sans aucune lourdeur.

Conclusion

J'ai commencé chez Linode en mars, non seulement en tant que premier stagiaire en ingénierie de la société, mais aussi en tant que premier employé à être embauché à distance en raison de la pandémie. Malgré cela, j'ai appris bien plus que je ne l'aurais imaginé. Mon équipe et mon service m'ont accueilli à bras ouverts et ont répondu à des questions que je ne soupçonnais même pas. Nous avons pu tirer le meilleur parti d'une situation bizarre parce que la culture de Linode est axée sur le soutien mutuel. Je n'aurais pas pu demander à travailler avec de meilleures personnes.

Comme vous l'avez vu, le travail que j'ai accepté n'était pas un "travail de stagiaire". Je travaillais sur des projets à fort impact, en contact avec les clients, dans le but de faire progresser la mission de l'entreprise. Au-delà des connaissances techniques, ce travail m'a inculqué un état d'esprit d'ingénieur orienté vers le client. Je ne peux acquérir ces compétences qu'en dehors de la salle de classe.

Ces derniers mois ont été passionnants, stimulants et gratifiants. Je suis très reconnaissante à Linode de m'avoir offert cette opportunité, et j'ai hâte de voir d'autres étudiants jouer ce rôle.


Commentaires

Laissez un commentaire

Votre adresse électronique ne sera pas publiée. Les champs obligatoires sont marqués d'un *.