Spring Boot에서 DB에 초기 데이터를 넣어보자
·
💻 개발
1. 하려는 것프로젝트를 계속 진행하다보면서, DB를 종종 초기화하게 되는데요. (아직 배포를 하지 않았기 때문이지만...) 개발하면서 엔티티 구조가 계속 바뀌다보니, 사라진 컬럼의 제약조건으로 인해서 배포 서버에서 문제가 발생하는 경우가 생겼습니다. 지금이야 아직 배포를 하지 않았기 때문에 밀어도 큰 타격은 없지만, 이 문제도 좀 해결을 해야할 것 같은 느낌이 듭니다.아무튼 이번에는 DB를 초기화하고난 뒤 항상 초기 데이터를 테이블에 넣다보니, 이런 수고를 덜고자 자동으로 SQL을 실행하도록 설정을 해보았습니다.2. 어떤 데이터를 초기에 넣어야 할까?초기에 넣어야 할법한 데이터들을 다음과 같습니다.관리자 데이터: 사용자가 직접 가입을 통해서 데이터를 추가를 한다고 해서, 관리자도 가입을 통해 등록되는건..
@OneToOne 연관에서 발생한 N+1 문제를 해결하자
·
💻 개발
이번에는 N+1 문제를 가져왔습니다.1. 하려는 것이전에 프로젝트(코지메이트)에서 Sentry의 기능을 써보면서 모든 Query를 추적하게 했는데요. 적용을 하자마자 효과를 보고 있습니다.2일도 지나지 않아서 서버 내에서의 쿼리로 인한 문제를 찾아냈기 때문이죠. (추가하길 잘했네요!) 자고 일어난 저는 에러 알림을 걸어둔 디스코드에서 다음의 에러를 보게 됩니다.이렇게 알림까지 보내준 이상 가만둘 수 없죠. 분석하고 해결까지 해봤답니다. 참고) Sentry 로그Sentry에서 확인할 수 있는 로그입니다. 어떤 쿼리가 발생했고, 어떻게 N+1이 발생했는지 확인할 수 있습니다. 자세히 보면 한군데에서 발생한게 아니라, 두 군데인것을 대충 알 수 있답니다....ㅎ 쿼리에 대해 이제라도 열심히 관심을 가져보도록 ..
Spring Boot에서 Sentry가 쿼리를 추적하게 해보자
·
💻 개발
1. 하려는 것현재 진행중인 프로젝트(코지메이트)는 스프링 부트를 사용해서 개발중이고 배포를 기다리는 중입니다.기능 개발은 배포를 진행중이니 필요한 기능들은 모두 완료되어있고, 이제는 자잘한 리팩토링과 성능 최적화, 로깅, 보안, 확장성, 안정성 등 실제 운영 환경에서 중요하게 고려해야하는 부분을 보완해야할 시점입니다. 이 중에서 현재 저는 로깅에 관련하여 구체화를 진행하고 있습니다.지금까지 로깅을 위해 로그 메시지를 커스텀해서 필요한 정보를 출력하도록 하는 설정을 했고, 에러가 발생했을 때에는 Sentry를 사용해서 개발자들에게 알림을 줄 수 있도록 구성해두었습니다. 이번에는 Sentry의 기능 중 하나인 Performance 통계에서 Query 응답속도를 수집할 수 있도록 설정해보고자 합니다.2. 필..