본문 바로가기

IT 서비스/단잠7

[ 단잠 ] MSA에 Common 모듈 도입 🚨문제단잠 개발하는 도중 모든 서비스에서 공통적으로 설정하고 사용하는 클래스들이 존재했습니다. ( 공통응답객체, BasteEntity, Code, GlobalException Handler, Security등 )해당 클래스들은 global패키지안에 넣어 진행하고 있었습니다.  그러던 도중 문제들이 터지기 시작했습니다.바로 공통 클래스가 일관성이 유지되지 않는것이었습니다.각 서비스가 수정사항이 생긴다면 복붙 해야합니다. 매우 번거롭기도 하고 복붙해야하는걸 잊으면 수정사항이 적용이 되지 않는 경우들이 생겼습니다.또한 변경사항을 전달할때는 "어떤 서비스에서 global패키지 안에 어떤걸 넣어놨어요. 이러한 이유는~~~"단순히 어떤 역할뿐아니라 어느 서비스에 global패키지 안에 추가되었다는걸 말해줘야했습니.. 2025. 4. 1.
[ mate 필터링 ] 메이트 프로필 필터링에 대한 고민 📜문제상황오늘은 제가 진행중인 '단잠'서비스에서 메이트 프로필 필터링에 대한 고민이 있어, 이를 정리하고자 합니다. 기존에 모놀로틱으로 구현을 할 때에는 단순히 테이블을 조인해서 필터링을 진행하면 되었습니다. 물론 필터링 항목들이 많아 성능상에 문제가 생겼었지만 인덱싱, 쿼리최적화, 캐싱을 통해 해결하였습니다. 문제는 모놀로틱에서 MSA로 마이그레이션 하던 도중 발생했습니다.DB와 서비스가 분리됨에 따라 Mate-Service에서 필터링 가능한 항목과 User-Service에서 필터링 가능한 항목이 나뉘어졌습니다. 그렇기에 먼저, FeignClient를 사용하여 동기적인 호출을 통해 이러한 문제를 해결하였습니다. Mate-Service에서 1차적으로 필터링을 한 뒤, User-service에게 필터링된.. 2025. 3. 7.
[ 메이트 프로필 ] - JPQL을 QueryDSL로 전환한 이유 📜서론단잠 서비스에서 메이트 프로필을 조회할 때 다양한 필터링 조건을 동적으로 적용해야 하는 경우가 많습니다. 기존에는 이를 JPQL로 구현했지만, 모두 동적으로 변하다 보니 코드가 상당히 복잡했습니다. 그러다 보니 다음과 같은 오류 상황이 많이 발생했습니다.- 실행 후, 런타임 단계에서 여러 오류 발생으로 인한 번거로움.- 매우 길고 가독성이 떨어지는 쿼리 로직 이러한 문제를 해결하기 위해 QueryDSL을 도입하게 되었습니다. 이번 글에서는 QueryDSL이 무엇인지, JPQL과의 차이점, 그리고 실제 적용 과정에 대해 정리해보겠습니다.더보기❓JPQL이란JPQL은 JPA에서 제공하는 객체 지향 쿼리 언어입니다. 기본적으로 SQL과 상당히 유사하지만, 데이터베이스의 테이블을 대상으로 쿼리를 작성하는 .. 2025. 3. 4.
Jenkins pipeline 실행 중 Docker not found 에러 📙배경Jenkins와 Docker를 활용하여 ci/cd도중 파이프라인 실행중 다음과 같이 Deploy Backend 스텝에서 실패를 발견하였습니다.+ docker build -t my-backend:latest ./var/jenkins_home/workspace/danjam_discovery-service/src/backend/discovery_service@tmp/durable-19bf3472/script.sh.copy: 2: docker: not found Jenkins 파이프라인에서 Docker 명령어를 찾지 못하는 문제였습니다.현재 Docker에 컨테이너로 Jenkins가 실행되고 있습니다. Docker로 생성되었는데 docker 명령어를 못찾다니...부모를 못알아본다 해당 글은 CI/CD를 구.. 2025. 2. 11.