Index Exchange ist ein Unternehmen, bei dem die Technik an erster Stelle steht. Unsere ersten sechs Mitarbeiter waren Engineers, und auch heute noch sind mehr als die Hälfte unserer Mitarbeiter in den Bereichen Technik und Produkt tätig.
Indem wir der Technik, der Effizienz und Skalierbarkeit Priorität einräumen, können wir ein Umfeld der Kreativität und Innovation fördern. So können unsere Engineers den Status quo selbstbewusst in Frage stellen, neue Wege zur Problemlösung finden und an ihrem Arbeitsplatz erfolgreich sein.
Als Chief Technology Officer von Index Exchange ist die Aufrechterhaltung und Bewahrung dieser Umgebung meine Priorität Nr. 1. Wenn ich jeden Tag ins Büro komme (das in den letzten 14 Monaten mein Schreibtisch zu Hause war), bemühe ich mich, die fünf Leitprinzipien eines Unternehmens, bei dem die Technik im Vordergrund steht, zu leben und zu verwirklichen, die uns helfen, Prioritäten zu setzen, zu skalieren und zu optimieren. Und ich ermutige mein Team, das Gleiche zu tun.
Hier sind die fünf Prinzipien, die unsere technische Vision bei Index Exchange leiten, in keiner bestimmten Reihenfolge:
1. Kontinuierliche Neuerfindung: den Status quo in Frage stellen und die Zukunft gestalten
Tech Stacks, Hardware und technische Verfahren entwickeln sich ständig weiter. Wir sind ein Arbeitsplatz, der sich mit diesen Veränderungen weiterentwickelt und sich ständig neu erfindet, um sicherzustellen, dass unsere Teams immer mit den neuesten Technologien und Tools arbeiten, die sie und ihre Arbeit unterstützen.
Um das Potenzial unserer Exchange zu maximieren und effektiver skalieren zu können, haben wir uns kürzlich entschlossen, von Perl auf Go umzusteigen. Die gleichzeitige Verarbeitung ist in einer Multi-Thread-Programmiersprache wie Go viel einfacher, so dass wir die Herausforderung des C10K-Problems angehen können (etwas, das wir in Perl nicht tun konnten). Darüber hinaus ist Go von entscheidender Bedeutung, wenn es darum geht, Tech Debt zu beseitigen und die gesamte Entwicklungserfahrung zu verbessern, von der schnellen Codebereitstellung bis zur robusten Testautomatisierung. Die Umschreibung unserer Exchange in Go hat es uns auch ermöglicht, bessere Staging-Umgebungen zu bauen und unser immenses Wachstum des Supply zu bewältigen. Allein im letzten Jahr haben wir die Zahl der von uns verarbeiteten Slot Requests mehr als verdoppelt und kommen damit auf 210 Milliarden Requests pro Tag, die 100 Terabyte an Audit-Daten erzeugen. Zum Vergleich: Das ist genug, um 12.000 4K-Filme zu speichern!
Wir nehmen transformative Entscheidungen wie diese nicht auf die leichte Schulter, aber wir wissen, dass wir unseren Engineers den bestmöglichen Tech Stack zur Verfügung stellen müssen. Wir wissen auch, dass Go wahrscheinlich nicht die letzte Sprache sein wird, in der wir programmieren, um diesen Ansatz beizubehalten. Wir werden weiterhin alle Optionen für unsere Programmiersprachen prüfen und bei Bedarf Änderungen vornehmen, um sicherzustellen, dass wir so schnell vorankommen, wie wir es uns wünschen.
Wir sind auch von Natur aus ein agiler Arbeitsplatz, der von einer engagierten Gruppe von Vollzeit-Agile-Coaches geleitet wird. Entscheidend für die Arbeitsweise unserer Engineers ist, dass unser Ziel nicht darin besteht, agil zu implementieren, sondern agil zu sein. Mit einem kombinierten Ansatz aus schnellem Lernen, kontinuierlicher Verbesserung und der Befähigung von Teams arbeiten unsere Agile Coaches mit unseren Teams zusammen und helfen ihnen, agile Prinzipien zu lernen, zu verstehen und zu befolgen. Unsere Agile Group, die für ein Unternehmen unserer Größe von unschätzbarem Wert ist, betont die Bedeutung von Priorisierung, Effizienz und Reflexion, damit wir mit jedem einzelnen Projekt effizienter werden.
2. Aufbau von Spitzenteams und Talenten: Förderung von Lernen, Entwicklung und Zusammenarbeit
Index Exchange ist stolz auf seine transparente und vernetzte Kultur, und unser Team aus Engineers ist da nicht anders. Wir legen großen Wert darauf, einen Raum für Lernerfahrungen und Fehler zu schaffen, und ermutigen unsere Engineers, auch über die Erwartungen ihrer täglichen Aufgaben hinaus zu lernen. Wir konzentrieren uns auch auf die Menschen, die unser Unternehmen und unsere Teams ausmachen. Wir sind stets für sie da, indem wir ihnen zuhören, mit ihnen zusammenarbeiten und ihnen echte Fürsorge entgegenbringen.
Hier sind einige Möglichkeiten, wie wir als Unternehmen, bei dem die Technik im Vordergrund steht, das Lernen fördern:
- Engineers werden ermutigt, ein Buch zu kaufen, einen Kurs zu belegen oder ein Event zu besuchen. Wenn jemand eine Konferenz über maschinelles Lernen besuchen möchte, kann er ein Ticket kaufen und daran teilnehmen. Wir möchten, dass sich unsere Teams befähigt fühlen, sich auf die Weiterbildung zu konzentrieren und wichtige Erkenntnisse mit dem Rest des Teams zu teilen.
- Wir verfügen über eine umfangreiche Bibliothek mit internen Schulungsressourcen für unser Team. Als wir auf Go umgestiegen sind, haben wir William Kennedy von Ardan Labs hinzugezogen, einen der weltweit führenden Experten für diese Programmiersprache. Er führte ein umfangreiches Schulungsprogramm für unsere Engineers durch und brachte uns die Syntax und die Paradigmen von Go bei. Unsere Engineers haben auch Zugang zu einer Fülle von LinkedIn Learning-Kursen zu Themen wie Kubernetes, Kafka, Agile und mehr.
- Wir veranstalten jedes Jahr einen internen Hackathon, eine Gelegenheit für unsere Teams, dringende technologische Probleme in unserer Branche zu kreieren, zu entwickeln und zu lösen. Der Index-Hackathon fördert Kreativität und Innovation und bringt unsere Engineers zusammen, um ein größeres technisches Problem im Geiste der Zusammenarbeit zu lösen (wobei auch ein freundschaftlicher Wettbewerb stattfindet).
Die Investition in unsere Mitarbeiter und die Förderung der Zusammenarbeit ist eines der wichtigsten Dinge, die wir tun können, um ein Umfeld zu schaffen, in dem sich unsere Engineers in ihrem Lernen, ihrer Entwicklung und ihrem Wachstum unterstützt fühlen. Da es nicht an Ressourcen mangelt, um ihre Fähigkeiten zu erweitern und ihre Karriere voranzutreiben, sind unsere Teams vom ersten Tag an für den Erfolg gerüstet.
3. Intensives Verständnis über die Exchange: Verbesserung der Effizienz durch Bewältigung großer Probleme
Wie bereits erwähnt, verarbeitet unsere Exchange täglich eine astronomische Menge an Daten (derzeit 210 Milliarden Auktionen, mehr als 1.000 Milliarden Bid Requests und 100 Terabyte, um genau zu sein), und das ist das Herzstück unserer Arbeit. Tatsächlich verarbeitet unsere Exchange in einer Stunde mehr Transaktionen als Visa an einem ganzen Tag. Genau aus diesem Grund stellt unsere Exchange die interessantesten und aufregendsten Probleme, die Engineers heute in der Branche angehen können.
Die Exchange ist eine lebende, atmende Maschine, die jeden Tag komplizierter wird. Aufgrund dieser Komplexität überprüfen wir die Technologie regelmäßig und nutzen unsere umfangreichen Daten, um ihre Dynamik besser zu verstehen, damit sie mit höchster Effizienz arbeiten kann.
Die Größenordnung, in der unsere Exchange operiert, erfordert untypische Lösungen und unkonventionelle Denker in unserem Team. Wir sind immer auf der Suche nach Möglichkeiten, die Effizienz zu steigern und letztlich die Dynamik der von uns durchgeführten Auktionen zu optimieren.
Hier finden Sie einige der komplexen Herausforderungen, die unsere Teams in letzter Zeit gelöst haben:
- Einsatz von maschinellem Lernen zur Optimierung der Auktionsdynamik: Als COVID-19 aufkam und die Welt sich auf die Arbeit von zu Hause aus konzentrierte, verzeichneten wir sofort einen enormen Anstieg des Verkehrs auf unserer Exchange. Um die Skalierung fortzusetzen und gleichzeitig effizienter zu werden, wechselten wir zu einem überwachten maschinellen Lernansatz.
- Behebung der Latenz in unserem TCP Connection Pooling Subsystem: Um die Exchange zu optimieren, wird jede Ebene des Auktionsprozesses analysiert, denn selbst eine geringe Effizienz kann eine beträchtliche Dollarsumme ausmachen, wenn sie milliardenfach am Tag wiederholt wird. Dies geht über die Analyse unseres eigenen Codes hinaus und kann einen Blick in den Network Stacks erfordern, um die Interaktionen auf Kernel-Ebene zwischen unseren Systemen und unseren Kunden der Demand-Side Platform (DSP) zu diagnostizieren. Als wir die Vermutung aufstellten, dass unser TCP Connection Pooling Subsystem verlangsamt werden könnte, wenn das System unserer nachgelagerten DSP-Kunden eine Verschlechterung erfährt, haben wir unser System instrumentiert, um die Unterhaltungen auf der TCP/IP-Schicht zu analysieren. In diesen Paketen entdeckten wir Latenzmuster in bestimmten DSP-Systemen, die mit der relativen Inaktivität einzelner TCP-Sockets zusammenhängen. Es wurde festgestellt, dass die Verwendung eines relativ ruhenden Sockets die Latenz erhöht, was sich in etwas längeren Auktionszeiten oder Auktions-Timeouts äußern kann. Indem wir die Ursache für diese Latenzfälle identifizierten, konnten wir sie vorhersagen und vermeiden.
4. Wir arbeiten mit unseren eigenen Ressourcen: Latenz minimieren und optimierte Infrastruktur
Eines unserer wichtigsten Unterscheidungsmerkmale als ein Unternehmen, bei dem die Technik im Vordergrund steht, ist, dass wir unsere eigenen Rechenzentren betreiben und vorrangig in diese Rechenzentren investieren, um Transaktionen sicher und unabhängig zu verarbeiten. Der Besitz und Betrieb unserer eigenen Hardware hilft uns, Latenzzeiten zu minimieren und gleichzeitig jeden CPU-Zyklus optimal zu nutzen. Außerdem haben wir so noch mehr Kontrolle über unseren Betrieb, unsere Daten und unser geistiges Eigentum.
Wir haben vor kurzem unser erstes offizielles Rechenzentrum – IX1 in Toronto – fertiggestellt. IX1 ist das Ergebnis der Zusammenarbeit mehrerer Teams und beherbergt nun viele unserer wichtigsten Dienste für Big Data, Überwachung, Telemetrie und Orchestrierung. Durch die Verlagerung dieser Dienste von einem anderen Rechenzentrum in unser eigenes haben wir die Kapazität versechsfacht und können nun mehr als 100 Server-Racks unterbringen, wodurch wir den massiven Umfang unseres Betriebs besser unterstützen können.
Der Betrieb unserer eigenen Ressourcen bringt zwar neue Herausforderungen mit sich (zum Beispiel die effiziente Nutzung unseres gesamten Clusters und die Unterstützung von Engineers, die ihren Code skalieren möchten), aber wir haben auch in Technologien wie Kubernetes investiert, um all diese Leistung optimal nutzen zu können und gleichzeitig in die Erfahrung unserer Engineers zu investieren.
Da wir unsere eigenen Ressourcen verwenden, können wir sowohl unsere Hardware als auch unsere Software füreinander optimieren. Wir wissen, dass unsere Software auf unseren Servern am besten läuft, und unsere Server sind speziell für unsere Software ausgelegt. Dadurch können unsere Engineers die Beziehung zwischen den beiden besser verstehen, was uns in unserem Bestreben, Latenzzeiten zu beseitigen und unsere Infrastruktur zu optimieren, immer einen Schritt weiter bringt.
5. End-to-End-Verantwortung: Fokus auf eigene Ergebnisse und Teamverbesserung
Unsere Engineers haben die volle Verantwortung für ihre Projekte, von der Idee bis zur Produktion und darüber hinaus. Das beginnt schon vor dem Schreiben des Codes durch enge Zusammenarbeit und Brainstorming mit unseren Produktteams, damit unsere Engineers nicht nur das Was, sondern auch das Warum ihrer Arbeit verstehen. Das Verständnis des Business Case unserer Projekte ist während des gesamten Entwicklungs-, Test-, Staging- und Produktionsprozesses entscheidend.
Durch die Förderung eines Umfelds, das die Eigenverantwortung fördert, können sich unsere Teams darauf konzentrieren, gute Ergebnisse zu erzielen und gleichzeitig Chancen erkennen. Wir suchen ständig nach den Ursachen für Erfolge und Misserfolge, um unsere Arbeitsweise als Unternehmen, bei dem die Technik im Vordergrund steht, zu verbessern. Bei der Eigenverantwortung geht es nicht nur darum, Fehler in der Produktion oder Probleme bei Produktionsvorfällen zu beheben, sondern auch darum, die Art und Weise zu optimieren, wie wir unsere Projekte durchführen, während wir an ihnen arbeiten und proaktiv vorgehen.
Eines unserer Teams hat vor kurzem einen Prozess namens Operational Excellence eingeführt, um den in der Produktion laufenden Code zu überwachen. Sie bestimmten ein Teammitglied, das die Leistung des Codes in der Produktion während eines Sprints bewertete und seine Ergebnisse dem Rest des Teams vorstellte. Das Team kam dann zusammen, um Fehler zu beheben und festzustellen, ob Effizienzsteigerungen möglich sind, um die Ausführung des Codes in der Produktion wirklich selbst in der Hand zu haben.
Als Ergebnis von Operational Excellence hat das Team mehrere wichtige Ergebnisse erzielt, darunter:
- Rückgewinnung von 40 % des Arbeitsspeichers und 15 % des Festplattenspeichers in allen unseren Aerospike-Clustern weltweit
- Verbesserte Service-Level-Überwachung unserer Aerospike-Verbindungen. Zuvor war es nicht möglich festzustellen, ob ein Anstieg der Verbindungen auf erhöhten Datenverkehr oder auf eine ineffizient verwaltete Verbindung zur Datenbank zurückzuführen war.
- Die Identifizierung eines umfassenderen CPU-Problems auf der Exchange aufgrund einer verstärkten Überwachung der Anzahl der von uns durchgeführten Datenbank-Schreibvorgänge und der Geschwindigkeit, mit der wir sie durchführen
Seitdem haben wir Operational Excellence auf alle unsere Geschäftsbereiche ausgeweitet, um das Konzept der Gesamtverantwortung und der Servicequalität zu festigen. Durch diesen Prozess der Eigenverantwortung von der Konzeption bis zur Produktion sind unsere Teams in der Lage, sowohl innerhalb als auch mit anderen Organisationen effektiv zusammenzuarbeiten, um bessere Ergebnisse zu erzielen.
Werden Sie Teil unseres Unternehmens, bei dem Technik an erster Stelle steht
Jede dieser Leitprinzipien, die unsere technische Vision ausmachen, ist entscheidend für unseren Erfolg als Unternehmen, bei dem die Technik im Vordergrund steht. Unsere Teams legen großen Wert auf die Förderung von Innovation, kontinuierliches Wachstum und Lernen sowie die Unterstützung des gesamten Teams. Wir sind immer auf der Suche nach Gleichgesinnten, die uns auf unserem Weg zum bevorzugten Arbeitsplatz für Engineers und damit verbundene Funktionen begleiten.
Wenn dies nach der Art von Umfeld klingt, in dem Sie nicht nur arbeiten, sondern auch gedeihen möchten, sehen Sie sich bitte unsere offenen Stellen an. Ich kann es kaum erwarten, zu sehen, was Sie in unser Team einbringen können.
Back to blog