Recentemente, iniciamos um pequeno projeto para limpar como partes de nossos sistemas se comunicam nos bastidores do Buffer. Algum contexto rápido: usamos algo chamado SQS (Amazon Simple Queue Service. Essas filas funcionam como salas de espera para tarefas. Uma parte do nosso sistema deixa uma mensagem e outra a pega mais tarde. Pense nisso como deixar um bilhete para um colega de trabalho: "Ei, quando você tiver uma chance, processe esses dados." O sistema que envia a nota não precisa esperar por uma resposta. Nosso O projeto era realizar manutenção de rotina: atualizar as ferramentas que usamos para testar filas localmente e limpar sua configuração. Mas enquanto estávamos mapeando quais filas realmente usamos, encontramos algo que não esperávamos: sete processos em segundo plano diferentes (ou cron jobs, que são tarefas agendadas que são executadas automaticamente) e trabalhadores que estavam rodando silenciosamente por até cinco anos. penseSim, administrar infraestrutura desnecessária custa dinheiro. Fiz um cálculo rápido e, para um desses trabalhadores, teríamos pago cerca de US$ 360-600 em 5 anos. Esta é uma quantia modesta no grande esquema de nossas finanças, mas definitivamente puro desperdício para um processo que não faz nada. No entanto, depois de passar por essa limpeza, eu diria que o custo financeiro é na verdade a menor parte do problema. torna-se uma questão que consome tempo de integração e cria incerteza. Todos nós já passamos por isso — olhando para um pedaço de código, com medo de tocá-lo porque talvez ele esteja fazendo algo importante. Até mesmo a infraestrutura "esquecida" ocasionalmente precisa de atenção. Isso foi crítico. Foi uma correção temporária que se tornou permanente? empresa anos atrás, e o contexto foi deixado com eles.Como isso acontece?É fácil apontar o dedo, mas a verdade é que isso acontece naturalmente em qualquer sistema de longa duração.Um recurso fica obsoleto, mas o trabalho em segundo plano que o suportava continua em execução. tarefa que verificou todo o banco de dados em busca de aniversários correspondentes à data atual e enviou aos clientes um e-mail personalizado Durante uma refatoração em 2020, trocamos nossa ferramenta de e-mail transacional, mas esquecemos de remover esse trabalhador - ele continuou funcionando por mais cinco anos. muitos serviços pequenos e independentes) anos atrás. Dividimos nosso monólito em serviços separados, cada um com seu próprio repositório, pipeline de implantação e infraestrutura. Na época, fazia sentido: cada serviço poderia ser implantado por conta própria, com limites claros entre as equipes. Mas, ao longo dos anos, descobrimos que a sobrecarga de gerenciar dezenas de repositórios superava os benefícios para uma equipe do nosso tamanho. possível.No mundo dos microsserviços, cada repositório é sua própria ilha. Um trabalhador esquecido em um repositório pode nunca ser notado pelos engenheiros que trabalham em outro. Não há um único lugar para procurar nomes de filas, nem uma visão unificada do que está sendo executado e onde. Com tudo em um repositório, poderíamos finalmente ver o quadro completo até seus consumidores e produtores. encontrar infraestrutura zumbi – mas isso fez com quedescoberta quase inevitável. O que realmente fizemos Depois de identificarmos os processos órfãos, tivemos que decidir o que fazer com eles. Veja como abordamos isso. Primeiro, rastreamos cada um até sua origem. Pesquisamos o histórico do git e a documentação antiga para entender por que cada trabalhador foi criado. Na maioria dos casos, o propósito original era claro: uma migração única de dados, um recurso que foi desativado, uma solução alternativa temporária que perdeu sua utilidade. Depois, confirmamos que eles realmente não eram utilizados. Antes de remover qualquer coisa, adicionamos registros para verificar se esses processos não estavam fazendo silenciosamente algo importante que havíamos perdido. Monitoramos por alguns dias para ter certeza de que eles não foram chamados e os removemos gradativamente. Não excluímos tudo de uma vez. Removemos os processos um por um, observando quaisquer efeitos colaterais inesperados. (Felizmente, não houve nenhum.) Finalmente, documentamos o que aprendemos. Adicionamos notas aos nossos documentos internos sobre o que cada processo havia feito originalmente e por que foi removido, para que os futuros engenheiros não se perguntassem se algo importante desaparecesse.O que mudou após a limpezaAinda estamos no início da medição do impacto total, mas aqui está o que vimos até agora.Nosso inventário de infraestrutura agora é preciso. Quando alguém pergunta: "Que trabalhadores administramos?" na verdade, podemos responder a essa pergunta com confiança. As conversas de integração também ficaram mais simples. Novos engenheiros não estão tropeçando em processos misteriosos e se perguntando se estão perdendo contexto. A base de código reflete o que realmente fazemos, não o que fizemos há cinco anos. Trate os refatoradores como arqueologia e prevenção Minha maior conclusão deste projeto: cada refatorador significativo é uma oportunidade para a arqueologia. Aquela fila de algum projeto antigo? O trabalhador que alguém criou para uma migração de dados única? A tarefa agendada que faz referência a um recurso do qual você nunca ouviu falar? Eles ainda podem estar em execução. Aqui está o que estamos incorporando em nosso processo daqui para frente: Durante qualquer refatoração, pergunte: o que mais afeta esse sistema que não vemos há algum tempo? Ao descontinuar um recurso, rastreie-o até seus processos em segundo plano, não apenas o código voltado para o usuário. ainda. À medida que continuamos a consolidação, estamos confiantes de que encontraremos mais dessas relíquias escondidas. Mas agora estamos preparados para capturá-los e impedir a formação de novos. Quando todo o seu código reside em um só lugar, a infraestrutura órfã não tem onde se esconder.
O que aprendemos depois de encontrar 7 empregos esquecidos em funcionamento por 5 anos
By Social Media
·
·
6 min read
·
202 views
Read in:
aa
ace
af
ak
alz
am
ar
as
awa
ay
az
ba
ban
be
bew
+191 more
bg
bho
bik
bm
bn
brx
bs
bug
ca
ceb
cgg
ckb
co
crh
cs
cv
cy
da
de
din
doi
dv
dyu
dz
ee
el
en
eo
es
et
eu
fa
ff
fi
fj
fo
fr
fur
fy
ga
gd
gl
gom
gn
gu
ha
haw
he
hi
hil
hne
hmn
hr
hrx
ht
hu
hy
id
ig
ilo
is
it
ja
jam
jv
ka
kab
kbp
kg
kha
kk
kl
km
kn
ko
kri
ku
ktu
ky
la
lb
lg
li
lij
ln
lo
lmo
lt
ltg
lua
luo
lus
lv
mai
mak
mg
mi
min
mk
ml
mn
mni-mtei
mos
mr
ms
mt
my
nd
ne
nl
nn
no
nr
nso
nus
ny
oc
om
or
pa
pag
pam
pap
pl
ps
pt
pt-br
qu
rn
ro
ru
rw
sa
sah
sat
sc
scn
sg
si
sk
sl
sm
sn
so
sq
sr
ss
st
su
sus
sv
sw
szl
ta
tcy
te
tg
th
ti
tiv
tk
tl
tn
to
tpi
tr
trp
ts
tt
tum
ty
udm
ug
uk
ur
uz
ve
vec
vi
war
wo
xh
yi
yo
yua
yue
zap
zh
zh-hk
zh-tw
zu