MINU Framework v3 - Developer Guide Help

시작하기

개발 환경 설정하기

  • 필수 프로그램 설치

  • 프로젝트 설정

    • Git 저장소 클론

    git clone [repository-url]
    • Gradle 빌드

    ./gradlew clean build

프로젝트 구조 이해하기

1. 프로젝트 개요

이 프로젝트는 마이크로서비스 아키텍처(MSA) 기반의 Java 프로젝트입니다. 엔터프라이즈급 애플리케이션으로, 각 도메인별로 독립적인 서비스를 운영할 수 있도록 설계되어 있습니다.

2. 프로젝트 구조

2.1 빌드 도구

  • Gradle을 사용 (build.gradle, settings.gradle, gradlew 파일들 존재)

  • Maven 저장소 사용 (Nexus 프록시, Maven Central, Google 저장소)

2.2 주요 마이크로서비스 모듈

  • damda-workflow: 워크플로우 관련 서비스

  • damda-webapp: 웹 애플리케이션

  • damda-human-resource-mng: 인사 관리 시스템

  • damda-system: 시스템 관리

  • damda-domain-data: 도메인 데이터 관리

  • damda-api-client: API 클라이언트

  • damda-commons: 공통 유틸리티

2.3 인프라스트럭처 관련 모듈

  • _msa-api-gateway: API 게이트웨이

  • _msa-service-discovery: 서비스 디스커버리

  • _msa-system-doctor: 시스템 모니터링/진단

  • _minu-code-gen: 코드 생성기

2.4 부트스트랩 모듈

  • bootstrap-human-resource-mng

  • bootstrap-system

  • bootstrap-workflow

2.5 데이터베이스 관련

  • _flyway: 데이터베이스 마이그레이션 도구

    • PostgreSQL 데이터베이스 사용 (버전 42.6.0)

    • 데이터베이스 호스트: 116.40.17.53:32345

    • 스키마: 'damda2'

2.6 CI/CD 관련

  • _jenkinsfile: Jenkins 파이프라인 설정

  • _docker: Docker 관련 설정

2.7 개발 환경 설정

  • .vscode/: VS Code 설정

  • .idea/: IntelliJ IDEA 설정

  • .gradle/: Gradle 캐시 및 설정

3. 기술 스택

3.1 프레임워크

  • MINU 프레임워크 사용

  • Spring Cloud 기반의 마이크로서비스 아키텍처

3.2 데이터베이스

  • PostgreSQL (버전 42.6.0)

  • Flyway를 통한 데이터베이스 마이그레이션 관리

3.3 개발 도구

  • Gradle 빌드 도구

  • Docker 컨테이너화

  • Jenkins CI/CD 파이프라인

4. 프로젝트 특징

  1. 모듈식 구조: 여러 개의 마이크로서비스로 구성된 모듈식 구조

  2. 도메인 분리: 인사 관리, 워크플로우, 시스템 관리 등 다양한 비즈니스 도메인 포함

  3. 현대적 개발 환경:

    • 컨테이너화(Docker) 지원

    • CI/CD 파이프라인 구축

    • 다양한 개발 도구 통합

5. 의존성 관리

  • Maven 저장소 사용

  • Nexus를 프록시로 활용

  • Maven Central과 Google 저장소 통합

  • Gradle을 통한 의존성 관리

sdkman (윈도우 설치)

  1. git-bash로 다음 명령 실행.

    curl -s "https://get.sdkman.io" | bash

    💡 사용자 디렉토리에 한글명이 포함된 경우 한글명이 포함되지 않은 경로로 설정

    ex)

    export SDKMAN_DIR="C:\dev_home\env\sdkman" && curl -s "https://get.sdkman.io" | bash
  2. git-bash에 zip 파일이 없는 경우 sdkman이 zip을 설치하라고 경고를 하고 종료됨.

  3. 아래 사이트에서 zip-3.0-bin.zip을 다운로드 받아서 압축 해제 후, bin 폴더를 c:\Program Files\Git\usr\bin 으로 복사.

GnuWin

  1. 다시 sdkman을 실행하면 설치가 진행됨.

  2. zulufx 설치는 sdkman 설치가 완료 후, sdk list java로 설치 가능한 목록을 확인한 후 원하는 버전을 선택하여 설치. 설치 명령어는 아래 참조.

sdk install java 17.0.8-amzn
  1. 설치한 jdk를 시스템 기본으로 하기위해서는 아래 명령 실행

sdk default java 17.0.8-amzn

IntelliJ IDEA 설정

프로젝트 열기

  1. [파일] - [열기]를 클릭

  2. 클론한 프로젝트의 build.gradle 파일을 선택

  3. [프로젝트 열기] 버튼 클릭

  4. 소스가 로드되면 [빌드] - [프로젝트 빌드] 클릭

프로젝트 기본 설정

JDK 설정

  1. [파일] - [프로젝트 구조] - [프로젝트 설정] - [프로젝트] 메뉴 이동

  2. SDK: Amazon Corretto 17 선택

  3. 언어 수준: SDK default 설정

Gradle 설정

  1. [설정] - [빌드, 실행, 배포] - [Gradle] 메뉴 이동

  2. 다음 항목 설정:

    • 다음을 사용하여 빌드 및 실행: IntelliJ IDEA

    • 다음을 사용하여 테스트 실행: IntelliJ IDEA

    • Gradle JVM: 프로젝트 SDK

    • 배포: 로컬 설치 (Gradle 설치 경로 지정)

어노테이션 프로세서 설정

  1. [설정] - [컴파일러] - [어노테이션 프로세서] 메뉴 이동

  2. "어노테이션 처리 활성화" 체크박스 선택

파일 인코딩 설정

  1. [설정] - [에디터] - [파일 인코딩] 메뉴 이동

  2. 다음 항목을 모두 UTF-8로 설정:

    • 전역 인코딩

    • 프로젝트 인코딩

    • 프로퍼티 파일에 대한 디폴트 인코딩

Dynamic Classpath 설정

  1. .idea/workspace.xml 파일 열기

  2. <component name="PropertiesComponent"> 태그 아래에 추가:

    <property name="dynamic.classpath" value="true" />

라이센스 설정

  1. 프로젝트 루트에 _temp/certs 디렉토리 생성

  2. 발급받은 라이센스 파일을 _temp/certs 디렉토리에 복사

프로젝트 실행

프로젝트 실행을 위한 모듈 설정

  1. ex) webapp과 sys 모듈의 통신을 하기 위해 webapp의 application-routes.yml 파일의 api-gateway - sys 주석 해제

  2. webapp 실행 전 application-routes.yml에서 주석을 해제한 bootstrap 모듈의 AppRunner를 실행 3.모듈들이 정상적으로 실행되면 webapp - AppRunner 실행

Last modified: 20 March 2025