Instagram legt Python aan banden
Het liefst zou het Instagram-management de hele Python-codebase aan de kant zetten en opnieuw beginnen. Maar dat is geen optie. Dus moet er een oplossing gevonden worden voor de problemen waar het bedrijf tegenaan loopt.
"Het [Python, red] werkt geweldig voor kleine teams op een kleine codebasis, die zich kunnen houden aan een goede discipline met betrekking tot het gebruik, stelt Carl Meyer een van de Instagram-ontwikkelaars in een blog. Maar naar mate de codebasis groter wordt blijken veel van de 'higher level' toepassingen niet te schalen naar het gebruik op de schaal die nodig is voor een grote onderneming als Instagram.
"Er is geen manier om met Python een server in kleine stapjes opnieuw te laden. We moeten elke keer helemaal opnieuw beginnen en alle modules importeren, opnieuw classes en functions instellen en alle reguliere expressions opnieuw compileren", zegt Meyer. "In veel gevallen is er aan 99 procent van de code niks verandert, maar moeten we toch al dat tijdrovende werk opnieuw doen." Daarbij gaat veel computertijd verloren omdat Instagram de productiesite voortdurend wil aanpassen.
Toch door met Python
Ook de ontwikkelaars lopen tegen problemen op. Python werkt in kleinere projecten zo fijn omdat de code niet steeds gecompileerd hoeft te worden en het resultaat van een nieuw stuk code steeds direct kan worden getest. Vanwege de noodzaak de Instagram Sever steeds opnieuw op te starten duurt het als gevolg van de miljoenen regels code en een gebrekkige 'dependency graph' al snel minuten voor het resultaat zichtbaar is. Dat is precies een vertraging waardoor ontwikkelaars afgeleid worden, met iets anders aan de slag gaan en essentiële testroutines niet afronden.
Ondanks een aantal pijnpunten, vinden ontwikkelaars het werken met Python erg fijn. Dus hebben Instagram naar een manier gezocht waardoor het bedrijf toch met Python kan blijven doorwerken.
De Strict modules-aanpak brengt een aantal beperkingen aan op het niveau van module-ontwikkeling. Alle code inclusief de 'decorators' en 'functions/initializers' moeten vrij zijn van zij-effecten en geen I/O-intiëren. Dit wordt afgedwongen via de 'abstract interpreter' op het moment van compilatie.
Betere en snellere code
De restricties zorgen ervoor dat de code betrouwbaarder wordt en ook sneller kan worden uitgevoerd. Meyer zegt dat de 'strict' modules nog in het prototype-stadium zijn en verwacht binnenkort meer te kunnen vertellen over de vorderingen.
Reacties
Om een reactie achter te laten is een account vereist.
Inloggen Word abonnee