Een eenvoudigere manier om oude Python-code gezond en veilig te houden

Een eenvoudigere manier om oude Python-code gezond en veilig te houden
Een eenvoudigere manier om oude Python-code gezond en veilig te houden

Python heeft zijn voor- en nadelen, maar wordt toch veel gebruikt. Python wordt bijvoorbeeld vaak gebruikt bij het verwerken van gegevens, zelfs als er meer geschikte talen zijn om uit te kiezen.

Waarom? Nou, Python is relatief eenvoudig te leren. Iemand met een wetenschappelijke achtergrond kan Python veel sneller oppikken dan bijvoorbeeld C. De inherente benaderbaarheid van Python zorgt echter ook voor een aantal problemen.

Telkens wanneer Python wordt bijgewerkt, betekent dit een grote refactoring-workload, die vaak slecht of helemaal niet wordt afgehandeld. Dat leidt tot slechte prestaties en beveiligingsproblemen. Maar misschien is er een betere manier: een tool om je Python-taken dag in dag uit soepel en veilig te laten verlopen. Laten we kijken.

Het is traag, maar het doet zijn werk

Python is niet de snelste taal die er is, maar ondanks de relatieve nadelen, zul je het vaak zien worden gebruikt voor intensieve gegevensverwerkingsoperaties. Denk aan machine learning, computervisie of zelfs pure wiskunde in high-performance computing (HPC)-systemen.

Dus, ondanks zijn prestatiereputatie, worden zeer zware workloads vaak afgehandeld met Python-code, simpelweg omdat het zo praktisch in gebruik is. Als je een wetenschappelijke of wiskundige achtergrond hebt, kun je relatief eenvoudig Python leren en je eigen code produceren die het werk zal doen.

Maar zoals vaak het geval is, kan iets dat toegankelijk is ook veel risico’s met zich meebrengen. Onervaren programmeurs die Python-code schrijven, kunnen moeite hebben met taken die meer ervaren programmeurs als vanzelfsprekend beschouwen.

Refactoring is een gedoe… en een risico

Zoals alle programmeertalen ondergaat Python regelmatig updates. De verschuiving van Python 2.7 naar Python 3.0 bracht bijvoorbeeld een hele reeks features en verbeteringen met zich mee. Het betekent ook dat alles dat voor Python 2.7 is geschreven, moet worden “gerefactord” voor Python 3.0 vanwege veranderingen in de manier waarop Python werkt.

Refactoring verwijst naar de manier waarop programmeurs een codebasis aanpassen om te reageren op veranderingen in de omgeving, zoals een wijziging in de taalversie, of gewoon om bestaande code in een of andere vorm te verbeteren. Zonder refactoring betekent een verschuiving van Python 2.7 naar Python 3.0 vaak dat de code voor Python 2.7 gewoon niet zo goed meer werkt, of zelfs helemaal niet.

En hier is het probleem: de gebruikers die de originele Python-code hebben geschreven, hebben misschien niet de expertise om te refactoren. Het zijn tenslotte vaak wetenschappers – en geen ervaren programmeurs. Wanneer onervaren programmeurs code proberen aan te passen, is er een reëel risico dat de prestaties achteruitgaan en dat er bugs binnensluipen – soms alleen zichtbaar als er een randgeval verschijnt. Kleine bugs worden een groot probleem wanneer Python-code wordt gebruikt voor kritieke, 24/7 doeleinden, zoals wetenschappelijke analyse.

Refactoring kan ook leiden tot onverwachte prestatievermindering. Zelfs als het slechts een prestatiehit van 5% is, kan een slecht uitgevoerde code-update snel veel hogere rekeningen veroorzaken op dure HPC-platforms die betalen voor gebruik.

Vasthouden aan oude Python? Dat is een nog groter risico

Als je nadenkt over het harde werk en de risico’s die gepaard gaan met het aanpassen van code, is het geen verrassing dat gebruikers er vaak voor kiezen om gewoon bij oudere versies van Python te blijven. Het uitvoeren van bestaande code op een verouderde versie van Python vermijdt heel wat uitdagingen omdat je niet hoeft te refactoren: je houdt je code zoals hij was.

Gewoonlijk zullen softwareleveranciers precies dat doen – alleen hun software bijwerken om overeen te komen met een nieuwe Python-versie wanneer ze een nieuwe versie van het softwareproduct uitbrengen. Als je een specifieke versie hebt gekocht, bijvoorbeeld op Python 2.7, zit je vast en moet je Python 2.7 blijven gebruiken, wat er ook gebeurt.

Het klinkt niet als een groot probleem, maar vertrouwen op verouderde, niet-ondersteunde bouwstenen voor uw computergebruik is een DevSecOps-nachtmerrie. Er zullen nieuwe kwetsbaarheden verschijnen en de benodigde patches komen gewoon niet. Vertrouwen op oude versies van programmeertalen brengt daarom enorme risico’s met zich mee voor uw computeromgeving.

Er zit weinig keuze in – of toch wel?

Het verantwoordelijke ding om te doen is om de Python-versie bij te werken wanneer dat nodig is en om de code die erop draait te bewerken, maar er is gewoon geen pijnloze manier om het te doen. Realistisch gezien wordt refactoring vaak niet uitgevoerd door een gebrek aan middelen, met mogelijk kostbare gevolgen.

Er is een grote behoefte aan een betere aanpak, en dit is wat interessant is. De situatie die we zojuist hebben beschreven rond Python-versies wordt vaak gezien in de computerwereld. Het is bijvoorbeeld gebruikelijk dat organisaties versies van het Linux-besturingssysteem uitvoeren die niet langer worden gedekt door officiële leveranciersondersteuning, waardoor het risico loopt dat beveiligingsproblemen niet worden gepatcht gewoon om ervoor te zorgen dat kritieke applicaties niet kapot gaan.

Dat is ook een probleem voor taalupdates en andere stukjes IT-infrastructuur. Maar de laatste jaren stellen geavanceerde patchoplossingen bedrijven in staat om de gebruikelijke ondersteuningslevenscyclus voor meerdere componenten uit te breiden, van hele besturingssystemen tot specifieke kritieke gedeelde bibliotheken. Hier bij TuxCare hebben we verschillende oplossingen ontwikkeld die de veilige werking van oudere software verlengen tot na het einde van de levensduur van de leverancier.

Oudere Python-apps veilig en veilig uitvoeren

Wat als hetzelfde zou kunnen worden gedaan voor taalversies? Welnu, u kunt nu uitkijken naar het uitvoeren van uw oudere Python-code, op een oude versie van Python – maar zonder de risico’s die dit met zich meebrengt. Geen verouderde taalconstructies – en ook geen kwetsbaarheden.

Met andere woorden, uitgebreide levenscyclusondersteuning voor taalversies – zoals Python – wordt een realiteit. U zult binnenkort uw Python-code veilig kunnen bewaren zonder dat u een enkele regel code hoeft te herschrijven, simpelweg door uitgebreide levenscyclusondersteuning voor Python te krijgen – die u dezelfde beveiligingsbescherming geeft als een volledige versie-upgrade.

TuxCare’s Python extended lifecycle support wordt uitgerold tegen toegankelijke prijzen en zal uw organisatie helpen om te gaan met de moeilijke vragen rond oudere Python-workloads. Houd onze aankondiging in de gaten – die binnenkort komt.

.

Leave a Reply

Your email address will not be published.