· 오픈소스-프로젝트-분석-일지

「고스락」 프로젝트 백엔드 개발 분석

공연 티켓 판매 서버의 Api·Domain·Infrastructure 멀티모듈 구성을 따라가며, 파사드 패턴과 커스텀 어노테이션으로 도메인 개념을 코드에 드러내는 방식과 FeignClient 사용을 정리한 분석 기록.

🔍 「고스락」 프로젝트 백엔드 개발 분석

📅 분석 일자: 2024-10-07

🏗️ 프로젝트 정보

  • 프로젝트명: 고스락
  • GitHub 링크: https://github.com/johndoe/taskmaster
  • 개발자/팀: 홍익대학교 컴퓨터공학과 밴드
  • 주요 기능: 티켓 판매, 설문, 명단 조회, QR티켓, 공연

🏷️ 주요 키워드

  • 지속 성장 가능한 소프트웨어, Facade Pattern (파사드 패턴)

💻 기술 스택

  • 백엔드: Java, Spring Boot

🛠️ 구현 방식

패키지 구조

image

멀티모듈 구성

image
  • 모듈별 레이어를 나누어서 서버 구축

🎁 [서비스 명]-Api 모듈
image
  • 공통, 도메인, 인프라 3가지 모듈에 의존
  • 최상단 레이어인 presentation 이며, 컨트롤러 존재
image
  • 특징으로는 비즈니스 로직(도메인 언어)로 작성된 부분은 조합해서 구성 (Facade Pattern)
  • 이전 지속 성장 가능한 소프트웨어 구성이랑 비슷한 패턴을 가지고 구현
image
[서비스 명]-Api 모듈의 특징 4가지
특징 1
image
특징 2 - 커스텀 어노테이션 사용 (도메인 개념)
image
특징 3 - 커스텀 어노테이션 사용 (Spring AOP)
image
특징 4
image
🎁 [서비스 명]-Domain 모듈
image
  • 비즈니스 구현 레이어 있는 모듈
[서비스 명]-Domain 모듈의 특징 1가지 - 커스텀 어노테이션 (기능 명시)
image
좀 더 살펴보자면
image
  • 이렇게 기능들을 조합해서 서비스(비즈니스) 로직을 구성
  • 추가로 각 기능을 커스텀 어노테이션 이용해 명시적으로 구성
각 개념별로 로직 구성에다가 덧붙이면
image
🎁 [서비스 명]-Infrastructure 모듈
image
[서비스 명]-Infrastructure 모듈의 특징 1가지 - 선언적 방식의 HTTP 클라이언트 사용 @FeignClient
image image

💡 주요 기술적 인사이트

  1. 퍼사드 패턴을 이용해 비즈니스 로직 구성
  2. 커스텀 어노테이션 기능을 적극 활용해 코드 가독성을 높임
  3. 레이어별(기능)으로 모듈을 분리해 멀티 모듈 구성