본문 바로가기

IT/BE

(3)
Spring CQRS 패턴 적용기 서비스 레이어 구조가 복잡해지면 유지보수가 어려워진다.특히 초기에는 단순한 CRUD 서비스가 충분하지만, 애플리케이션이 커질수록 서비스 클래스는 쉽게 비대해지고, 책임이 모호해짐.기존 MemberService를 리팩토링하면서 UseCase + Facade 패턴을 적용해 서비스 레이어를 명확하게 분리했다. 2025.11.21 - [IT/BE] - Spring 애플리케이션에 UseCase + Facade 패턴 적용하기 Spring 애플리케이션에 UseCase + Facade 패턴 적용하기기존 MemberService를 리팩토링하며 구조적 개선하기Spring 애플리케이션이 커질수록 가장 먼저 무너지는 부분이 바로 Service이다.초기에는 간단해서 큰 문제는 없지만, 기능이 늘어날수록 서비스는y22jun.ti..
Spring 애플리케이션에 UseCase + Facade 패턴 적용하기 기존 MemberService를 리팩토링하며 구조적 개선하기Spring 애플리케이션이 커질수록 가장 먼저 무너지는 부분이 바로 Service이다.초기에는 간단해서 큰 문제는 없지만, 기능이 늘어날수록 서비스는 아래와 같은 문제들을 품기 시작한다.❌ 1. 기존 MemberService의 문제점아래는 기존 MemberService의 일부이다.@RequiredArgsConstructor@Servicepublic class MemberService { private final MemberRepository memberRepository; private final PasswordEncoder passwordEncoder; private final CompanyRepository companyRepositor..
Spring N + 1 문제를 해결해보자 N + 1 문제란 무엇인가JPA를 사용할 때 가장 많이 겪는 성능 이슈 중 하나가 N + 1 문제이다이 문제는 연관된 엔티티를 LAZY 로딩 할 때 흔하게 발생하며, 한 번의 쿼리로 끝날 수 있는 작업이 불필요한 추가 쿼리(N번)를 실행하게 만든다.N + 1 문제의 기본 개념'1'첫 번째 쿼리-> 부모 엔티티 리스트를 가지고 오는 쿼리select * from member where company_id = 1;이 쿼리로 멤버 N명을 가져왔다고 가정'N'두 번째 단게-> LAZY 연관 관계를 호출할 때각 멤버마다 추가 쿼리가 실행되는 상황select * from company where id = ?;멤버 1명씩 가져올 때마다 회사 정보를 따로 조회하는 쿼리가 실행됨.즉첫 번째 쿼리 1번연관된 엔티티 쿼리 N..