Vi startade nyligen ett litet projekt för att rensa upp hur delar av våra system kommunicerar bakom kulisserna på Buffer. Lite snabbt sammanhang: vi använder något som heter SQS (Amazon Simple Queue Service. Dessa köer fungerar som väntrum för uppgifter. En del av vårt system lämnar ett meddelande och en annan hämtar det senare. Tänk på det som att lämna en lapp till en hey, bearbetare som skickar data när du får en chans: ". note behöver inte vänta på svar.Vårt projekt var att utföra rutinunderhåll: uppdatera verktygen vi använder för att testa köer lokalt och rensa upp deras konfiguration.Men medan vi kartlade vilka köer vi faktiskt använder, hittade vi något vi inte förväntade oss: sju olika bakgrundsprocesser (eller cron-jobb, som är schemalagda uppgifter som körts automatiskt i fem år) och arbetare som inte har körts automatiskt i fem år användbar. Här är varför det är viktigt, hur vi hittade dem och vad vi gjorde åt det. Varför det här betyder mer än du tror Ja, att köra onödig infrastruktur kostar pengar, och för en av dessa arbetare skulle vi ha betalat ~360-600 USD under 5 år. städning, jag skulle hävda att den ekonomiska kostnaden faktiskt är den minsta delen av problemet. Varje gång en ny ingenjör ansluter sig till teamet och utforskar våra system, stöter de på dessa mystiska processer "Vad gör den här arbetaren en fråga som äter upp ombordstigningstiden och skapar osäkerhet. "glömd" infrastruktur behöver uppmärksammas ibland, beroendeförändringar, när något annat förändras. Sanningen är att detta händer naturligt i alla långlivade system. En funktion föråldras, men bakgrundsjobbet som stödde det fortsätter att köras en arbetare "tillfälligt" för att hantera en migrering, och den blir aldrig överflödig efter en arkitektonisk förändring, men ingen tänker på att göra detta e-postmeddelande uppgift som kontrollerade hela databasen för födelsedagar som matchade det aktuella datumet och skickade ett personligt e-postmeddelande till kunder. Under en refaktorisering 2020 bytte vi vårt transaktionsverktyg för e-post men glömde att ta bort den här arbetaren – det fortsatte att köras i fem år till. Inget av dessa är misslyckanden i processen. anammade mikrotjänströrelsen (ett populärt tillvägagångssätt där företag delade upp sin kod i många små, oberoende tjänster) för flera år sedan. Vi delade upp vår monolit i separata tjänster, var och en med sitt eget arkiv, distributionspipeline och infrastruktur. Vid den tiden var det vettigt: varje tjänst kunde distribueras på egen hand, med tydliga gränser mellan teamen. Så vi konsoliderade till ett enda förråd med flera tjänster. Tjänsterna existerar fortfarande som logiska gränser, men de lever tillsammans på ett ställe. Detta visade sig vara det som gjorde upptäckten möjlig. I mikrotjänstvärlden är varje förråd sin egen ö. En bortglömd arbetare i en repo kanske aldrig uppmärksammas av ingenjörer som arbetar på ett annat ställe där det inte finns något ställe att söka efter. Vi kunde äntligen se hela bilden till dess konsumenter och producenter. Vi kunde se köer med producenter men inga konsumenter. Vi kunde hitta arbetare som hänvisade till köer som inte längre fanns.upptäckt nästan oundviklig. Vad vi faktiskt gjorde När vi identifierade de föräldralösa processerna var vi tvungna att bestämma oss för vad vi skulle göra med dem. Så här tog vi oss an det. Först spårade vi var och en till dess ursprung. Vi grävde igenom git-historik och gammal dokumentation för att förstå varför varje arbetare skapades från början. I de flesta fall var det ursprungliga syftet tydligt: ​​en engångsmigrering av datamigrering, en funktion som fick solnedgång, en tillfällig lösning som överlevde dess användbarhet. Sedan bekräftade vi att de verkligen var oanvända. Innan vi tog bort något lade vi till loggning för att verifiera att dessa processer inte i det tysta gjorde något viktigt vi hade missat. Vi övervakade i några dagar för att se till att de inte blev uppringda alls, och vi tog bort dem stegvis. Vi raderade inte allt på en gång. Vi tog bort processer en efter en och såg efter eventuella oväntade biverkningar. (Lyckligtvis fanns det inga.)Slutligen dokumenterade vi vad vi lärde oss. Vi lade till anteckningar i våra interna dokument om vad varje process ursprungligen hade gjort och varför den togs bort, så framtida ingenjörer skulle inte undra om något viktigt försvann. Vad som förändrades efter städningVi är fortfarande tidigt med att mäta den fulla effekten, men här är vad vi har sett hittills.Vår infrastrukturinventering är nu korrekt. När någon frågar: "Vilka arbetare driver vi?" vi kan faktiskt svara på den frågan med tillförsikt. Konversationer ombord har också blivit enklare. Nya ingenjörer snubblar inte över mystiska processer och undrar om de saknar sammanhang. Kodbasen återspeglar vad vi faktiskt gör, inte vad vi gjorde för fem år sedan. Behandla refaktorer som arkeologi och förebyggande. Mitt största bidrag från det här projektet: varje betydande refaktor är en möjlighet för arkeologi. När du är djupt inne i ett system och verkligen förstår hur bitarna hänger ihop, är du i den perfekta positionen att ifrågasätta vad som fortfarande behövs. Den där kön från något gammalt projekt? Arbetaren som någon skapade för en engångsdatamigrering? Den schemalagda uppgiften som refererar till en funktion du aldrig har hört talas om? De kanske fortfarande körs. Det här är vad vi bygger in i vår process framöver: Fråga under alla refaktorer: vad mer rör det här systemet som vi inte har tittat på på ett tag? När du tar bort en funktion, spåra den hela vägen till dess bakgrundsprocesser, inte bara den användarvända koden. När någon lämnar teamet, dokumentera vad de hade för bakgrunden som vi fortfarande körde för de gamla delarna, särskilt i de äldre delarna. som inte har migrerats till det enda förvaret ännu. När vi fortsätter att konsolidera är vi övertygade om att vi kommer att hitta fler av dessa dolda reliker. Men nu är vi konfigurerade för att fånga upp dem och förhindra att nya bildas. När all din kod finns på ett ställe har föräldralös infrastruktur ingenstans att gömma sig.

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