Skip to content

athenhub/common

Repository files navigation

AthenHub Common Modules

📦 공통 모듈 소개

AthenHub 서비스 전반에서 반복적으로 등장하는 에러 처리, 메시지 번역, 공통 응답 포맷, MVC 설정, 유틸리티 기능을 하나의 플랫폼으로 통합하기 위해 설계된 멀티모듈 기반 공통 라이브러리입니다.

🎯 목적(Purpose)

  • 서비스 전반의 표준화와 일관성 확보
  • 반복되는 설정 및 공통 기능 제거 → 개발 생산성 향상
  • 공통 기능을 중앙 관리 → 변경 영향 최소화
  • 서비스의 비즈니스 로직만 남도록 하는 관심사 분리(Separation of Concerns)

🏗️ 멀티 모듈 구조(Multi-Module Architecture)

common/
  ├── common-core
  ├── common-mvc
  └── common-util

멀티모듈 도입 이유

  1. 역할과 책임(Responsibility)의 명확한 분리
  • 단일 모듈에서는 MVC, 유틸, 에러 규칙이 혼재되어 유지보수와 확장이 어려움.
  • 모듈 분리를 통해 SRP(Single Responsibility Principle)를 지키고 책임을 명확히 분리.
  1. 불필요한 의존성 제거 및 서비스 경량화
  • MVC 기능이 필요한 서비스만 common-mvc를 의존하도록 설정하여
  • 배치 서비스, 내부 모듈, 테스트 환경 등에서는 core/util만 가져가도록 최적화.
  1. 변경 영향(Impact) 최소화
  • core 변경 → mvc/util 영향 없음
  • mvc 변경 → core 영향 없음
  • 작은 수정이 전체에 영향 주지 않도록 설계.
  1. CI/CD 속도 및 빌드 효율성 증가
  • Gradle 멀티모듈 캐싱 → “변경된 모듈만 빌드” 가능
  1. 서비스 확장성을 고려한 설계
  • 추후 common-webflux, common-kafka 등 새로운 공통 모듈 추가가 용이한 구조.

📁 모듈별 상세 설명

1️⃣ common-core

📌 의도 (Purpose)

전사 공통 규칙을 정의하는 가장 기본적인 레이어

Spring, MVC 등 프레임워크에 전혀 의존하지 않고
AthenHub 서비스에서 반드시 일관되게 사용해야 하는
표준 규격·에러 모델·Value Object 등을 담고 있습니다.

✔ 주요 기능

  • GlobalErrorCode — 전사 공통 에러 코드 정의
  • ApplicationException — HTTP 상태/메시지/코드 기반 에러 추상화
  • 순수 Java 기반 모델, Value Object, 인터페이스 제공

✔ 설계 철학

  • 프레임워크 독립
  • 가장 낮은 레벨의 모듈
  • MVC/Util/각 도메인 서비스에서 공통으로 참조

2️⃣ common-mvc

📌 의도 (Purpose)

Spring MVC 환경에서 필요로 하는 공통 기능을 자동화

Spring Boot 기반 서비스에서 반복되는 설정을 자동으로 등록하여 서비스 개발자가 비즈니스 로직에 집중할 수 있도록 돕습니다.

✔ 주요 기능

  • Global Exception Handler 자동 등록
  • MessageResolver 및 i18n 메시지 처리
  • SpringDoc 기반 SwaggerConfig 자동 제공
  • Spring Boot AutoConfiguration 사용

✔ 설계 철학

  • MVC 설정을 공통화하여 중복 제거
  • framework-specific 설정은 모두 mvc 모듈에서 처리
  • service는 Controller/Service 로직에만 집중하게 함

3️⃣ common-util

📌 의도 (Purpose)

다양한 서비스에서 재사용 가능한 일반 유틸 기능 제공

프레임워크와 무관한 순수 Java 유틸리티 기능을 제공하여 서비스별 중복 코드를 제거합니다.

✔ 주요 기능

  • 문자열 유틸 / 날짜 유틸
  • Converter / Format 유틸

✔ 설계 철학

  • 순수 Java 코드만 배치
  • core/mvc/각 서비스 어디서든 참조 가능
  • 범용적이고 안정적인 로직 제공

💡 결론 — 전사 통합 공통 플랫폼

AthenHub 공통 모듈은 다음을 목표로 합니다:

  • 전사 기술 표준화
  • 서비스 간 일관성 확보
  • 비즈니스 코드와 환경 설정의 완전한 분리
  • 유지보수 효율 극대화

⚙️ athenhub/common 라이브러리 설정 가이드

본 문서는 athenhub/common 라이브러리를 Gradle 기반 프로젝트에서 설정 방법을 정리한 가이드입니다.
GitHub Packages 저장소를 활용하므로, 필요한 GitHub Token 발급 및 gradle.properties 설정 방법도 함께 안내합니다.

🧪 1. Maven 저장소 추가

프로젝트의 build.gradle 또는 build.gradle.kts에 아래 저장소(repository)를 추가하세요.

repositories {
    mavenCentral()
    maven {
        name = "GitHubPublicPackages"
        url = uri("https://maven.pkg.github.com/athenhub/common")
        credentials {
            username = project.findProperty("gpr.user") ?: System.getenv("GITHUB_ACTOR")
            password = project.findProperty("gpr.key") ?: System.getenv("GITHUB_TOKEN")
        }
    }
}

💡 GitHub Packages는 인증 정보가 필요하므로 credentials 설정이 반드시 필요합니다.

📚 2. 의존성 추가

  • build.gradle 에 다음과 같이 라이브러리 의존성을 등록하세요.
  • 내 서비스에 필요한 의존성만 등록 할 수 있습니다.
dependencies {
    implementation 'com.athenhub:common-core:{version}'
    implementation 'com.athenhub:common-util:{version}'
    implementation 'com.athenhub:common-mvc:{version}'
}

최신 버전은 아래 GitHub Packages 페이지에서 확인할 수 있습니다.
👉 https://github.com/athenhub/common/packages

🔐 3. gradle.properties 설정

프로젝트 루트에 gradle.properties 파일을 생성하고, GitHub 인증 정보를 입력합니다.

gpr.user=깃허브ID
gpr.key=깃허브TOKEN

🔑 GitHub Token 발급 팁

  • GitHub → Settings → Developer settings → Personal access tokens → Tokens (classic)
  • read:packages 권한만 있으면 충분합니다.

✅ 마무리

위의 과정을 모두 완료하면 athenhub/common 라이브러리를 정상적으로 가져와 프로젝트에서 사용할 수 있습니다.

About

Athenhub 공통 코드 패키지

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages