피드로 돌아가기
LLD Foundations: SOLID Principles (Part 1 — SRP & OCP)
Dev.toDev.to
Backend

SRP와 OCP 적용을 통한 변경 격리 및 시스템 확장성 확보

LLD Foundations: SOLID Principles (Part 1 — SRP & OCP)

Saras Growth Space2026년 5월 14일2beginner

Context

단일 클래스에 다중 책임이 집중된 OrderService 구조로 인한 유지보수 효율 저하 상황. 요구사항 변경 시 연쇄적인 코드 수정이 발생하여 시스템 안정성이 하락하는 설계적 한계 직면.

Technical Solution

  • OrderService 내 결제 및 알림 로직을 PaymentService와 NotificationService로 분리한 SRP 기반 책임 격리
  • 클래스별 단일 변경 사유를 정의하여 특정 기능 수정이 타 기능에 미치는 영향도 최소화
  • if-else 기반의 조건 분기를 제거하고 Payment 추상 클래스를 도입한 OCP 설계 적용
  • 새로운 결제 수단 추가 시 기존 코드 수정 없이 신규 클래스 구현만으로 기능을 확장하는 전략 채택
  • 변경 가능성이 높은 지점을 식별하여 인터페이스 기반의 느슨한 결합 구조 구축

- 클래스 내에 'and'로 연결되는 다중 책임이 존재하는지 검토 - 신규 기능 추가 시 기존 비즈니스 로직의 코드를 수정해야 하는지 확인 - 변경 빈도가 높은 도메인 로직을 추상 클래스나 인터페이스로 분리하여 확장 지점 확보

원문 읽기