---
Einführende Gedanken zum Problem der Unternehmenssuche
Ein kürzlich geführtes Gespräch in unserem Slack-Kanal war für uns der Ausgangspunkt. Einer der Entwickler brachte das Thema der langsamen Unternehmenssuche zur Sprache, was bei den Nutzern Unmut hervorrief. Dies war besonders auffällig, als Recruiter versuchten, schnell passende Kandidaten zu finden, was direkt ihre Effizienz beeinflusste.
Warum das wichtig ist
Das Problem der Unternehmenssuche betraf direkt unser Matching-Team, das für die erfolgreiche Verbindung zwischen Kandidaten und Arbeitgebern verantwortlich war. Wir wussten, dass eine langsame Suche zu einem Verlust potenzieller Kunden und einer Verschlechterung des Nutzererlebnisses führen kann. Recruiter, die nicht schnell die benötigten Ergebnisse erhielten, begannen, nach Alternativen zu suchen, was für uns inakzeptabel war.
Konkrete Probleme bei der Suche
Eines Tages bemerkte ein Teammitglied während eines Tests, dass die Suche nach Unternehmens-Tags bis zu 15 Sekunden in Anspruch nahm. Diese Zeit verlängerte sich, wenn die Datenbank stark belastet war. Beispielsweise, wenn ein Recruiter eine Anfrage zur Suche nach Unternehmen mit bestimmten Tags stellte, reagierte das System manchmal nicht rechtzeitig, und die Nutzer erhielten eine Fehlermeldung. Dies hinterließ einen schlechten Eindruck von der Plattform.
Erste Lösungsversuche
Zunächst beschlossen wir, die Datenbankabfragen zu optimieren, jedoch brachte dies nicht die erwarteten Ergebnisse. Wir verbesserten die Indizes, aber die Antwortzeit änderte sich kaum. Letztendlich erkannten wir, dass eine bloße Optimierung der Abfragen das Problem nicht lösen würde, und begannen, nach anderen Ansätzen zu suchen.
Technische Lösung – Tags und Cache
Wir entschieden uns, ein System zur Tagging- und Caching-Implementierung einzuführen, was die Antwortzeit erheblich verbesserte. Tags ermöglichten es uns, Unternehmen in Kategorien zu gruppieren, während das Caching die Serverlast reduzierte. Hier ist ein Beispiel für die Implementierung des Cachings:
cache = {}
def get_companies_with_tags(tags):
cache_key =
---