Vi startet nylig et lite prosjekt for å rydde opp i hvordan deler av systemene våre kommuniserer bak kulissene på Buffer.Noen rask kontekst: vi bruker noe som heter SQS (Amazon Simple Queue Service. Disse køene fungerer som venterom for oppgaver. En del av systemet vårt sender ut en melding, og en annen henter den senere. Tenk på det som å legge igjen en lapp til en hei, prosesser som du får en sjanse til systemet: ". note trenger ikke å vente på svar. Prosjektet vårt var å utføre rutinemessig vedlikehold: oppdatere verktøyene vi bruker til å teste køer lokalt og rydde opp i konfigurasjonen deres. Men mens vi kartla hvilke køer vi faktisk bruker, fant vi noe vi ikke hadde forventet: syv forskjellige bakgrunnsprosesser (eller cron-jobber, som er planlagte oppgaver som har vært i gang automatisk i fem år) og arbeidere som ikke har vært i gang i fem år nyttig. Her er hvorfor det betyr noe, hvordan vi fant dem, og hva vi gjorde med det. Hvorfor dette betyr mer enn du tror Ja, det koster penger å kjøre unødvendig infrastruktur, og for en av disse arbeiderne ville vi ha betalt $360-600 i løpet av 5 år. opprydding, vil jeg hevde at de økonomiske kostnadene faktisk er den minste delen av problemet. Hver gang en ny ingeniør blir med i teamet og utforsker systemene våre, møter de disse mystiske prosessene "Hva gjør denne arbeideren blir et spørsmål som spiser opp ombordstigningstiden og skaper usikkerhet. "glemt" infrastruktur trenger av og til oppmerksomhet, avhengighetsfeil, kompatibilitetsrettinger. Dette førte til at teamet vårt brukte vedlikeholdssykluser som ikke tjente noen hensikt. Og over tid blekner den institusjonelle kunnskapen. Var det en midlertidig løsning som ble permanent. Sannheten er at dette skjer naturlig i ethvert langvarig system. En funksjon blir avviklet, men bakgrunnsjobben som støttet den fortsetter å kjøre en arbeider "midlertidig" for å håndtere en migrering, og den blir aldri revet ned etter en arkitektonisk endring, men ingen tenker på å sende en e-postmelding oppgave som sjekket hele databasen for fødselsdager som samsvarte med gjeldende dato og sendte kunder en personlig e-post Under en refaktor i 2020 byttet vi transaksjonsverktøyet for e-post, men glemte å fjerne denne arbeideren – den fortsatte å kjøre i fem år til. Ingen av disse er feil hos enkeltpersoner – de er feil i prosessen. omfavnet mikrotjenestebevegelsen (en populær tilnærming der selskaper delte koden sin i mange små, uavhengige tjenester) for mange år siden. Vi delte monolitten vår i separate tjenester, hver med sitt eget lager, distribusjonspipeline og infrastruktur. På den tiden var det fornuftig: hver tjeneste kunne distribueres på egen hånd, med klare grenser mellom teamene. Så vi konsoliderte til et enkelt-repositorium med flere tjenester. Tjenestene eksisterer fortsatt som logiske grenser, men de lever sammen på ett sted. Dette viste seg å være det som gjorde oppdagelsen mulig. I mikrotjenester-verdenen er hver enkelt repository kanskje aldri lagt merke til av ingeniører som jobber på et annet sted. Vi kunne endelig se hele bildet til forbrukerne og produsentene. Vi kunne finne køer med produsenter, men ingen forbrukere.oppdagelsen nesten uunngåelig. Hva vi faktisk gjorde Når vi identifiserte de foreldreløse prosessene, måtte vi bestemme oss for hva vi skulle gjøre med dem. Her er hvordan vi nærmet oss det. Først sporet vi hver enkelt til opprinnelsen. Vi gravde gjennom git-historie og gammel dokumentasjon for å forstå hvorfor hver arbeider ble opprettet i utgangspunktet. I de fleste tilfeller var den opprinnelige hensikten klar: en engangsdatamigrering, en funksjon som fikk solnedgang, en midlertidig løsning som overlevde nytten. Så bekreftet vi at de virkelig var ubrukte. Før vi fjernet noe, la vi til logging for å bekrefte at disse prosessene ikke i det stille gjorde noe viktig vi hadde gått glipp av. Vi overvåket i noen dager for å sikre at de ikke ble oppringt i det hele tatt, og vi fjernet dem trinnvis. Vi slettet ikke alt på en gang. Vi fjernet prosesser én etter én, og passet på eventuelle uventede bivirkninger. (Heldigvis var det ingen.) Til slutt dokumenterte vi det vi lærte. Vi la til notater i våre interne dokumenter om hva hver prosess opprinnelig hadde gjort og hvorfor den ble fjernet, så fremtidige ingeniører ville ikke lure på om noe viktig forsvant. Hva endret seg etter opprydding Vi er fortsatt tidlig ute med å måle den fulle effekten, men her er hva vi har sett så langt. Infrastrukturbeholdningen vår er nå nøyaktig. Når noen spør: "Hvilke arbeidere driver vi?" vi kan faktisk svare på det spørsmålet med selvtillit. Onboarding-samtaler har også blitt enklere. Nye ingeniører snubler ikke over mystiske prosesser og lurer på om de mangler kontekst. Kodebasen gjenspeiler hva vi faktisk gjør, ikke hva vi gjorde for fem år siden. Behandle refaktorer som arkeologi og forebygging. Min største del av dette prosjektet: hver betydelige refactor er en mulighet for arkeologi. Når du er dypt inne i et system og virkelig forstår hvordan bitene henger sammen, er du i den perfekte posisjonen til å stille spørsmål ved hva som fortsatt trengs. Den køen fra et gammelt prosjekt? Arbeideren noen opprettet for en engangsdatamigrering? Den planlagte oppgaven som refererer til en funksjon du aldri har hørt om? Det kan hende de fortsatt kjører. Her er det vi bygger inn i prosessen vår fremover: Spør under enhver refactor: hva annet berører dette systemet som vi ikke har sett på på en stund? Når du avvikler en funksjon, spor den helt til bakgrunnsprosessene, ikke bare den brukervendte koden. Når noen forlater teamet, dokumenter hva de hadde ansvaret for i bakgrunnen som vi fortsatt har i de gamle delene våre. som ikke har blitt migrert til enkeltlageret ennå. Ettersom vi fortsetter å konsolidere, er vi sikre på at vi vil finne flere av disse skjulte relikviene. Men nå er vi satt opp for å fange dem og forhindre at nye dannes. Når all koden din finnes på ett sted, har den foreldreløse infrastrukturen ingen steder å skjule.

You May Also Like

Enjoyed This Article?

Get weekly tips on growing your audience and monetizing your content — straight to your inbox.

No spam. Join 138,000+ creators. Unsubscribe anytime.

Create Your Free Bio Page

Join 138,000+ creators on Seemless.

Get Started Free