Post

사이트가 펑펑

또 터졌네?

요즘 뭔가 자주 터지는 느낌이다. 그래도 긍정적인 점을 찾아보자면 모니터링 체계가 빠르게 감지해서 나한테 구조 신호를 보냈다는 점이고, 아쉬운 점을 생각해보자면 내가 인지하기까지 1시간 정도 걸렸다.

뭐가 문제였는지, 개선할 점은 없는지 그 날로 돌아가보자

신나는 점심시간

우리는 12시 반부터 점심 식사 시간이다. 오늘은 뭘 먹어야 하나 팀원들과 얘기하며 나가던 그 시각, 엘레베이터를 타고 내려가서 식당 탐방을 하던 그 시간 내 api 서버는 임종을 맞이하고 있었다.

더 정확히 말하면 서버가 죽은건 아니고, 인증서가 만료되었다. 뭐 사실상 요청 처리가 정상적으로 되지 않기 때문에 죽은거나 마찬가지였다.

image

헬스체크 관련 컨트롤러가 있었다 말았다 해서 기억이 정확히 안나는데, 어차피 200 응답만 내려오면 되기 때문에 언젠가부터 프로메테우스쪽을 보게 해놨다. 사실 저것도 저렇게 퍼블릭하게 여는게 맞는지 모르겠는데, 어차피 털어봤자 뭐 없는 서버라 그냥 열어놨다.

과하다는 표현이 맞는지 모르겠는데 내 서비스에는 모니터링 툴이 이것저것 많이 붙어있다. 무료로 사용 가능한 리소스들을 알뜰히 쓰는 것도 있지만, 회사 계정으로 한달마다 크레딧이 나온다. 이 크레딧으로 모니터링 서버들을 많이 운영한다. 사실 회사 계정으로 크레딧이 나와서 다행이지, 그라파나쪽 서버는 한달 서버비만 15만원 정도 나온다. 정작 api서버는 램 1기가짜리 무료 서버 쓰면서 모니터링 서버가 램 8기라라니 뭐가 좀 이상하긴 하다.

image

어쨌든 영역별로 분류해보자면 프론트는 sentry, 리눅스 서버 리소스 + api 앱 모니터링은 그라파나 조합(로키, 템포, 프롬테일)을 사용중이고 url 모니터링을 하는 better stack을 사용중이다. 이번에는 url 모니터링이 나를 살린 셈이다.

일단 장애 상황은 발생했고, 빨리 복구를 해야 한다. 이미 위에 메일에 같이 날아온 사유를 보자마자 뭐가 문제인지 감은 왔다. 3달전쯤에 건드렸던 스크립트까지 기억이 뻗어나가며 어떤 작업을 해야 할 지 감은 왔다.

만료된 인증서

image

참으로 개탄할 일이지만 13시 반이나 되어서야 메일을 읽었다. 밥먹고 산책좀 사부작 사부작 하니 그때더라. 타이밍도 기가 막히게 바로 회의 들어가야 해서, 잠깐 참여 인원들이 도착하기를 기다리는 3분동안 컷했다.

크론탭으로 인증서는 갱신하게 해놨고, 멀쩡히 갱신되고 있었다. 문제는 nginx를 한번 껏다켰다 해줬어야 했는데 그걸 뭔가 테스트한다고 쉘스크립트에서 지웠었다.

nginx 리스타트 커맨드 한번 날려줬고, 금세 해결되었다.

아직 만나지 못한 에러를 찾고있어

최근에 친구가 하던 업무에 관해 대화를 나눈적이 있다. 포인트 적립 관련 시스템을 한창 리팩토링중이었는데 굉장히 촘촘하게 테스트를 작성하고 있었다. 이유를 물어보니 에러가 발생해도 당장 결과물이 보이는게 아니라 누적된 결과물이 서서히 틀어지기 때문에 최대한 대비할수 있는 케이스는 다 준비중이라고 들었다.

필연적으로 지금 당장 테스트가 불가능한 영역이 존재한 것이라 생각한다. 지금처럼 미래의 어느 시점부터 갱신 가능한 인증서도 비슷한 사례라고 생각한다.

미래의 특정 시점부터 결과를 알 수 있는 코드는 어떻게 테스트를 해야 하나 고민이다. 당장 생각나는 건 영역을 잘 나눠서, 미래 시점의 코드 영역은 성공했다 치고 나머지에 대한 검증이라도 철저히 들어가면 좋지 않을까 싶다.

This post is licensed under CC BY 4.0 by the author.

© . Some rights reserved.

Using the Jekyll theme Chirpy