PostgreSQL Optimalisatie Specialist - Leasemaatschappij
Deze wereldwijd opererende leasemaatschappij is al enige tijd bezig met de bouw van een nieuw klant- en auto-beheersysteem. Hierbij worden ingekochte applicaties en zelf gebouwde applicaties geïntegreerd tot één geheel. De data wordt hierbij opgeslagen in meerdere PostgreSQL databases, verspreid over meerdere clusters. Vanwege de op DevOps gebaseerde werkwijze met geautomatiseerde ontwikkelstraat, zijn deze databases en clusters in veelvoud uitgevoerd. Hierbij kunnen ontwikkel, test en acceptatie omgevingen automatisch ververst worden met data die gebaseerd is op live-productie data, geanonimiseerd waar nodig.
De organisatie is zich er van bewust dat de processen op database niveau verre van optimaal werken. Hierdoor worden onnodig zware virtuele servers ingezet en is de verwachting dat bestaande servers op korte termijn nog zwaarder moeten worden. Dit wil de opdrachtgever verbeteren om een verbeterde klant- en medewerkertevredenheid te realiseren en de kostengroei onder controle te krijgen.
Aan mij de opdracht om de situatie te onderzoeken en verbeteringen voor te stellen: "Ga niet wachten op specifieke opdrachten of vragen, maar duik in het systeem en kom met verbeteringen.". Niet de meest concrete opdracht, maar juist daardoor een hele mooie, met mooie resultaten.
Technische resultaten
In de twee jaar dat ik bij deze opdrachtgever actief ben geweest, zijn de volgende technische resultaten opgeleverd:
- Geautomatiseerd onderhoud, waardoor bloat en statistieken beter onder controle blijven.
- Betere server configuratie waardoor queries, maar ook de standaard onderhoudsprocessen efficiënter kunnen lopen.
- Betere initiële setup van nieuwe servers en ververste ontwikkel-, test- en acceptatie servers waardoor de databases een betere start krijgen
- Datamodel verbeteringen in de vorm van:
- efficiëntere data-opslag,
- efficiëntere indexen,
- identificatie en opschonen van ongebruikte indexen
- Proces verbeteringen, in samenwerking met architecten en applicatie ontwikkelaars, door:
- inefficiënt gebouwde custom-queries te verbeteren,
- betere interactie tussen applicatie code (Java) en SQL,
- andere opbouw van applicatie code waardoor het SQL framework betere SQL genereert,
- betere configuratie van de connection-pooler,
- versnelde vervanging van oude connection-pooler door meer efficiënte nieuwe variant,
- verbeterde aandacht voor de minder bekende index-typen die in specifieke situaties beter werken.
- PostgreSQL statistieken en meetwaarden worden structureel ingelezen in een permanente opslag voor betere monitoring van het systeem.
- Dashboards die bruikbaar zijn voor operationeel beheer, ontwikkelaars en architecten om knelpunten efficient te analyseren.
- Automatische alerts op veel voorkomende knelpunten en indicatoren.
- Opleiden / coachen van operationeel beheer, ontwikkelaars en architecten rond het vinden en oplossen van knelpunten.
Functionele resultaten
De technische verbeteringen hebben op gebied van gebruikerservaring en kosten tot de volgende verbeteringen geleid:
- Voorheen moesten gebruikers regelmatig lang wachten op het verversen van een pagina of het ophalen van informatie en was het "onwerkbaar traag" bij grote hoeveelheden gegevens. Dit is gereduceerd tot standaard een "vloeiende en vlotte ervaring", met "aanvaardbare doorlooptijd bij grote hoeveelheden".
- Doorlooptijden van de maandbatch zijn ingekort van "te lang en we vrezen voor de toekomst" naar "ruim binnen gewenst".
- Een vol lopende data disk kon al snel fors opgeschoond worden en geautomatiseerd schoon gehouden worden.
Hierdoor was de geplande extra investering in meer dataopslag niet nodig. Zelfs twee jaar later voldeed de oorspronkelijke schijf nog ruim. Een indirecte kostenreductie. - Hoewel de te verwerken data-hoeveelheden fors groter zijn geworden en heeft dit niet geleid tot een zwaardere server of grotere disk, een indirecte kostenreductie.
Kerncompetenties
- PostgreSQL Database Tuning, Performance en Optimalisatie van het database cluster
- PostgreSQL beheer in een Azure omgeving
- Verzamelen en visualiseren van PostgreSQL gerelateerde metrics middels Open Source oplossingen:
- Grafana
- Prometheus
- albertodonato/query-exporter
- Kubernetes & Docker: Opzetten en onderhouden actieve Kubernetes Pods
- Github versiebeheer en gebruik van bestaande release train
- Scrum, Agile en Lean werkwijzen
- Kennis overdracht met tot doel ontwikkelaars en beheerders meer “performance gericht” te werken.