Sinimulan namin kamakailan ang isang maliit na proyekto upang linisin kung paano nakikipag-usap ang mga bahagi ng aming mga system sa likod ng mga eksena sa Buffer. Ilang mabilis na konteksto: gumagamit kami ng tinatawag na SQS (Amazon Simple Queue Service. Ang mga pila na ito ay kumikilos tulad ng mga waiting room para sa mga gawain. Isang bahagi ng aming system ang nag-drop ng mensahe, at ang isa pa ay kukuha nito sa ibang pagkakataon. Isipin na parang nag-iiwan ng tala para sa isang katrabaho: "Hoy, kapag ito ay may pagkakataon na magpadala ng data." isang tugon. Ang aming proyekto ay upang magsagawa ng nakagawiang pagpapanatili: i-update ang mga tool na ginagamit namin upang subukan ang mga queue sa lokal at linisin ang kanilang configuration. Ngunit habang kami ay nagma-map kung anong mga pila ang aktwal na ginagamit namin, nakakita kami ng isang bagay na hindi namin inaasahan: pitong iba't ibang mga proseso sa background (o mga cron na trabaho, na mga naka-iskedyul na gawain na awtomatikong tumatakbo) at mga manggagawa na tahimik na tumatakbo nang hanggang limang taon, kung bakit wala kaming nagawa sa lahat ng iyon ito.Bakit ito mas mahalaga kaysa sa iyong iniisipOo, ang pagpapatakbo ng hindi kinakailangang imprastraktura ay nagkakahalaga ng pera at para sa isa sa mga manggagawang iyon, magbabayad sana kami ng ~$360-600 sa loob ng 5 taon. Ito ay katamtamang halaga sa engrandeng pamamaraan ng aming pananalapi, ngunit tiyak na puro basura para sa isang proseso na walang ginagawa. Gayunpaman, pagkatapos na dumaan sa pinakamaliit na bahagi ng pananalapi na ito, ako ay ang pinakamaliit na bahagi ng pinansiyal na bahagi. sumali sa team at nag-e-explore sa aming mga system, nahaharap sila sa mga mahiwagang prosesong ito. "Ano ang ginagawa ng manggagawang ito?" umiikot sa mga landas ng code na walang layunin.At sa paglipas ng panahon, ang kaalaman sa institusyonal ba ito ay isang pansamantalang pag-aayos na naging permanente "pansamantalang" upang mahawakan ang isang paglilipat, at hindi ito mawawasak Ang isang naka-iskedyul na gawain ay nagiging kalabisan pagkatapos ng pagbabago sa arkitektura, ngunit walang sinuman ang nag-iisip na suriin. Dati kaming nagpapadala ng mga email ng pagdiriwang ng kaarawan sa Buffer, nagpatakbo kami ng isang nakaiskedyul na gawain na nagsuri sa buong database para sa mga kaarawan na tumutugma sa kasalukuyang petsa at nagpapadala sa mga customer ng isang naka-personalize na email sa panahon ng aming 20ctor ang manggagawang ito—patuloy itong tumakbo sa loob ng limang taon. Wala sa mga ito ang mga kabiguan ng mga indibidwal — ang mga ito ay mga pagkabigo sa proseso Kung walang sinasadyang paglilinis na binuo sa kung paano kami nagtatrabaho, ang entropy ay nanalo. Paano kami nakatulong sa aming arkitektura na mahanap itoTulad ng maraming kumpanya, tinanggap ng Buffer ang microservices movement (isang sikat na diskarte kung saan hinati ng mga kumpanya ang kanilang code sa maraming maliliit at independiyenteng mga serbisyo) taon na ang nakalipas. pipeline, at imprastraktura. Noong panahong iyon, may katuturan ito: ang bawat serbisyo ay maaaring i-deploy nang mag-isa, na may malinaw na mga hangganan sa pagitan ng mga koponan. sa mundo ng microservice, ang bawat repository ay may sariling isla. Ang isang nakalimutang manggagawa sa isang repo ay maaaring hindi mapansin ng mga inhinyero na nagtatrabaho sa isa pang lugar, walang pinag-isang view ng kung ano ang tumatakbo kung saan matagal nang umiral. Hindi idinisenyo ang pagsasama-sama para tulungan kaming makahanap ng imprastraktura ng zombie — ngunit ginawa nito iyonang pagtuklas ay halos hindi maiiwasan. Ano ang aktwal na ginawa naminSa sandaling natukoy namin ang mga naulilang proseso, kailangan naming magpasya kung ano ang gagawin sa mga ito. Narito kung paano namin ito nilapitan. Una, natunton namin ang bawat isa sa pinagmulan nito. Naghukay kami sa kasaysayan ng git at lumang dokumentasyon upang maunawaan kung bakit nilikha ang bawat manggagawa sa unang lugar. Sa karamihan ng mga kaso, malinaw ang orihinal na layunin: isang beses na paglilipat ng data, isang feature na lumubog, isang pansamantalang solusyon na nalampasan ang pagiging kapaki-pakinabang nito. Pagkatapos ay kinumpirma namin na sila ay talagang hindi nagamit. Bago mag-alis ng anuman, nagdagdag kami ng pag-log upang i-verify na ang mga prosesong ito ay hindi tahimik na gumagawa ng isang bagay na mahalaga na napalampas namin. Sinusubaybayan namin ng ilang araw upang matiyak na hindi sila tinawag, at inalis namin sila nang paunti-unti. Hindi namin tinanggal ang lahat nang sabay-sabay. Isa-isa naming inalis ang mga proseso, binabantayan ang anumang hindi inaasahang epekto. (Luckily, there weren't any.)Finally, we documented what we learned. Nagdagdag kami ng mga tala sa aming mga panloob na doc tungkol sa kung ano ang orihinal na ginawa ng bawat proseso at kung bakit ito inalis, kaya hindi magtataka ang mga susunod na inhinyero kung may nawawalang mahalagang bagay. Ano ang nagbago pagkatapos ng paglilinisMaaga pa kami sa pagsukat ng buong epekto, ngunit narito ang nakita namin sa ngayon. Tumpak na ngayon ang aming imbentaryo ng imprastraktura. Kapag may nagtanong, "Anong mga manggagawa ang pinapatakbo natin?" talagang masasagot namin ang tanong na iyon nang may kumpiyansa. Naging mas simple rin ang mga pag-uusap sa onboarding. Ang mga bagong inhinyero ay hindi natitisod sa mga mahiwagang proseso at nag-iisip kung wala silang konteksto. Ang codebase ay sumasalamin sa kung ano talaga ang ginagawa namin, hindi kung ano ang ginawa namin limang taon na ang nakakaraan. Ituring ang mga refactor bilang arkeolohiya at pag-iwasAng aking pinakamalaking takeaway mula sa proyektong ito: bawat makabuluhang refactor ay isang pagkakataon para sa arkeolohiya. Kapag malalim ka sa isang sistema, talagang nauunawaan kung paano kumonekta ang mga piraso, nasa perpektong posisyon ka para tanungin kung ano pa ang kailangan. Ang pila na iyon mula sa ilang lumang proyekto? Ang manggagawang ginawa ng isang tao para sa isang beses na paglipat ng data? Ang nakaiskedyul na gawain na tumutukoy sa isang tampok na hindi mo pa naririnig? Maaaring tumatakbo pa rin ang mga ito. Narito kung ano ang ginagawa namin sa aming proseso sa pasulong: Sa panahon ng anumang refactor, itanong: ano pa ang nakakaantig sa system na ito na matagal na naming hindi tinitingnan? Kapag hindi na ginagamit ang isang feature, subaybayan ito hanggang sa mga proseso sa background nito, hindi lang ang code na nakaharap sa user. Kapag may umalis sa team, idokumento kung ano ang pinangangasiwaan nila sa mga background na mayroon pa rin sa aming mga bahaging iyon. na-migrate pa sa iisang repository. Habang nagpapatuloy kami sa pagsasama-sama, tiwala kaming mahahanap namin ang higit pa sa mga nakatagong relic na ito. Ngunit ngayon ay naka-set up na kami upang mahuli ang mga ito at pigilan ang pagbuo ng mga bago. Kapag ang lahat ng iyong code ay nakatira sa isang lugar, ang naulilang imprastraktura ay walang mapagtataguan.

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