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