팀 프로젝트를 하면서 테스트 코드 작성에 문제가 발생하였다. 협업을 위해 도메인별로 파트를 나눴었고, 내가 맡은 도메인은 여러 도메인과 얽혀있어 독립적이지 않았다. 따라서 내가 맡은 도메인 제외, 연관 관계에 있는 모든 엔터티들을 구현하고 실제로 jpa reposi
프로젝트에서 헤어샵과 날짜별로 예약 가능 시간들을 포함한 디자이너 리스트를 출력하는 기능이 필요했다. 디자이너와 예약이 일 대 다 관계이고 lazy fetch type을 사용하였으며, request와 response는 다음과 같다. 일반적인 방법으로 디자이너를 조회
Jmeter로 대량의 HTTP request를 보내는 부하 테스트를 진행하던 중, 10000개의 스레드가 동시 요청할 때 HikariCP connection-timeout 설정 값을 넘기게 되어 에러가 발생하였다. 처음에는 Connection의 개수가 부족해서 발생한
결론부터 말하자면 값이 보장되지 않으면 fetch join에서 on절을 사용할 수 없다. > with-clause not allowed on fetched association 사용하려고 한다면 위와 같은 에러를 마주하게 된다. on절을 사용하고자 한 이유 헤어
진행 중인 프로젝트에는 폴더마다 여러개의 태그가 존재한다. 또한 태그에는 대분류, 소분류가 존재하여 RootTag와 Tag로 나뉜다. 필자는 태그로 폴더 검색 기능을 구현하던 중, 다음과 같은 문제를 겪었다. 위와 같은 쿼리를 사용하면 검색을 위해 사용된 태그만 가
프로젝트에서 Spring Security와 JWT를 사용한 인증, 인가 부분을 담당하게 되었다. 구현이 완료되어서 간략하게나마 벨로그에 정리해보고자 한다. (코드 양이 많아서 전체 코드는 올리지 못할 것 같다) JWT 구현에는 java-jwt 라이브러리를 사용하였다. User 엔터티 User 엔터티에서 필요한 것은 권한에 필요한 컬럼이다. (모든 회...
GitHub Actions와 Docker를 사용하여 Spring Boot 코드를 수정 후 main에 push 하면 자동으로 EC2 서버에 자동으로 도커 이미지가 실행되는 CD를 구축하고자 한다. EC2 서버는 Ubuntu 20.04 프리티어를 사용했다. CD 흐름은 다음과 같다. >Spring Boot 프로젝트 최상단에 Dockerfile 작성 -> ...
PR 시 테스트를 검사하는 CI를 구축하고자 한다. Java 11, Gradle 환경이다. 테스트에 성공하더라도 빌드가 성공할 수 있는지는 별개라서, test가 아닌 build를 사용하는 것이 좋을 것 같다. yaml을 살펴보자. .github/workflows/build.yml > main에 PR 시 -> ubuntu 22.04에서 -> 체크아웃...
명확한 목표와 자신감을 가지게 된 9월 생각을 정리하고자, 더욱 성장할 동기를 얻고자 월간 회고 작성을 시작하려고 한다. 9월 회고지만 올해 첫 작성이니 1~9월로 하자. (이게 무슨 월간 회고...?) 졸업 2016 ~ 2022 6년간(군대 빼면 4년) 다니던 학교를 졸업했다. 군 복학 전에는 정말 놀기만 했지만, 복학 후에는 열심히 살았다고 생...
꾸준히 노력한 나에게 박수를! 🙏 부트캠프 수강 시작과 함께 네이버 블로그에서 벨로그로 이전하고, 비슷한 시점부터 채용을 위해 코테를 준비하기 시작했다. 개강이 올해 3월이었으니, 7개월 동안 꾸준히 한 셈이다. 그리고 오늘, 블로그 포스팅과 코테 풀이 각 200개를 돌파했다. 따라서 기념으로 회고를 작성하고자 한다. 노력은 배신하지 않는다. 우...
디자인 패턴, Java를 주로 공부했던 10월 위 두 가지를 제외하고도 다양하게 공부 했지만, 10월은 주로 두 가지를 위주로 학습했다. 공부하면서 느낀 것은 객체지향적으로 코딩하는 것을 만만히 볼게 아니라는 것이었다. 객체지향 언어를 사용하여 개발한다고 객체지향 프로그래밍은 아니니까. 헤드 퍼스트 디자인 패턴 "헤드 퍼스트 디자인 패턴"을 읽으면서...
중요한 건 꺾이지 않는 마음 최종 면접에 탈락했다...ㅠㅠ 코테 두번에 기술 면접 한번을 통과했는데, 인성 면접에서 미끄러져 버렸다. 예비 합격자들을 위한 세션을 들으면서 마음이 너무 들떴었나 보다. 또한 인성 면접이라 가볍게 생각했던 것 같기도 하다. 채용 과정이 무척 긴데다 어찌보면 신입으로 준비하는 마지막 도전이라고 생각했어서 탈락의 고배가 참....
꾸준히 월간 회고를 작성하고자 했는데... 한동안 적지 못했습니다. 😂 다시 한번... 꾸준히 적어보자는 다짐과 함께 4월의 회고를 시작하겠습니다. 이번 달은 책을 많이 읽었습니다. 제 자신이 '망각의 동물'임을 잘 알고 있기 때문에... 단순 독서를 하지 않고
또 다시 월간 회고를 작성할 시간이 되었다니... 한 달이라는 시간이 무척 빠르게 느껴집니다. 슬슬 날씨가 더워지고 비가 자주 내리니 여름이 다가온 것이 실감되는데요, 이렇게 더운 날씨에는 에어컨 비용도 아낄겸 카페에서 시원하게 공부하는 것이 최고라고 생각합니다! ㅎㅎ 이번 달에는 저번 달과 같이 주로 개발 서적을 읽었는데, 우선 "이펙티브 자바",...
올해의 반이 지나갔습니다. 시간이 꽤 지났다는 느낌이 들면, 항상 그 동안의 자신을 돌아보게 되는데... 이럴 때 회고가 큰 역할을 하는 것 같습니다. 그동안 나 자신이 얼만큼 노력하고 성장했는지 확인할 수 있는 지표가 되기 때문입니다. 코틀린 인 액션 6월은 코틀린 공부에 전념했습니다. 회사에서 자바로 개발하고 있는 프로젝트가 이후 코틀린으로 마...
약 1년간 백엔드 개발자로 일하면서, ORM 프레임워크 덕분에 어렵지 않게 RDB를 이용할 수 있었습니다. 하지만 인터페이스를 사용하기 때문에 각 벤더, 스토리지 엔진의 특징을 알지 못했고 질의, 트랜잭션과 lock, 인덱싱이 어떻게 이루어지는지 명확하게 알지 못했습니다. 따라서 자주 사용하던 MySQL을 공부하고자 했습니다. Real MySQL 8....
8월은 비가 정말 많이 왔습니다. 태풍도 오고, 어떤 날은 퇴근 길에 우산을 썼음에도 쫄딱 젖어서 집에 들어왔습니다...ㅠㅠ 그래도 8월은 입추의 계절이기도 하니 선선해질 가을을 상상하며 버텨봅니다. 하핫! 코딩으로 학습하는 리팩토링 팀원들과 함께 백기선님의 코딩으로 학습하는 리팩토링을 학습하고 있습니다. 한 주에 3개 정도의 섹션을 공부해 랜덤으...
무더위도 끝이나고 어느덧 긴팔을 입어야 할 날씨🍂가 되었습니다. 여름이 지나 처음으로 찬 공기를 맡는 순간은, 언제나 설레는 느낌을 주는 것 같습니다. 백엔드 개발자를 업으로 삼게 되면서 처음으로 월간 회고를 작성했던게 작년 9월이었으니(근데 왜 9번째...?) 이제 저도 어엿한 2년차 개발자가 되었습니다.ㅎㅎ 나름대로 리팩토링/성능 개선, 시각화하여 ...