Snowflake Connection Provider
Autor
Marcus HeldHi,
Was haben Schneeflocken mit Softwareentwicklung zutun?
Komische Frage. Ich weiß
Aber ich musste sie mir die Tage stellen.
Ich durchforstete den Code.
Ich wollte verstehen welche Connection Pools wir haben und wie sie konfiguriert sind.
Dabei stolperte ich über einen Connection Pool, der hieß: SnowflakeConnectionProviders
Hä?
Was soll das sein? Und wie wird er verwendet?
Und warum ist es eine HashMap<String, IConnectionProvider>
?
Also: Find Usage
und weiterlesen.
Aha, in der init
wird eine kleine pool size konfiguriert. Aber wieso?
In welchem Szenario will ich denn einen connection pool der nur ca 1/6 der verfügbaren cores nutzt? 🤔
Ich konnte den Zweck dahinter nicht erkennen.
Und bevor ich weiter im Dunkeln stocher: Lieber jemanden fragen, statt unnötig Zeit verschwenden.
Also den Dev angerufen, der von der Thematik Ahnung hat.
Und die Erklärung kam sofort: Vor Jahren hat ein wichtiger Kunde verlangt, dass es ein Audit auf die Datenbankqueries geben soll.
Und wie es so oft passiert - man hat es für den einen Kunden eingebaut. Um das zu realisieren brauchte nur dieser Kunde einen anderen User und da der User pro Connection Pool konfiguriert wird musste dieser “Snowflake” eingebaut werden.
Aha!
Da kam also der Name her.
Es ist der leise Protest der Entwickler.
Die wollten die Ausnahme nämlich nicht.
Ich habe neulich schon darüber geschrieben, dass es keine gute Idee ist im Produktgeschäft auf individuelle Kundenwünsche einzugehen. Hier ist so ein Fall.
Zwei Dinge können wir hier lernen:
- Vorsicht mit individuellen Kundenwünschen. Es ist entweder ein Feature, oder won’t happen.
- Benenne deine Variablen und Methoden so, dass sie ihren Zweck beschreiben.
AuditingCustomerConnectionProvider
oder ähnliches hätte mir direkt klar gemacht worum es geht.
In diesem Sinne.
Rule the Backend,
~ Marcus