「고스락」 프로젝트 백엔드 개발 분석
공연 티켓 판매 서버의 Api·Domain·Infrastructure 멀티모듈 구성을 따라가며, 파사드 패턴과 커스텀 어노테이션으로 도메인 개념을 코드에 드러내는 방식과 FeignClient 사용을 정리한 분석 기록.
🔍 「고스락」 프로젝트 백엔드 개발 분석
📅 분석 일자: 2024-10-07
🏗️ 프로젝트 정보
- 프로젝트명: 고스락
- GitHub 링크: https://github.com/johndoe/taskmaster
- 개발자/팀: 홍익대학교 컴퓨터공학과 밴드
- 주요 기능: 티켓 판매, 설문, 명단 조회, QR티켓, 공연
🏷️ 주요 키워드
- 지속 성장 가능한 소프트웨어, Facade Pattern (파사드 패턴)
💻 기술 스택
- 백엔드: Java, Spring Boot
🛠️ 구현 방식
패키지 구조
멀티모듈 구성
- 모듈별 레이어를 나누어서 서버 구축
🎁 [서비스 명]-Api 모듈
- 공통, 도메인, 인프라 3가지 모듈에 의존
- 최상단 레이어인 presentation 이며, 컨트롤러 존재
- 특징으로는 비즈니스 로직(도메인 언어)로 작성된 부분은 조합해서 구성 (Facade Pattern)
- 이전
지속 성장 가능한 소프트웨어구성이랑 비슷한 패턴을 가지고 구현
[서비스 명]-Api 모듈의 특징 4가지
특징 1
특징 2 - 커스텀 어노테이션 사용 (도메인 개념)
특징 3 - 커스텀 어노테이션 사용 (Spring AOP)
특징 4
🎁 [서비스 명]-Domain 모듈
- 비즈니스 구현 레이어 있는 모듈
[서비스 명]-Domain 모듈의 특징 1가지 - 커스텀 어노테이션 (기능 명시)
좀 더 살펴보자면
- 이렇게 기능들을 조합해서 서비스(비즈니스) 로직을 구성
- 추가로 각 기능을
커스텀 어노테이션이용해 명시적으로 구성
각 개념별로 로직 구성에다가 덧붙이면
🎁 [서비스 명]-Infrastructure 모듈
[서비스 명]-Infrastructure 모듈의 특징 1가지 - 선언적 방식의 HTTP 클라이언트 사용 @FeignClient
💡 주요 기술적 인사이트
- 퍼사드 패턴을 이용해 비즈니스 로직 구성
- 커스텀 어노테이션 기능을 적극 활용해 코드 가독성을 높임
- 레이어별(기능)으로 모듈을 분리해 멀티 모듈 구성