Global Backend Architecture

글로벌팀의 백엔드 아키텍처 설계 프로젝트 아키텍처를 객체지향 관점에서 설명하고, 각 레이어에 사용된 주요 디자인 패턴과 SOLID 원칙을 설명합니다. 📐 전체 레이어 구조 (Layered Architecture) «Interface»Router«Controller» Controller«Service» Service«Repository» Repository(CRUDBase 서브클래스)«DB» DB«Utils» Utils / Helpers호출요청 처리CRUD & 쿼리데이터 영속화로깅 / 예외 처리트랜잭션 관리공통 유틸 1. Interface Layer (Router) 책임 HTTP 요청을 엔드포인트로 매핑 사용 패턴 Adapter Pattern 외부 REST 인터페이스를 내부 서비스 호출 인터페이스로 “어댑트” SOLID SRP: HTTP 경로 매핑만 담당 2. Controller Layer 책임 요청 바인딩 (Pydantic DTO) 인증·인가, 유효성 검사 Service 호출 및 응답 변환 사용 패턴 Facade Pattern 복잡한 서비스 호출 흐름을 단일 메서드(액션)로 단순화 SOLID SRP, ISP (DTO·Service 인터페이스만 사용) 3. Service Layer 책임 비즈니스 로직 오케스트레이션 (예: 주문 생성 → 쿠폰 적용 → 재고 검증 → 결제) 트랜잭션 경계 설정 도메인 규칙 적용 사용 패턴 Service Layer Pattern (비즈니스 유스케이스 캡슐화) Specification/Builder (필터·페이징 조건 조립) SOLID SRP, DIP (추상 CRUD 인터페이스에 의존), LSP (서브클래스로 대체 가능) 4. Repository Layer (CRUDBase 서브클래스) 책임 순수 DB 엑세스 (create, get, get_multi, update, remove) 공통 쿼리 빌드 (filter_and_sort_builder, bulk_update) 연관 엔티티 부착 (attach_related) 사용 패턴 Repository Pattern (도메인 객체 컬렉션 추상화) Generic Repository (제네릭 기반 CRUDBase) Template Method Pattern (CRUDBase가 알고리즘 뼈대, 서브클래스가 세부 구현) SOLID OCP (기본 로직은 변경 없이 서브클래스로 확장), ISP 5. Utility Layer (Utils / Helpers) 책임 횡단 관심사 처리 (로깅, 트랜잭션 예외 처리 등) 모델 직렬화, 날짜 포맷 등 순수 함수 사용 패턴 Decorator Pattern @handle_db_errors, @transactional 등으로 메서드 전후 로직 분리 SOLID SRP, DIP (서비스/리포지토리 레이어에 직접 비즈니스 로직 혼입 금지) 🔑 SOLID 원칙 적용 요약 SRP (단일 책임) ...

2025-08-07 09:32 · 2 분 · 298 단어 · 조성배