에러 알람과 예외처리의 난관

Today I Learned 날짜 2024년 6월 8일 금요일 내용 에러 알람 휴일에 쉬는데, 실서버에서 에러가 난다고 온갖 알람이 오두방정을 떤다. 다행히(?) 서버 트래픽의 문제라던가, 기능상의 문제는 아니였고 크론이 실행되는 도중 발생하는 문제였다. 자동적으로 업데이트 되야할 데이터가 원할하게 돌아가지 못했다는 뜻이다. 쉬는데 참 마음이 찝찝해서 금요일이 되자마자 실서버에서 처리해주었다. 원인은 크게 두가지였다. Orphan Data 직역하면 고아 객체긴 한데.. 관계된 데이터가 없다는 뜻이다. 예를 들어, 우리 서비스에선 Shop 데이터가 존재하면 이 하위 개념으로 shop_detail 데이터가 존재하게 된다. 영속성 전이(CASCADE)를 설정해놓으면 shop이 삭제될때 연관된 shop_detail도 따라없어져야 한다. 그럼에도 불구하고 아주 낮은 확률로 혼자 남아있는 shop_detail이 발견된다면 연관된 shop이 없는 이 shop_detail 데이터를 고아 객체라고 부르는데, 이것 떄문에 발생하는 오류들이 꽤 있었다. 버그나 로직의 구멍이 있다기 보단, 초기 개발때 로직이 불완전한 상황에서 만들어진 데이터들로 인해 생긴듯 하여 커맨드를 작성해서 지워줬다. ...

2024년 6월 7일 · 2 분 · 배준수