사이드프로젝트를 하면서 검색조건에 따른 검색 쿼리를 개발하였다. 검색쿼리를 개발하는 데에 있어서 다양한 방법이 있었지만 나의 경우는 jpql보단 Querydsl 를 활용하였고, Where조건보단 BooleanBuilder를 활용하여 보다 관리하기 편하도록 했고, DTO에 전달할 값을 명시하여, API통신할 때 전달 데이터를 정의하였다. 위의 방법에 따라 작성한 글이다. 🚨 들어가기에 앞서... | Querydsl, DTO, BooleanBuilder를 사용한 이유 JPQL이 아닌 Querydsl를 사용한 이유 Querydsl은 JPQL 빌더이다. 솔직히 아무거나 사용해도 상관없는데 실제로 회사에서 일해보니까 Querydsl이 코드 지향적이라 관리하기 편했다 JPQL 같은 경우는 코드가 커질 경우 JPA,..
하루종일 삽질을 하면서 나 같은 사람이 있을 거라는 생각이 들어 글을 작성하게 되었다. 글에 들어가기 전 참고용 구성할 환경: 로컬/개발 서버: AWS EC2 1개 개발서버용 (백엔드, 프런트) DB: H2(로컬) AWS RDS(개발) CI/CD: 깃허브액션 회원가입: JWT CI/CD는 깃허브액션을 사용했고, 회원가입 부분에서 JWT를 이용해 application-oauth.yml에서 시크릿 키들을 정의했다. ssh에 접속해서 resources/ 경로에 vim 명령어를 통해 application-oauth.yml를 생성 및 키 값들을 포함한 내용 작성을 해주었다. nohup java -jar. jar --spring.profiles.active=dev & 명령어를 통해 백엔드를 배포할 때 applica..
즉시로딩과 지연로딩에 대해 정리해 보았다. 즉시로딩과 지연로딩을 어떤 상황에서 사용하는지, 왜 사용하는지에 대한 정리 글이다. 먼저 즉시로딩과 지연로딩을 알기 위해선 JPA의 프록시에 대한 개념을 알아야 한다. 여기서는 즉시로딩과 지연로딩에 대한 글이므로 프록시는 아래 글을 통해 간단하게 알아보고 즉시로딩과 지연로딩을 이해하도록 하자. 목차 1.프록시란 2.지연로딩 3.즉시로딩 1. 프록시란? 프록시 정의 대리, 가짜라는 의미를 가지고 있는 proxy. 프록시 사용이유 ex) Member 엔티티를 조회할 때 Team도 함께 조회해야 할까? 비즈니스 로직에서 필요하지 않을 때를 구분해야 한다. ⭐️ 낭비가 발생하게 된다. JPA는 이 낭비를 하지 않기 위해, 지연로딩과 프록시라는 개념으로 해결한다. 프록시..
AWS EC2 서버에서 프런트엔드를 띄우려던 중 발생한 오류이다. 최종적으로 npm run start를 하길 원하고 이 과정에서 발생한 오류들에 대해 해결방법을 남겨보았다. * 나의 경우는 프론트엔드 release브런치로 push 할 경우 github action - S3 - CodeDeploy - EC2의 과정을 진행한다. 이경우는 백엔드와 프론트에 모두 적용되었다. ⬇️ 참고 내용 2022.12.16 - [4. hellomyteam 개발일지] 서버/것 허브액션을 구축하며 느낀 점들 정리 1. 서버와 로컬 버전 확인 및 맞추기 로컬과 서버환경의 node와 npm의 버전확인 1. 로컬 터미널에서 npm 버전 체크 npm -v 2. 로컬 터미널에서 node 버전 체크 node -v 3. 서버 ssh 터미널..
CI/CD 깃허브액션을 구현하던 중 AWS의 code-deploy에서 오류가 발생하였고, 해결 방법을 정리해본다. The deployment failed because no instances were found for your deployment group. Check your deployment group settings to make sure the tags for your Amazon EC2 instances or Auto Scaling groups correctly identify the instances you want to deploy to, and then try again. 1. 문제 파악 문제의 원인은 EC2를 내가 생성한 code-deploy가 찾지 못해서 발생한 원인이다. 해석해보면 ..
먼저 비밀번호 복호화하는데 자바 진영이 아닌 SQL에서(mapper.xml) 처리를 했다. SQL에서 처리 했을 때의 장점은 자바에서 for문을 돌지 않아도 된다는 장점이 있다고 한다. 툴은 DBeaver를 사용했고 전화번호 복호화 작업을 하던 중 칼럼에 [blob]이 찍히는 것을 확인했고 위와 같은 문제를 알게 되어 공부하던 중 내용을 정리해보았다. 1. DTO에 저장하나? Map에 저장하나? 나같은 경우는 Mapper.xml에 선언한 쿼리의 리턴 값을 Map param 형식으로 저장했다. key 값을 DTO에서 String 변수에 저장하면 SQL에서 나온 값에 대해 JAVA에서 형 변환을 해주어 문제가 되지 않았지만, Map에 저장하다보니 형 변환에 문제가 발생하여 [Blob]이 발생했다. 2. 해결..
깃허브 액션과 AWS codedeploy를 연결했다. 아래와 같이 깃허브에서 배포 성공을 보고 안심한 상태로 껏는데 다음날 서비스 url로 접속시 502 에러가 떳다 AWS의 codedeply를 살펴보니 배포 상태가 모두 실패 상태였고, 배포 문제를 해결하기 위해 해당 포스트를 작성했다. 깃허브액션 성공 code deploy 배포 오류 SciprtMissing과 UnknownError는 무슨 오류인가? SciprtMissing 메시지: 너무 많은 개별 인스턴스가 배포에 실패했거나 배포에 사용할 수 있는 정상 인스턴스가 너무 적거나 배포 그룹의 일부 인스턴스에 문제가 발생하여 전체 배포에 실패했습니다. UnknownError 메시지: CodeDeploy 에이전트가 수명 주기 이벤트를 수신할 수 없습니다. ..
티스토리 블로그 따라하다가 마주한 에러보통 이런 오류들이 나는 경우는 티스토리 블로그와 나의 환경변수 값 세팅이 다르기 때문에 발생했다. - 에러 메시지 종류내가 마주한 에러는 두가지 였는데 첫번째는 AWS_ACCESS_KEY_KEY라고 쳐서... 바보같이 aws-access-key-id만 불러온 모습두번째는 aws-region 오류내 환경변수는 aws-region: ${{ env.AWS_REGION}} 로 되어있어서 env 값 설정하는 곳을 못찾아서 아래와 같이 수정하였다.그리고 AWS_REGION은 git secret key에 설정해두어 해결했다.
- Total
- Today
- Yesterday