From 567673ab23ab67d2feeef71d43d8a534b22d2bba Mon Sep 17 00:00:00 2001 From: kanghana1 Date: Sat, 3 Oct 2026 16:21:37 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EB=B6=80=ED=95=98=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20=EC=8B=A4=ED=96=89=20=ED=99=98=EA=B2=BD=20=EA=B5=AC?= =?UTF-8?q?=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - SPRING_PROFILES_ACTIVE를 .env로 토글 (평소 prod / 부하시 prod,loadtest) - 시드 확장: 회원 100->2500, 과목 20->30 - 경량 지표 노출: actuator + micrometer-prometheus (tomcat threads / hikaricp connections / cpu) -> /actuator/prometheus --- .env.example | 3 +++ build.gradle | 4 ++++ docker-compose.prod.yml | 2 +- .../global/init/DataInitializer.java | 2 +- src/main/resources/application-prod.yml | 14 ++++++++++++-- 5 files changed, 21 insertions(+), 4 deletions(-) diff --git a/.env.example b/.env.example index 818b8a4..efb25aa 100644 --- a/.env.example +++ b/.env.example @@ -4,6 +4,9 @@ # Docker Hub 사용자명 (앱 이미지: /docker-springboot:latest) DOCKER_USERNAME=your-dockerhub-username +# Spring 프로파일 (평소 prod / 부하테스트 시 prod,loadtest 로 변경하면 헤더 기반 userId 활성화) +SPRING_PROFILES_ACTIVE=prod + # MySQL MYSQL_ROOT_PASSWORD=change-me-root-password DB_NAME=course_register diff --git a/build.gradle b/build.gradle index 4343738..c27da78 100644 --- a/build.gradle +++ b/build.gradle @@ -60,6 +60,10 @@ dependencies { // redisson implementation 'org.redisson:redisson-spring-boot-starter:3.27.2' + + // monitoring (부하테스트용 지표: thread pool / connection pool / cpu) + implementation 'org.springframework.boot:spring-boot-starter-actuator' + implementation 'io.micrometer:micrometer-registry-prometheus' } tasks.named('test') { diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index 4ee7077..f81e812 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -42,7 +42,7 @@ services: ports: - "80:8080" environment: - SPRING_PROFILES_ACTIVE: prod + SPRING_PROFILES_ACTIVE: ${SPRING_PROFILES_ACTIVE:-prod} DB_HOST: mysql DB_PORT: 3306 DB_NAME: ${DB_NAME} diff --git a/src/main/java/com/practice/course_registration/global/init/DataInitializer.java b/src/main/java/com/practice/course_registration/global/init/DataInitializer.java index 15bf16a..a767c37 100644 --- a/src/main/java/com/practice/course_registration/global/init/DataInitializer.java +++ b/src/main/java/com/practice/course_registration/global/init/DataInitializer.java @@ -50,7 +50,7 @@ public void run(String... args) { private void seedSubjects() { SubjectDay[] days = SubjectDay.values(); List subjects = new ArrayList<>(); - for (int i = 1; i <= 20; i++) { + for (int i = 1; i <= 30; i++) { subjects.add(Subject.builder() .subjectName("테스트과목" + i) .professorName("교수" + i) diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml index 4130b4b..371e554 100644 --- a/src/main/resources/application-prod.yml +++ b/src/main/resources/application-prod.yml @@ -43,5 +43,15 @@ server: app: seed: enabled: true - member-count: 100 - member-password: test1234 \ No newline at end of file + member-count: 2500 + member-password: test1234 + +# 부하테스트용 지표 노출 (thread pool / connection pool / cpu) +management: + endpoints: + web: + exposure: + include: health, prometheus + metrics: + tags: + application: course-registration \ No newline at end of file