티스토리 뷰

728x90
타노스도 우주의 절반만 날리는데...

 
'딸깍' 
약 200GB 데이터가 84KB가 되었던 순간
대략 99.99996%를 날려버린 나는, 타노스보다 더 한 악당이 되었다.
 

사건의 시작 - 부제: 앱 접속 시 회원가입이 되는데요?


2024 07.29
 

11시 30분 

아침 회의 이후 화장실 가신 CTO님이 급하게 들어오시면서  '다들 앱 실행해 보세요!'라고 외치셨다
나는 "응? 무슨 일이지" 하는 마음으로 앱을 열었는데, 회원가입이 되는 걸 보았고, 뭔가 단단히 잘못되었다고 느꼈다.
그 순간 운영 업무 하는 분이 '갑자기 고객문의가 계속 들어오고 있어요!' 말을 전해주면서 등에 식은땀이 나기 시작했다.
 

11시 31분 - select * from users limit 10; result = 0;

DB 유저 정보를 조회하는데 하나도 뜨지 않았다.
"응?",
"로컬 DB에 쿼리를 날렸나?"
다시 한 번 DB 이름을 확인했다. 
"응...?"
main DB 이름이 맞았다.
 
이건 꿈일꺼야
 
문제가 될 수 있는 부분들을 파악해 보았다.
그리고 곧바로 알아낼 수 있었다.
 
. env 파일에 main DB URL과 local DB URL 모두 주석이 해제되어 있었다.
(필자는 prisma orm을 사용한다)

 
11시 31분 30초

정말 내가 한 실수 때문일까? 
잘못된 DB 주소를 검색한 게 아닐까?
내 실수로 발생한 게 아니길 바랐다.

그러나 나도 알았다. 
내 실수로 일어난 일이란 것을

 
11시 32분 - 이실직고

'제가 잘못한 것 같습니다.'
새파랗게 질린 나는 이 말을 기어코 뱉을 수 밖에 없었다.
'npx prisma migrate dev를 입력했는데 그게 실섭과 로컬 DB를 날린 것으로 파악됩니다.'
 
 

11시 33분 - 모든 업무 중지

에어컨을 세게 튼 사무실이었는데도 온몸이 땀에 젖어 축축했다.
일단은 DB 복구가 제일 먼저다라는 생각이 들었다.
그러면서도

시간이 갈수록 점점 패닉상태가 되었다.
속으로 "하 xx x 됐다..."와 "개발자 인생은 이제 끝이다"라는 생각이 계속 맴돌었다.
 
서비스에는 비상 전면 앱 공지 팝업을 띄웠고
계속 해결법을 찾았다.
 
11시 xx분 - aurora DB 사랑해... AWS 형누님들 사랑해요...
운영 업무를 하시는 팀원은 CS를 처리하고, 
CTO님과 모든 개발자가 붙어 초기화 됐던 시점, DB 롤백하는 방법, 쿼리 로그를 찾아보았다.
 
그러던 중 CTO님이 aurora DB에서 시점으로 롤백하는 기능이 있는 것을 알아내셨고, 
사건이 터진 시점은 10시 37분이었지만 여러 가지를 고려해 2분 차이를 두고 10시 35분으로 롤백할 수 있었다.
 
24년 4월 DB lack이 있어서 aurora DB로 업그레이드했었는데,
만약 4월 이전에 이런 일이 있었다면...
생각하기도 싫다.
 
새로운 auroraDB를 띄우고 proxy 서버와 연결을 해주고, proxy DB 설정도 다 해주고
재가동되는데 2시가 되었다. 
진짜 울고 싶었다.
 
CTO님께 감사하고 너무 죄송했다
그리고 나의 온몸은 흥건히 땀에 절어 있었다.
 

해결 이후 


 
로그인이 되지 않아 해당 시간에 접속한 유저뿐 아니라 모든 유저에게 보상 금액을 지원했다
대략 몇 천만 원의 포인트가 지급되었다. 
 
다른 팀원들도 당일 해야 하는 업무가 있었는데 업무가 모두 밀렸다.
 
대표님께 면담을 요청했다.
개발을 하면서, 서버를 꺼 버리고, DB를 날렸던 일이 이번 회사에서 모두 일어났다.
나의 개발자 인생은 "여기까지다"라고 생각했다.
암울했다. 죄송했다. 죽고 싶었다.
책임지고 퇴사를 하겠다고 했다.
 
그러나 대표님은
"당연히 징계는 있다. 하지만 OO 씨의 퇴사를 생각한 건 아니다"라는 말과 함께
"퇴사는 책임지는 게 아니라 회피다"
"이 계기로 더 성장했으면 좋겠다."
"바빠서 인프라를 못 챙긴 회사 책임도 있다" 
라고 해주셨다.
 
나는 대표님과 CTO님과 다른 팀원들이
누구보다 일찍 출근하고 늦게 퇴근하고, 고객에게 어떤 기쁨을 줄지 매일 고민하는 것을 보면서 
어떤 마음으로 서비스를 키워가고 있는지 너무도 잘 아는 마음에 죄송함으로 몸이 떨렸다.
 
 

재발 방지 그리고 회고


이번 사건을 회고해 보았을 때 왜 이런 일이 발생했을까 생각해 보았다.

 
바쁘다고 미루고 미루던 DB 계정 별 접근 권한을 주지 않았다.

너무도 당연한 이야기지만, 지키지 않은 일이었다.
30분 투자해서 Main, QA DB 계정 권한을 부여했다.
(웹에서 앱으로 전환도 3주 만에 했던 회사다)
 

바쁘다고 업무 루틴을 지키지 않았다.

핑계라면 핑계지만,,, 전 날 노트북이 맛 가서 초기화를 진행했다.
그 이후로 키보드 배열 세팅등 사소한 부분들이 모두 초기화되었는데, 
달라진 환경에서 prisma 배포하는 과정에서 체크하는 루틴이 있는데 
업무 루틴을 지키지 않았다. 
 

컨디션 관리

아침부터 뇌가 멍했다.
잠을 충분히 못 잤고, 카페인에 뇌가 절여진 것 같은 집중력이 한몫했던 것 같다.
 
 
앞으로는 절대, 어떤 회사를 가더라도 DB 권한 체크부터 할 것이다.
그리고 멘탈도 많이 나갔는데, 정신 다 잡고, 공부를 더 해야겠다고 느꼈다.
실제로 아침 8시 출근 후 공부를 하고 있다.
 
 
To. 다른 이 글을 보고 있는 개발자 분들에게. 
나의 이 당시 감정이 100% 전달될 순 없겠지만,
세상의 어떤 개발자에게 이런 비극적이고 참혹한 일이 일어났었습니다.
자신이 현재 겪고 있는 개발적인 어려움은 저의 일로 위안이 되시길 바랍니다.
일정에 쫓기고, 상사한테 욕을 먹을 때마다
"에이 그래... DB 날린 것도 아닌데 뭐~" 이런 마인드셋으로 이겨내시길 바랍니다.
그리고 권한 부여는 꼭 합시다...~
 
 

728x90
댓글
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday