프로젝트

일반

사용자정보

Actions

새기능 #5815

완료됨

새기능 #5814: ITN-HUB 공공저작물 신유형개방 사업관리 시스템 구축

[ITN-HUB] 개발 환경 및 기술 스택 정리

이호영이(가) 약 한달 전에 추가함.

상태:
완료
우선순위:
보통
담당자:
시작시간:
2026/07/22
완료기한:
진척도:

100%

추정시간:
난이도:

설명

개요

이 시스템을 처음 받아 보는 사람이 로컬에서 띄우고 고칠 수 있도록 환경과 스택을 정리한다. 저장소 README와 같은 내용이다.

기술 스택

구분 사용 버전 고른 이유
언어(서버) Java 21 (LTS) 사내 표준. record·switch 패턴매칭 사용
프레임워크 Spring Boot 3.3.5 사내 다른 시스템과 동일
DB 접근 MyBatis 3.x SQL을 직접 보는 편이 집계 쿼리 손보기 쉬움
DB PostgreSQL 16 jsonb·filter 절 활용
스키마 관리 Flyway - V1~V18. 손으로 DDL 치지 않음
언어(화면) TypeScript 5.x
화면 React + Vite 18 / 5.4
스타일 Tailwind CSS 3.x 시안을 그대로 옮기기 쉬움
테스트(서버) JUnit5 + Testcontainers - 실제 PostgreSQL 컨테이너로 검증
테스트(화면) Vitest + Testing Library -
외부 연동 Mattermost REST API v4 채널·게시글·파일

빌드 구조

단일 jar로 만든다. frontend-maven-plugin이 Node 20.17.0을 내려받아 npm run build를 돌리고, 결과물이 src/main/resources/static으로 들어가 백엔드 jar 안에 함께 패키징된다. 배포 산출물이 하나뿐이라 웹서버를 따로 두지 않는다.

mvn -B package          # 프런트 빌드까지 포함
mvn -B test             # 백엔드 테스트 (Docker 필요)
cd frontend && npm test # 화면 테스트

실행에 필요한 환경변수

변수 용도
DB_URL / DB_USERNAME / DB_PASSWORD PostgreSQL 접속
MATTERMOST_URL / MATTERMOST_TOKEN / MATTERMOST_TEAM_ID Mattermost 연동
APP_ADMIN_USERNAME / APP_ADMIN_PASSWORD 관리자 계정
APP_ADMIN_DISPLAY_NAME 기록에 남길 작성자 이름(기본 관리자)
SERVER_PORT 기본 8877

토큰·비밀번호는 저장소에 두지 않는다. 로컬은 run-local.ps1, 서버는 별도 env 파일로 주입한다.

로컬 개발 준비물

  • JDK 21
  • Maven 3.9
  • Docker Desktop — 백엔드 테스트가 Testcontainers로 PostgreSQL을 띄운다. 꺼져 있으면 DB 테스트가 전부 실패한다.
  • Node는 따로 깔지 않아도 된다(Maven이 받아온다). 화면만 따로 돌릴 때는 필요.

특이사항

  • 파일 인코딩은 UTF-8(BOM 없음) 로 통일한다. PowerShell로 파일을 손보면 BOM이 붙어 Java 컴파일이 깨진다(실제로 겪었다).
  • 셸 스크립트는 CRLF로 체크아웃되면 리눅스에서 깨진다. .gitattributes로 LF 고정.
  • Testcontainers는 컨테이너를 테스트 JVM 전체에서 한 번만 띄우는 싱글턴 방식을 쓴다. 클래스마다 띄우면 두 번째 DB 테스트가 Connection refused로 죽는다.

표시할 데이터가 없습니다.

Actions

내보내기 Atom PDF