시작하기
개발 환경 설정하기
필수 프로그램 설치
IntelliJ IDEA 또는 Eclipse
Git
Gradle
프로젝트 설정
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-mngbootstrap-systembootstrap-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. 프로젝트 특징
모듈식 구조: 여러 개의 마이크로서비스로 구성된 모듈식 구조
도메인 분리: 인사 관리, 워크플로우, 시스템 관리 등 다양한 비즈니스 도메인 포함
현대적 개발 환경:
컨테이너화(Docker) 지원
CI/CD 파이프라인 구축
다양한 개발 도구 통합
5. 의존성 관리
Maven 저장소 사용
Nexus를 프록시로 활용
Maven Central과 Google 저장소 통합
Gradle을 통한 의존성 관리
sdkman (윈도우 설치)
git-bash로 다음 명령 실행.
curl -s "https://get.sdkman.io" | bash💡 사용자 디렉토리에 한글명이 포함된 경우 한글명이 포함되지 않은 경로로 설정
ex)
export SDKMAN_DIR="C:\dev_home\env\sdkman" && curl -s "https://get.sdkman.io" | bashgit-bash에 zip 파일이 없는 경우 sdkman이 zip을 설치하라고 경고를 하고 종료됨.
아래 사이트에서 zip-3.0-bin.zip을 다운로드 받아서 압축 해제 후, bin 폴더를 c:\Program Files\Git\usr\bin 으로 복사.
다시 sdkman을 실행하면 설치가 진행됨.
zulufx 설치는 sdkman 설치가 완료 후, sdk list java로 설치 가능한 목록을 확인한 후 원하는 버전을 선택하여 설치. 설치 명령어는 아래 참조.
설치한 jdk를 시스템 기본으로 하기위해서는 아래 명령 실행
IntelliJ IDEA 설정
프로젝트 열기
[파일] - [열기]를 클릭
클론한 프로젝트의
build.gradle파일을 선택[프로젝트 열기] 버튼 클릭
소스가 로드되면 [빌드] - [프로젝트 빌드] 클릭
프로젝트 기본 설정
JDK 설정
[파일] - [프로젝트 구조] - [프로젝트 설정] - [프로젝트] 메뉴 이동
SDK: Amazon Corretto 17 선택
언어 수준: SDK default 설정
Gradle 설정
[설정] - [빌드, 실행, 배포] - [Gradle] 메뉴 이동
다음 항목 설정:
다음을 사용하여 빌드 및 실행: IntelliJ IDEA
다음을 사용하여 테스트 실행: IntelliJ IDEA
Gradle JVM: 프로젝트 SDK
배포: 로컬 설치 (Gradle 설치 경로 지정)
어노테이션 프로세서 설정
[설정] - [컴파일러] - [어노테이션 프로세서] 메뉴 이동
"어노테이션 처리 활성화" 체크박스 선택
파일 인코딩 설정
[설정] - [에디터] - [파일 인코딩] 메뉴 이동
다음 항목을 모두 UTF-8로 설정:
전역 인코딩
프로젝트 인코딩
프로퍼티 파일에 대한 디폴트 인코딩
Dynamic Classpath 설정
.idea/workspace.xml파일 열기<component name="PropertiesComponent">태그 아래에 추가:<property name="dynamic.classpath" value="true" />
라이센스 설정
프로젝트 루트에
_temp/certs디렉토리 생성발급받은 라이센스 파일을
_temp/certs디렉토리에 복사
프로젝트 실행
프로젝트 실행을 위한 모듈 설정
ex) webapp과 sys 모듈의 통신을 하기 위해 webapp의 application-routes.yml 파일의 api-gateway - sys 주석 해제
webapp 실행 전 application-routes.yml에서 주석을 해제한 bootstrap 모듈의 AppRunner를 실행 3.모듈들이 정상적으로 실행되면 webapp - AppRunner 실행