Zum Inhalt springen
BlogCloud ÜbersichtenMeine Linode-Reise: Von einem Minecraft-Server zu einem Ingenieurspraktikum

Meine Reise mit Linode: Vom Minecraft Server zum Ingenieurspraktikum

Meine Reise mit Linode: Vom Minecraft Server zum Ingenieurspraktikum

Hallo! Mein Name ist Gurleen, und ich bin ein Software Engineering Praktikant bei Linode. Ich studiere Informatik und Entrepreneurship an der Drexel University in Philadelphia, Pennsylvania. In den letzten fünf Monaten hatte ich die Gelegenheit, der erste Praktikant bei Linode zu sein und mit dem API Team zu arbeiten.

Linodes Mission, Cloud Computing einfach, erschwinglich und für jedermann zugänglich zu machen, liegt mir sehr am Herzen. Ich habe in der 8. Klasse mit Linode angefangen, um einen Minecraft Server hochzufahren, der übrigens jetzt als einfach zu bedienende One-Click-App verfügbar ist. Heute verwende ich Linode für das Hosting großer Anwendungen. Seit Beginn meines Praktikums im März hielt ich es für wichtig, diese Mission fortzusetzen und die Cloud einer neuen Generation von Anwendern näher zu bringen.

Während meiner Zeit in Linode hatte ich die Gelegenheit, sowohl an internen als auch an kundenorientierten Projekten zu arbeiten:

Verbesserung der API-Antwortzeiten

API v4 ist das Rückgrat unseres Produktangebots. Die Schnittstelle ist die Grundlage für unseren Cloud Manager und ermöglicht unseren Kunden den programmatischen Zugriff auf alle Produkte und Dienstleistungen von Linode. In diesem Jahr haben wir uns sehr darauf konzentriert, das API schneller zu machen, um unsere Kunden besser bedienen zu können, insbesondere diejenigen von der anderen Seite der Welt. 

Bevor wir diese Aufgabe übernahmen, bewegten sich unsere Antwortzeiten um 150 ms. Das ist schon schnell, aber wir wollten trotzdem noch etwas mehr Leistung herausquetschen.

Als Neueinsteiger in dieses große Projekt konnte ich mir einen kritischen Blick leisten. Wir wollten Optimierungen finden, die in allen unseren Endpunkten (von denen es viele gibt) zu Einsparungen führen würden. Ich fing an, darüber nachzudenken, welche Operationen überall stattfinden, und dann fiel mir ein: Logging!

Zuerst schien es etwas weit hergeholt, aber es macht Sinn, man kann es sogar messen. Sowohl das Schreiben in stdout als auch das Protokollieren in eine Datei ist in Python eine synchrone Operation, die je nach der Menge des geschriebenen Textes zwischen 10 und 20 ms dauern kann. Das ist ein großer Teil der Zeit, die für eine Aufgabe aufgewendet wird, die nützlich sein kann oder auch nicht.

Ich untersuchte verschiedene Optionen, wie z.B. asynchrone Protokollierung, aber ich fand, dass eine Reduzierung des Protokollierungsgrades den größten Nutzen bringen würde. Unsere Entwicklungsumgebung spiegelt die Container wider, die wir in der Produktion verwenden, also entwickelte ich einen Stresstest mit Locust und sammelte Daten zur Reaktionszeit. Der größte Gewinn ergab sich aus der Umstellung der Protokollierungsebene von DEBUG, unserer früheren Produktionseinstellung, auf INFO. Allein diese Entwicklung brachte uns eine durchschnittliche Reduzierung um 15 Millisekunden, selbst bei ~18k Anfragen pro Minute! 

Die Verbesserung der API-Antwortzeiten war eine erstaunliche Gelegenheit, das Kundenerlebnis für alle, insbesondere in Europa und Asien, zu verbessern.  

Sammeln von GitHub Metriken für Manager

Software Engineering Manager von Linode haben die Aufgabe, Daten über die Produktivität ihrer Teams zu sammeln. Für einige dieser Informationen verwenden sie GitHub Metriken wie z.B. PRs und Commits. Dies kann jedoch eine mühsame Aufgabe sein, da wir Repos sowohl auf unserem GitHub Unternehmensserver als auch in Open Source Projekten auf GitHub wie dem Linode Cloud Manager haben. Mein Manager, Samir, fragte mich, ob ich bei der Beschleunigung dieser Datensammlung behilflich sein könnte.

Dieser Prozess war reif für die Automatisierung. Ich begann damit, die API-Angebote von GitHub zu untersuchen, und fand heraus, dass sowohl das öffentliche GitHub als auch GitHub Enterprise dasselbe API-Schema verwenden, wodurch es für mich einfacher wurde, die Logik für beide Fälle zu nutzen. Die Suchfunktionalität ermöglichte es mir, die von mir benötigten Nummern mit nur wenigen API-Aufrufen zu erhalten.

Ich habe innerhalb einer Woche einen Proof of Concept erstellt, der als Kommandozeilen Tool nutzbar war. Der nächste Schritt war die Bereitstellung einer Webschnittstelle, die unsere Manager nutzen konnten. Für dieses Projekts verwendete ich Vue.js. Das Ergebnis war eine kleine, selbst gehostete App, die API-Schlüssel, Teamlisten und einen Datumsbereich aufnehmen und in rohe Zahlen umwandeln kann, die von den Managern in Tools wie Google Sheets übernommen werden können. 

Manager haben bereits viele Stunden gespart, um diese Metriken zu orten, und ich bin zuversichtlich, dass mein Programm auch nach meinem Praktikum weiterhin einen Nutzen bringen wird.

Bringen Sie Ihr eigenes Zertifikat mit

Viele Kunden nutzen unseren Objektspeicher-Service für das Hosting statischer Websites. Standardmäßig stellen wir ein SSL Zertifikat auf linodeobjects.com bereit. Es gab jedoch keinen Mechanismus, mit dem Anwender ihre eigenen Zertifikate anbieten konnten, wenn sie das wollten. Einer meiner Mentoren, Adam Mohammed, kam zu mir mit der Idee, diese Funktionalität hinzuzufügen. Da ich selbst Benutzer von Objektspeicher war, verstand ich, was dies für unsere Kunden bringen würde, also arbeitete ich mit ihm zusammen.

Meine Aufgabe bestand darin, die API-Schnittstelle zur Unterstützung dieser neuen Funktion zu erstellen. Es ermöglichte mir einen Rundgang durch jede Ecke des API-Projekts. An dieser großen, monolithischen Webanwendung gibt es eine Menge beweglicher Teile. Es brachte mir auch bei, wie unsere Systeme kommunizieren und zusammenarbeiten.

Ein Schwerpunkt dieses Projekts lag auf der Sicherheit. Der Umgang mit Kundengeheimnissen ist keine leichte Aufgabe, und wir haben viele Stunden damit verbracht, jedes Glied in der Kette zu planen, zu diskutieren und zu testen. So sorgten wir dafür, dass wir einen sicheren Service bieten. Es hat mir eine neue Perspektive auf das Systemdesign eröffnet und mir ermöglicht, mich in die Lage des Benutzers zu versetzen. Ich freue mich, dass die Kunden diese Funktion nutzen und genießen.

Diese Arbeit ist nun abgeschlossen. Sie können jetzt ein Zertifikat und ein privates Schlüsselpaar hochladen. Objektspeicher wird es Ihnen gegebenenfalls zur Verfügung stellen. So einfach ist das. Diese Funktion passt gut zu unserer Mission, Cloud Computing einfach zu machen. Wir geben Ihnen die schlanken Tools an die Hand, die Sie für Ihr Projekt oder Geschäft benötigen.

Fazit

Ich habe im März bei Linode angefangen, und zwar nicht nur als erster technischer Praktikant des Unternehmens, sondern auch als erster Mitarbeiter, der aufgrund der Pandemie aus der Ferne mit an Bord ist. Trotzdem habe ich viel mehr gelernt, als ich mir je hätte vorstellen können. Mein Team und meine Abteilung empfingen mich mit offenen Armen und beantworteten Fragen, von denen ich nicht einmal wusste, dass ich sie hatte. Wir konnten das Beste aus einer merkwürdigen Situation machen, weil es in der Kultur von Linode darum geht, sich gegenseitig zu unterstützen. Ich hätte mir keine besseren Leute für die Zusammenarbeit wünschen können.

Wie Sie gesehen haben, war meine Arbeit keine typische "Praktikantenarbeit". Ich arbeitete an anspruchsvollen, kundenorientierten Projekten mit dem Ziel, die Mission des Unternehmens voranzubringen. Über das technische Wissen hinaus vermittelte mir diese Arbeit eine kundenorientierte technische Denkweise. Diese Fähigkeiten kann ich nur außerhalb des Klassenzimmers erwerben.

Die vergangenen Monate waren aufregend, herausfordernd und lohnend. Ich bin Linode so dankbar dafür, dass es mir diese Gelegenheit geboten hat, und ich kann es kaum erwarten, andere Studenten in dieser Rolle zu sehen.


Kommentare

Kommentar abgeben

Ihre E-Mail Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit *gekennzeichnet