FastAPI 프로젝트에 Ruff 포맷팅을 적용해보자
·
💻 개발
1. 하려는 것 저는 현재 티끌이라는 프로젝트에 서버 파트를 맡아서 진행하고 있습니다. Lambda 환경에서 FastAPI를 이용해 프로젝트를 진행하고 있는데, 좀 특이하지만 그래도 새로운 것을 접하고 익숙해지면서 재미있게 개발을 하고 있습니다. 개발을 진행하면서 이번에는 코드 스타일 통일에 대해서 고민하게 되었습니다. 저는 현재 혼자서 서버 개발을 모두 하고 있기 때문에 우선순위에서는 좀 떨어졌는데, 원래 협업 과정에서는 최우선으로 두고 진행해야하는 사안이긴 합니다. 물론 혼자 개발하더라도 가독성이나 일관성 측면에서 보면 사용하는데 훨씬 좋은게 코드 스타일을 정해두는 것이긴 하죠. 원래는 Pycharm에서 기본 제공하는 포매팅 기능을 사용했었는데요. 개발 과정에서 자꾸 거슬리는 부분이 패키지를 추가/삭..
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. 필..