From b9e58229070aa6169a631918a4079a58788c96c2 Mon Sep 17 00:00:00 2001 From: Yeongseo Na Date: Sun, 16 Feb 2025 15:48:36 +0900 Subject: [PATCH 1/4] =?UTF-8?q?chore:=20=EC=8A=A4=ED=85=8C=EC=9D=B4?= =?UTF-8?q?=EC=A7=80=20profile=20=EB=B3=80=EA=B2=BD=20(#217)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: stage profile 변경 * chore: 서브모듈 업데이트 * chore: 서브모듈 업데이트 --- .github/workflows/stage-cd.yml | 2 +- src/main/resources/secret | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/stage-cd.yml b/.github/workflows/stage-cd.yml index 7aa70fe65..3409a3829 100644 --- a/.github/workflows/stage-cd.yml +++ b/.github/workflows/stage-cd.yml @@ -33,7 +33,7 @@ jobs: run: chmod +x ./gradlew - name: Build with Gradle - run: ./gradlew bootJar -Dspring.profiles.active=prod + run: ./gradlew bootJar -Dspring.profiles.active=stage - name: Copy jar file to remote uses: appleboy/scp-action@master diff --git a/src/main/resources/secret b/src/main/resources/secret index 88d71bb3e..496ba4a63 160000 --- a/src/main/resources/secret +++ b/src/main/resources/secret @@ -1 +1 @@ -Subproject commit 88d71bb3ee42d1733e4e7dcdb9516a4fa0a5bea9 +Subproject commit 496ba4a63952ff154508f60b66c456bfd125e519 From 5bd700dd7754967cd8db1ef0f9e0e621e380c31c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=ED=99=A9=EA=B7=9C=ED=98=81?= <126947828+Gyuhyeok99@users.noreply.github.com> Date: Mon, 17 Feb 2025 15:39:58 +0900 Subject: [PATCH 2/4] =?UTF-8?q?fix:=20=EC=A7=80=EC=9B=90=20=EB=82=B4?= =?UTF-8?q?=EC=97=AD=20=EC=A1=B0=ED=9A=8C=20=EC=8B=9C=20=EC=BA=90=EC=8B=9C?= =?UTF-8?q?=20=EA=B0=B1=EC=8B=A0=20=EB=AC=B8=EC=A0=9C=20=EC=9E=84=EC=8B=9C?= =?UTF-8?q?=20=ED=95=B4=EA=B2=B0=20(#220)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 캐시 키를 단일화하여 관리 - 지원서 등록 시 캐시 자동 삭제 로직 추가 --- .../application/service/ApplicationQueryService.java | 3 ++- .../service/ApplicationSubmissionService.java | 11 ++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/example/solidconnection/application/service/ApplicationQueryService.java b/src/main/java/com/example/solidconnection/application/service/ApplicationQueryService.java index 170d7cf13..3208d24af 100644 --- a/src/main/java/com/example/solidconnection/application/service/ApplicationQueryService.java +++ b/src/main/java/com/example/solidconnection/application/service/ApplicationQueryService.java @@ -46,7 +46,8 @@ public class ApplicationQueryService { * - 1지망, 2지망 지원자들을 조회한다. * */ @Transactional(readOnly = true) - @ThunderingHerdCaching(key = "application:query:{1}:{2}", cacheManager = "customCacheManager", ttlSec = 86400) + // todo: 임시로 단일 키로 캐시 적용. 추후 캐싱 전략 재검토 필요. + @ThunderingHerdCaching(key = "applications:all", cacheManager = "customCacheManager", ttlSec = 86400) public ApplicationsResponse getApplicants(SiteUser siteUser, String regionCode, String keyword) { // 국가와 키워드와 지역을 통해 대학을 필터링한다. List universities diff --git a/src/main/java/com/example/solidconnection/application/service/ApplicationSubmissionService.java b/src/main/java/com/example/solidconnection/application/service/ApplicationSubmissionService.java index dec092f5e..ea05c3c0c 100644 --- a/src/main/java/com/example/solidconnection/application/service/ApplicationSubmissionService.java +++ b/src/main/java/com/example/solidconnection/application/service/ApplicationSubmissionService.java @@ -4,6 +4,7 @@ import com.example.solidconnection.application.dto.ApplyRequest; import com.example.solidconnection.application.dto.UniversityChoiceRequest; import com.example.solidconnection.application.repository.ApplicationRepository; +import com.example.solidconnection.cache.annotation.DefaultCacheOut; import com.example.solidconnection.custom.exception.CustomException; import com.example.solidconnection.score.domain.GpaScore; import com.example.solidconnection.score.domain.LanguageTestScore; @@ -18,14 +19,9 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; import java.util.Optional; -import java.util.Set; import static com.example.solidconnection.custom.exception.ErrorCode.APPLY_UPDATE_LIMIT_EXCEED; -import static com.example.solidconnection.custom.exception.ErrorCode.CANT_APPLY_FOR_SAME_UNIVERSITY; import static com.example.solidconnection.custom.exception.ErrorCode.INVALID_GPA_SCORE; import static com.example.solidconnection.custom.exception.ErrorCode.INVALID_GPA_SCORE_STATUS; import static com.example.solidconnection.custom.exception.ErrorCode.INVALID_LANGUAGE_TEST_SCORE; @@ -48,6 +44,11 @@ public class ApplicationSubmissionService { // 학점 및 어학성적이 모두 유효한 경우에만 지원서 등록이 가능하다. // 기존에 있던 status field 우선 APRROVED로 입력시킨다. @Transactional + // todo: 임시로 새로운 신청 생성 시 기존 캐싱 데이터를 삭제한다. 추후 수정 필요 + @DefaultCacheOut( + key = {"applications:all"}, + cacheManager = "customCacheManager" + ) public boolean apply(SiteUser siteUser, ApplyRequest applyRequest) { UniversityChoiceRequest universityChoiceRequest = applyRequest.universityChoiceRequest(); From c54ce99530f889cc6e80783aad0f2db79154c268 Mon Sep 17 00:00:00 2001 From: Yeongseo Na Date: Mon, 17 Feb 2025 19:09:32 +0900 Subject: [PATCH 3/4] =?UTF-8?q?chore:=20stage,=20prod=20docker-compose=20?= =?UTF-8?q?=ED=8C=8C=EC=9D=BC=20=EB=B6=84=EB=A6=AC=20(#218)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: spring profile을 docker file에서 지정하지 않도록 * chore: docker compose 파일 prod, stage 분리 * chore: cd에서 환경에 맞는 docker-compse를 쓰도록 * chore: 서브모듈 업데이트 --- .github/workflows/prod-cd.yml | 6 ++-- .github/workflows/stage-cd.yml | 6 ++-- Dockerfile | 2 +- docker-compose.yml => docker-compose.prod.yml | 3 +- docker-compose.stage.yml | 33 +++++++++++++++++++ src/main/resources/secret | 2 +- 6 files changed, 43 insertions(+), 9 deletions(-) rename docker-compose.yml => docker-compose.prod.yml (92%) create mode 100644 docker-compose.stage.yml diff --git a/.github/workflows/prod-cd.yml b/.github/workflows/prod-cd.yml index 7a2601800..75d9e7c11 100644 --- a/.github/workflows/prod-cd.yml +++ b/.github/workflows/prod-cd.yml @@ -33,7 +33,7 @@ jobs: run: chmod +x ./gradlew - name: Build with Gradle - run: ./gradlew bootJar -Dspring.profiles.active=prod + run: ./gradlew bootJar - name: Copy jar file to remote uses: appleboy/scp-action@master @@ -59,7 +59,7 @@ jobs: host: ${{ secrets.HOST }} username: ${{ secrets.USERNAME }} key: ${{ secrets.PRIVATE_KEY }} - source: "./docker-compose.yml" + source: "./docker-compose.prod.yml" target: "/home/${{ secrets.USERNAME }}/solid-connect-server/" - name: Run docker compose @@ -72,4 +72,4 @@ jobs: script: | cd /home/${{ secrets.USERNAME }}/solid-connect-server docker compose down - docker compose up -d --build + docker compose -f docker-compose.prod.yml up -d --build diff --git a/.github/workflows/stage-cd.yml b/.github/workflows/stage-cd.yml index 3409a3829..cc0972e44 100644 --- a/.github/workflows/stage-cd.yml +++ b/.github/workflows/stage-cd.yml @@ -33,7 +33,7 @@ jobs: run: chmod +x ./gradlew - name: Build with Gradle - run: ./gradlew bootJar -Dspring.profiles.active=stage + run: ./gradlew bootJar - name: Copy jar file to remote uses: appleboy/scp-action@master @@ -59,7 +59,7 @@ jobs: host: ${{ secrets.STAGE_HOST }} username: ${{ secrets.STAGE_USERNAME }} key: ${{ secrets.STAGE_PRIVATE_KEY }} - source: "./docker-compose.yml" + source: "./docker-compose.stage.yml" target: "/home/${{ secrets.STAGE_USERNAME }}/solid-connect-stage/" - name: Run docker compose @@ -72,4 +72,4 @@ jobs: script: | cd /home/${{ secrets.STAGE_USERNAME }}/solid-connect-stage docker compose down - docker compose up -d --build + docker compose -f docker-compose.stage.yml up -d --build diff --git a/Dockerfile b/Dockerfile index 4742ac87a..773d1ba16 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,7 +8,7 @@ ARG JAR_FILE=./build/libs/solid-connection-0.0.1-SNAPSHOT.jar COPY ${JAR_FILE} app.jar # 시스템 진입점 정의 -ENTRYPOINT ["java", "-jar", "/app.jar", "--spring.profiles.active=prod"] +ENTRYPOINT ["java", "-jar", "/app.jar"] # 볼륨 설정 VOLUME /tmp diff --git a/docker-compose.yml b/docker-compose.prod.yml similarity index 92% rename from docker-compose.yml rename to docker-compose.prod.yml index 8813a4e58..9517a07aa 100644 --- a/docker-compose.yml +++ b/docker-compose.prod.yml @@ -25,7 +25,8 @@ services: ports: - "8080:8080" environment: + - SPRING_PROFILES_ACTIVE=prod - SPRING_DATA_REDIS_HOST=redis - SPRING_DATA_REDIS_PORT=6379 depends_on: - - redis \ No newline at end of file + - redis diff --git a/docker-compose.stage.yml b/docker-compose.stage.yml new file mode 100644 index 000000000..3a97a6411 --- /dev/null +++ b/docker-compose.stage.yml @@ -0,0 +1,33 @@ +version: '3.8' + +services: + redis: + image: redis:latest + container_name: redis + ports: + - "6379:6379" + network_mode: host + + redis-exporter: + image: oliver006/redis_exporter + container_name: redis-exporter + ports: + - "9121:9121" + environment: + REDIS_ADDR: "localhost:6379" + depends_on: + - redis + network_mode: host + + solid-connection-stage: + build: + context: . + dockerfile: Dockerfile + container_name: solid-connection-stage + ports: + - "8080:8080" + environment: + - SPRING_PROFILES_ACTIVE=stage + depends_on: + - redis + network_mode: host diff --git a/src/main/resources/secret b/src/main/resources/secret index 496ba4a63..f7b34bdc6 160000 --- a/src/main/resources/secret +++ b/src/main/resources/secret @@ -1 +1 @@ -Subproject commit 496ba4a63952ff154508f60b66c456bfd125e519 +Subproject commit f7b34bdc615f141ac82ed05c10557f95f5b45a04 From 8f8cd67a754aea7282af2eab19ec861fab5f7501 Mon Sep 17 00:00:00 2001 From: Yeongseo Na Date: Mon, 17 Feb 2025 19:37:10 +0900 Subject: [PATCH 4/4] =?UTF-8?q?chore:=20=ED=8A=B8=EB=A6=AC=EA=B1=B0=20?= =?UTF-8?q?=EB=B8=8C=EB=9E=9C=EC=B9=98=20=EC=9D=B4=EB=A6=84=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD=20(#223)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/prod-cd.yml | 2 +- .github/workflows/stage-cd.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/prod-cd.yml b/.github/workflows/prod-cd.yml index 75d9e7c11..9030c80f5 100644 --- a/.github/workflows/prod-cd.yml +++ b/.github/workflows/prod-cd.yml @@ -2,7 +2,7 @@ name: "[PROD] Build Gradle and Deploy" on: push: - branches: [ "release" ] # todo: 스테이지 서버 cd 테스트 후 master 로 변경 필요 + branches: [ "master" ] workflow_dispatch: jobs: diff --git a/.github/workflows/stage-cd.yml b/.github/workflows/stage-cd.yml index cc0972e44..41ff68b37 100644 --- a/.github/workflows/stage-cd.yml +++ b/.github/workflows/stage-cd.yml @@ -2,7 +2,7 @@ name: "[STAGE] Build Gradle and Deploy" on: push: - branches: [ "stage-test" ] # todo: 스테이지 서버 cd 테스트 후 release 로 변경 필요 + branches: [ "release" ] workflow_dispatch: jobs: