운영 서버의 데이터베이스가 사라졌다 – Binary Log 만으로 4시간 만에 복구하기
·
Project Logs/DashHub
일 평균 사용자 93명에 달하는 대시허브는 올해 1월 12일 큰 위기를 맞이했다. 홈 서버 위에서 돌던 운영 DB 가 어느 날 갑자기 `Empty set` 이 되었기 때문이다. 백업도 없던 상태에서 초보 개발자가 어떻게 사고를 인지하고 복구하였는지, 그날 밤 있었던 일을 기록하고자 한다.19시 38분 – 여느 날과 다름없는 평범한 배포였다`feature/effect` 브랜치를 `main` 에 병합했다. 상점에 신규 아이템들을 띄우는 작은 업데이트였다. 참고로 대시허브는 `GitHub Actions` 를 사용한다. 이미지를 푸시하면 Watchtower 가 30초 간격으로 감지해 컨테이너를 새 이미지로 교체하는 CD 파이프라인이 걸려 있다. 배포 직후 사이드 위젯이 정상으로 뜨는 것을 확인하고, 내 계정에 ..
Naive한 MyBatis 구조를 리팩토링하자
·
Project Logs/DashHub
들어가기에 앞서Naive한 MyBatis 구조라는 표현은, 기능 구현에는 성공했지만 아키텍처적인 고민이나 안전장치 없이 가장 단순하고 일차원적인 방식으로 MyBatis를 사용한 형태를 의미한다. 소프트웨어 공학에서 Naive하다는 것은 "순진한", "경험이 부족한"이라는 뜻으로, 보통 돌아가긴 하는데 확장성과 유지보수성을 고려하지 않은 초기 상태를 가리킬 때 쓴다. 이번에는 일반적인 초급 프로젝트에서 볼 수 있는 Naive한 구조의 2가지 특징을 알아보는 시간이 되겠다. JPA로 시작한 나에게 MyBatis란일단 나의 Dash 프로젝트가 어쩌다 Naive하게 되었는지에 대해 언급해야 할 듯하다. 관통 프로젝트를 시작하며 전달받은 일종의 요구사항(?)이 있는데, 그게 바로 MyBatis와 Spring을 연..