SRP는 SOLID 원칙 중 첫 번째로, 각 엔티티(모듈, 서비스, 클래스)는 변경 이유가 하나만 있어야 한다는 의미입니다. 아키텍처 수준에서 이는 시스템을 책임 영역에 따라 서비스/모듈로 분할함으로써 달성됩니다. 예를 들어, 한 서비스는 사용자를 등록하고, 두 번째는 결제를 관리하며, 세 번째는 알림을 보냅니다.
Node.js 예제:
// userService.js module.exports = { registerUser(data) { /* 등록 */ } } // paymentService.js module.exports = { processPayment(order) { /* 결제 처리 */ } } // notificationService.js module.exports = { sendEmail(user, content) { /* 이메일 전송 */ } }
주요 특징:
SRP는 서비스가 다른 서비스와 상호작용할 수 없다는 의미인가요?
아닙니다. 서비스는 명확히 정의된 API를 통해 상호작용할 수 있으며, 내부 비즈니스 작업에 대한 책임을 유지합니다.
별도의 파일이나 프로젝트로 분리하지 않고 SRP를 구현할 수 있나요?
기술적으로 가능하지만, 코드의 확장성과 가독성을 위해 물리적 단위(별도의 파일, 패키지, 서비스)로 분리를 권장합니다.
SRP는 코드만을 위한 것인가요, 아니면 전체 아키텍처를 위한 것인가요?
SRP는 서비스/모듈 설계에서부터 특정 클래스 및 함수 작성에 이르기까지 모든 수준에서 유효합니다.