Programmeringssprog: Hvordan Instagram er tæmme en multimillion-line Python monster

0
126

Python ‘s stigning stiller spørgsmål af JavaScript’ s dominans
Stigning i forespørgsler drevet af interesse i Python og fællesskab af nye programmører.

Facebook-ejede Instagram har nærmere sin løsning til at forbedre app ‘en på en måde, der øger Python’ s fordele og afværger det sprog, der er hindringer for, at produktiviteten i store projekter.

Bag alle de for-perfekt selfies på Instagram, den Facebook-ejede sociale netværk er bygget på den populære programmerings-sprog, Python.

Som Instagram ingeniører detaljeret for nylig, Instagram Server – backend på smartphone-app, som millioner af millennials bruge til at dele fotos med venner og sig selv – er næsten udelukkende drevet af Python, den tredje mest populære sprog bag Java og JavaScript.

For at øge produktivitet udvikler, Facebook ingeniører har udviklet open source værktøjer som Python statisk type brik, Bål, som Instagram bruger til at analysere sin server codebase. Instagram ingeniører har også skabt udvikler værktøjer som LibCST til analyse af Python-kode.

Instagram ingeniører’ vigtigste mål er at være så produktive som muligt, når du bruger Python på en massiv skala, og de har afsløret, hvordan de får omkring “et par smerte point”, når du bruger sproget.

Virksomheden ønsker også at tiltrække nye talenter, selv hvis kodere er ikke nødvendigvis Python-eksperter, som er grunden til, at den ønsker at forklare, at kodning kandidater, hvordan det er at skabe værktøjer til at hjælpe dem med at blive mere produktive.

Den ønsker også at holde udviklere, der kan lide at bruge Python glad, så virksomheden presser Python-ud over sine grænser. Det er derfor, Instagram ingeniører har udviklet “strenge moduler” for Python.

“En rimelig tage kan være at vi strækker sig Python over, hvad det var beregnet til. Det virker fantastisk for mindre teams på mindre codebases, der kan opretholde en god disciplin omkring hvordan man bruger det, og vi skal skifte til en mindre dynamiske sprog,” skriver Instagram ingeniør Carl Meyer.

“Men vi er forbi det punkt, codebase størrelse, hvor en omskrivning er det overhovedet er muligt. Og hvad vigtigere er, på trods af disse smertepunkter, der er en masse mere, som vi gerne om Python, og samlet vores udviklere arbejder i Python. Så det er op til os at finde ud af, hvordan vi kan gøre Python arbejde på denne skala, og fortsætte med at arbejde som vi vokser,” Meyer skriver.

Han forklarer, at Python er genialt til hurtigt iteration, fordi du kan foretage ændringer og se resultatet uden at behøve at oversætte koden.

“Men med et par millioner linjer af kode (og en rodet afhængighed graf), der fordel begynder at blive sur,” skriver han.

De Instagram-Server, tager op til et minut til start, hvilket svarer til en kritisk forsinkelse, når test af nye funktioner, og den er lang nok til, at en udvikler til at være ud på et sidespor af et andet job og ikke fuldføre opgaven.

På trods af Python muliggør hurtigere udvikling gange, der er udfordringer med at bruge det på en skala fra Instagram.

“Fordi importen kan have et vilkårligt bivirkninger, der er ingen sikker måde at gradvist reload vores server [asterisk]. Uanset hvor lille ændringen, vi er nødt til at starte fra bunden hver gang, at importere alle de moduler, genetablering af alle de klasser og funktioner, genkompilering af alle af de regulære udtryk, osv.,” Meyer skriver.

“Normalt, 99% af koden har ikke ændret sig siden sidste gang vi reloaded serveren, men vi er nødt til at gentage alt det langsomme arbejde alligevel.”

Instagram er udfordringer med brug af Python på skala spejl nogle af de vanskeligheder, Salesforce havde med det til sit CRM analytics produkt Einstein. Salesforce for nylig ringet ned Python kode, til fordel for Googles Gå, eller Golang.

“Python er god til hurtigt at skrive på et højere niveau applikationer, men det betyder ikke altid at levere høj ydelse, der er behov for på en enterprise-plan,” en Salesforce-arkitekt forklaret.

På Instagram er tilfældet, Meyer tilføjer, at det ikke kun skader udvikler produktiviteten, men det skaber en “betydelig mængde af spildt beregne i produktion”, fordi Instagram løbende implementerer og genindlæser stedet på produktionsservere.

Meyer beskriver ‘strenge moduler’, som Instagram ‘s svar til Python’ s svagheder, når de anvendes i stor-skala produktion miljøer

“Strenge moduler sted nogle begrænsninger på, hvad der kan ske på modul top niveau. Alle modul-niveau-kode, herunder dekoratører og funktioner/initializers kaldes på modul niveau, skal være ren (side-effekt, ingen I/O). Dette er bekræftet ved statisk på samme tid via det abstrakte tolk,” siger han.

“Det betyder, at strenge moduler er bivirkning gratis på import: dårlige interaktioner af import-time bivirkninger er ikke længere muligt.”

Mere om Python og programmering sprog

Salesforce: Hvorfor vi droppet Python for Google ‘ s Go sprog i Einstein Analytics
Python-inspireret Nim: Version 1.0 af programmeringssprog lancerer
Microsoft Konsollog-3.7: Programmeringssprog beta lander med alle disse funktioner
Google: Tag vores gratis Kotlin programmeringssprog kurser for at opbygge Android appsMicrosoft: Vi vil have dig til at lære programmeringssproget Python gratisOracle: Programmeringssprog Java-13 er ude, vil det gøre dig mere produktivGoogle: Dart 2.5 programmeringssprog SDK ‘effektivisere’ udviklereRaspberry Pi får MIT Bunden 3 programmeringssprog til RaspbianJulia programmeringssprog: Brugere med at afsløre, hvad de elsker og hader mest om detprogrammeringssproget Python ‘ s ‘eksistentiel trussel’ er app distribution: Er det svaret?Er Julia hurtigst voksende nye programmeringssprog? Statistik diagram hurtige stigning i 2018Python vs R for data videnskab: Professor priser programmeringssprog rivalerProgrammeringssprog: Python forventes at overhale C og Java i de næste 4 år Netflix: programmeringssproget Python er bag hver film du streame
Kunne Skrivemaskine erstatte JavaScript? Brug af programmeringssprog spin-off svæverEr Julia den næste store programmeringssprog? MIT tænker så, som version 1.0 lander TechRepublicMozilla ‘ s radikale open source flytte hjalp med at omskrive reglerne for tech CNET

Relaterede Emner:

CXO

Cloud

Big Data Analytics

Innovation

Tech og Arbejde

Samarbejde