전체 글(64)
-
N+1 문제 다양한 해결법
서론 JPA를 학습하면 무조건 듣는 키워드는 N+1 이다. 보통 블로그에서 소개하는 방식은 fetch join을 통하여 문제를 해결한다고 이야기한다. 물론 틀린 방식은 아니다. 하지만 실제 프로젝트를 만들면서 N+1 문제를 많이 만나보면서 N+1을 처리하는 방식은 여러가지가 있다. 상황에 따라서 N+1 문제를 처리하는 방식을 적절하게 해결하는게 성능 저하의 문제에 대응할 수 있다고 생각했다. 글을 시작하기 이전에 간단하게 정리하면 1:1 연관관계 : Fetch join Collection 연관관계 : default_batch_fetch_size N개의 컬렉션을 fetch join을 하면 MultipleBagFetchException이 발생한다. 특정 컬럼을 조회할 경우에 join을 하고 Projectio..
2023.12.15 -
블로그 이사
https://velog.io/@geon_km geon_km (Mugeon Kim) - velog JPA Batch Insert를 통하여 성능 개선 (MySQL, JdbcTemplate) 기존에 프로젝트를 진행하면서 문제를 생성을 일일이 Insert 해야되는 문제점을 발견하여 대량으로 Insert의 문제점을 발견을 하였습니다. 이러한 velog.io 작년부터 글을 Tistory에서 작성을 했는데 마크다운이 너무 불편해서 Velog에서 글을 작성을 합니다.
2023.07.22 -
[ 서버 사이드 프로젝트 챌린지 ] 23.04.15 - week8 & 회고록
1. 이번 주 스터디에서 학습한 내용 GitHub - Side-Challenge-Study-Time/StudyTime_BE: 스터디 타임 프로젝트(Back_End) 스터디 타임 프로젝트(Back_End). Contribute to Side-Challenge-Study-Time/StudyTime_BE development by creating an account on GitHub. github.com 이번 주 스터디에서는 프로젝트 마무리를 위한 점검 및 발표 시간을 가졌습니다. 이를 통해, 저희 스터디의 성과와 발전을 공유하고, 다른 스터디 팀원들에게도 저희가 마주한 문제와 해결방법, 그리고 스터디를 통해 얻은 경험을 공유할 수 있는 좋은 시간이었습니다. 스터디 타임 프로젝트(Back_End)은 짧은 시간..
2023.04.23 -
[ 웹개발 배포 챌린지 스터디 ] 23.04.22 - 회고록
1. 이번 주 스터디에서 학습한 내용 이번 주에는 CI/CD를 구현하는 데 있어서 새로운 방식을 시도해보았습니다. 하지만, 많은 어려움을 겪었습니다. 스크립트 작성 부분에서 많은 오류가 발생하였고, 이를 해결하는 데 많은 시간과 노력이 필요했습니다. 우선, 기존에 학습한 Jenkins 스크립트를 활용하여 CI/CD 파이프 라인을 구현하였는데 Workspace에 Docker를 이용하여 실행하고, 변경된 사항을 Git webhook을 통해 Jenkins workspace에 적용시키는 방식을 사용하였습니다. 그러나, 이번에 시도한 방식은 기존에 사용하던 방식과는 다르기 때문에, 처음부터 모든 것을 새롭게 학습해야 했습니다. 이로 인해 많은 오류가 발생하였고, 이를 해결하는 데에도 시간이 많이 걸려 많은 고민을..
2023.04.23 -
[ Jenkins ] Jenkins Pipeline을 이용한 CI/CD + SSHAgent
[ 1. 글을 작성하는 이유 ] 프로젝트를 하면서 마지막으로 Jenkins를 이용한 파이프라인 CI/CD를 하면서 너무 많은 오류를 만났습니다. 학습한 내용을 정리하는 시간을 가지게 되었습니다. 이 작성 글에는 중복적인 내용이 있기 때문에 위에 글을 보시면 도움이 됩니다. [ 2. Jenkins Pipeline에 대해서 알아보자 ] 이번에 진행할 배포는 파이프라인을 이용을 해서 하려고 합니다. 일단 기본적으로 Jenkins 인스턴스와 Workspace 인스턴스를 연결하기 위해 SSH 프로토콜을 사용합니다. 이후 Jenkins에서 빌드한 jar파일을 Docker에 올려서 Workspace에 실행하는 방식을 사용을 하려고 합니다. 추가적으로 Git에 Git Webhook을 이용해서 변경된 사항을 파악하여 J..
2023.04.23 -
[ Swagger ] Swagger UI를 통해 API 명세서 Postman 공유
1. 글을 작성한 이유 프로젝트를 하면서 API 스펙을 공유하기 위해 다양한 방법을 찾았습니다. 보통 API 문서화를 하기 위해서는 Rest DOCS와 Swagger를 통해서 API를 문서화를 했다. 저희는 Swagger를 선택을 하였고 문서화를 하였으나 문서화를 다른 사람에게 공유하기 위해서 방법을 찾던 도중에 배포를 하지 않고 Postman으로 문서 공유화가 가능하여 글을 작성을 했습니다. 2. Swagger UI 적용하기 처음에 Gradle에 의존성을 추가를 합니다. implementation 'org.springdoc:springdoc-openapi-ui:1.6.9' 이후 Config작업을 합니다. @Configuration public class OpenApiConfig { @Bean publi..
2023.04.21