Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
75 commits
Select commit Hold shift + click to select a range
35944b3
[SRLT-97] Refactor: 쿼리 개선
2ghrms Nov 28, 2025
73c0aa1
Update README.md
SeongHo5356 Nov 29, 2025
b9d24ab
Update framework and database technologies in README
2ghrms Dec 3, 2025
c3df1b7
[SRLT-97] Test: 변경 로직에 따른 테스트 수정
2ghrms Dec 17, 2025
e3d354f
[SRLT-110] Refactor: 멀티 아키텍쳐 이미지를 빌드한다
SeongHo5356 Dec 20, 2025
d3f0c5e
Merge pull request #66 from StartUpLight/SRLT-110-멀티-아키텍쳐-이미지-빌드
SeongHo5356 Dec 25, 2025
544db48
[SRLT-111] Feat: 전문가 상세정보를 조회한다
SeongHo5356 Dec 26, 2025
dd4ed8b
[SRLT-111] Chore: .gitignore을 업데이트한다
SeongHo5356 Dec 26, 2025
7c3bf8d
[SRLT-111] Refactor: 사용하지 않는 함수를 정리한다
SeongHo5356 Dec 26, 2025
737a4ec
[SRLT-111] Refactor: 필요한 포트는 각 도메인에서 정의해서 사용한다
SeongHo5356 Dec 26, 2025
2df31c7
[SRLT-111] Refactor: 응답 dto에서 application 계층의 dto를 활용한다
SeongHo5356 Dec 26, 2025
2aa18b2
[SRLT-111] Refactor: 전문가 로딩 전략을 수정한다
SeongHo5356 Dec 26, 2025
6f04e26
[SRLT-111] Refactor: 함수 이름을 수정한다
SeongHo5356 Dec 26, 2025
4925d38
[SRLT-111] Chore: PR템플릿을 추가한다
SeongHo5356 Dec 26, 2025
ca6b3f1
[SRLT-111] Chore: 개발가이드를 최신화한다
SeongHo5356 Dec 26, 2025
1f868b3
[SRLT-111] Refactor: 코드래빗 리뷰를 반영한다
SeongHo5356 Dec 26, 2025
a0397b0
[SRLT-111] Test: 전문가 조회 테스트를 작성한다
SeongHo5356 Dec 26, 2025
3e83880
[SRLT-111] Test: 사용하지 않는 Import 문을 제거한다
SeongHo5356 Dec 26, 2025
86fee59
[SRLT-111] Chore: 불필요한 Import 문을 삭제한다
SeongHo5356 Dec 28, 2025
6f5335a
[SRLT-111] Refactor: 전문가 조회 로딩/응답 구조를 정리한다
SeongHo5356 Dec 28, 2025
0c3a641
[SRLT-113] Refactor: 개발가이드를 최신화한다
SeongHo5356 Dec 28, 2025
75248c5
Merge pull request #67 from StartUpLight/SRLT-111-전문가-상세페이지-api
SeongHo5356 Dec 28, 2025
bdbf06e
Merge branch 'develop' into SRLT-113-클래스명-정리
SeongHo5356 Dec 28, 2025
6f9a297
[SRLT-113] Refactor: ExpertApplication 파일 구조를 수정한다
SeongHo5356 Dec 28, 2025
4fb357c
[SRLT-113] Refactor: expertReport CQRS 분리하기 및 조회/포트 네이밍 정리
SeongHo5356 Dec 28, 2025
595112c
Merge pull request #65 from StartUpLight/SRLT-97-QA-사항-반영
2ghrms Dec 28, 2025
0455c0c
[SRLT-113] Refactor: ExpertReportDetail에서 ExpertReportComment로 엔티티명을 …
SeongHo5356 Dec 28, 2025
1ccef08
[SRLT-113] Refactor: 수정된 ExpertReport 에 따라 테스트 코드를 수정한다
SeongHo5356 Dec 28, 2025
05a7350
[SRLT-113] Refactor: Order도메인을 컨벤션에 맞게 정리하고, SwaggerDoc을 작성한다
SeongHo5356 Dec 28, 2025
75510da
[SRLT-113] Refactor: Usage도메인을 컨벤션에 맞게 정리한다
SeongHo5356 Dec 28, 2025
2c8f660
[SRLT-113] Refactor: ExpertApplication 도메인을 컨벤션에 맞게 정리한다
SeongHo5356 Dec 29, 2025
3c15885
[SRLT-113] Refactor: 전문가 조회 시 필터링을 제거한다
SeongHo5356 Dec 29, 2025
abf6aac
[SRLT-113] Refactor: adapter/ncp위 위치르를 adpater/aireport 안쪽으로 옮긴다
SeongHo5356 Dec 29, 2025
f680970
[SRLT-113] Test: 경로 변경에 다른 import 문을 추가한다
SeongHo5356 Dec 29, 2025
e5b1ef4
[SRLT-113] Refactor: @deprecated 애노테이션에 문서화를 추가한다
SeongHo5356 Dec 29, 2025
e6d1844
[SRLT-113] Refactor: 필드명도 일관되게 수정한다
SeongHo5356 Dec 29, 2025
b634b5a
[SRLT-113] Docs: 도메인모델과 용어사전을 최신화한다
SeongHo5356 Dec 29, 2025
d98e537
Merge pull request #68 from StartUpLight/SRLT-113-클래스명-정리
SeongHo5356 Dec 30, 2025
454d21a
[SRLT-113] Refactor: 멤버도메인 패키지 구조 컨벤션에 맞게 정리하기
SeongHo5356 Dec 30, 2025
991c90c
[SRLT-113] Refactor: auth 유스케이스 네이밍 정리 및 토큰 검증 강화하기
SeongHo5356 Dec 30, 2025
b3e64e9
[SRLT-113] Refactor: auth를 Member의 하위도메인으로 취급하고 패키지를 정리한다
SeongHo5356 Dec 30, 2025
0b65d6e
[SRLT-113] Refactor: tokenProvider과 tokenResolver를 분리한다
SeongHo5356 Dec 30, 2025
65f705e
[SRLT-113] Fix: OAuth2/보안 핸들러 응답 통일 및 auth 슬라이스 테스트 보강하기
SeongHo5356 Dec 30, 2025
b3f0a8c
[SRLT-113] Fix: 함수명을 행위중심으로 변경한다
SeongHo5356 Dec 30, 2025
7c7f1eb
[SRLT-113] Refactor: 각 도메인 로딩 메서드 네이밍 정리 및 member 조회 포트 보강
SeongHo5356 Dec 30, 2025
318c4d3
[SRLT-113] Docs: auth ApiDoc 에러 응답을 정리한다
SeongHo5356 Dec 30, 2025
2a22edb
[SRLT-113] Docs: 개발가이드에 함수네이미 관련 규칙을 추가한다
SeongHo5356 Dec 31, 2025
610d456
[SRLT-113] Refactor: order 결제 포트 분리 및 취소 요청 의존 정리하기
SeongHo5356 Dec 31, 2025
93d00e9
[SRLT-113] Refactor: DTO 네이밍 규칙 추가 및 수정하기
SeongHo5356 Dec 31, 2025
3434424
[SRLT-113] Refactor: auth 입력 DTO를 Input 규칙으로 정리
SeongHo5356 Dec 31, 2025
ed36c93
[SRLT-113] Refactor: auth 입력 DTO를 Input 규칙으로 정리
SeongHo5356 Dec 31, 2025
d80b09e
[SRLT-113] Refactor: expertReport 응답 DTO 분리하고 auth principal 공용화한다
SeongHo5356 Dec 31, 2025
1ca5120
[SRLT-XXX] Refactor: Auth/Member 유스케이스를 정리하고 principal 공용화한다
SeongHo5356 Dec 31, 2025
6d64080
Merge branch 'develop' into SRLT-113-클래스명-정리
SeongHo5356 Dec 31, 2025
2b4d751
update
SeongHo5356 Dec 31, 2025
b3a0864
[SRLT-113] Test: refresh 토큰 재발급 테스트 만료 임박 케이스로 수정
SeongHo5356 Dec 31, 2025
98aa866
[SRLT-113] Docs: Auth/Credential Javadoc 정합성 수정
SeongHo5356 Dec 31, 2025
d46f64c
[SRLT-113] Test: BusinessPlanServiceImplUnitTest 스텁 정합성 수정
SeongHo5356 Dec 31, 2025
9eeae3b
[SRLT-113] Refactor: ExpertApplication count lookup 포트명 통일
SeongHo5356 Dec 31, 2025
19b6f1b
[SRLT-122] Docs: PR 템플릿을 교체한다
SeongHo5356 Dec 31, 2025
d87f5cb
[SRLT-122] Docs: PR 템플릿을 교체한다
SeongHo5356 Dec 31, 2025
38d0474
[SRLT-122] Deploy: 액션 버전을 최신화한다
SeongHo5356 Dec 31, 2025
2e7d884
[SRLT-122] Deploy: 액션 버전을 최신화한다
SeongHo5356 Dec 31, 2025
df3bba8
[SRLT-122] Deploy: 배포 워크플로우에 오라클 매니페스트 자동 업데이트를 추가한다
SeongHo5356 Dec 31, 2025
1119742
[SRLT-122] Deploy: 배포 워크플로우에 오라클 매니페스트 자동 업데이트를 추가한다
SeongHo5356 Dec 31, 2025
1cc92ff
[SRLT-122] Deploy: manifest 워크플로우 중복을 제거한다
SeongHo5356 Dec 31, 2025
be74db0
[SRLT-122] Refactor: manifest push 재시도 로직을 복구한다
SeongHo5356 Dec 31, 2025
565a21f
Merge pull request #69 from StartUpLight/SRLT-113-클래스명-정리
SeongHo5356 Jan 1, 2026
02e008e
[SRLT-111] Feat: 전문가에게 신청 가능한 사업계획서를 조회한다
SeongHo5356 Jan 1, 2026
78c916b
[SRLT-111] Refactor: 사용하지 않는 전문가 신청 조회 API를 제거한다
SeongHo5356 Jan 1, 2026
b1b8c24
[SRLT-111] Refactor: AuthenticatedMember 변수명을 통일한다
SeongHo5356 Jan 1, 2026
18f0c51
[SRLT-111] Docs: API 설명을 명확히 하고 인증 파라미터명을 통일한다
SeongHo5356 Jan 1, 2026
4f5254b
[SRLT-111] Fix: 전문가 신청 건수 조회에 null 방어를 추가한다
SeongHo5356 Jan 1, 2026
3a7abfe
Merge pull request #70 from StartUpLight/SRLT-122-arm-기반-워크플로우-수정
SeongHo5356 Jan 1, 2026
7913f52
Merge pull request #71 from StartUpLight/SRLT-111-전문가-상세페이지-api
SeongHo5356 Jan 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 21 additions & 10 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,25 @@
## #️⃣연관된 이슈
> close #
## 🚀 Why - 해결하려는 문제가 무엇인가요?

## 📝작업 내용
> 작업한 내용을 작성해주세요.
- `어떤 문제를 해결하고자 하나요?`

## 🔎코드 설명
> 코드에 대한 설명을 작성해주세요.
- `어떤 배경이 있었나요?`

## 💬고민사항 및 리뷰 요구사항
> 고민사항 및 의견 받고 싶은 부분 있으면 적어두기
## ✅ What - 무엇이 변경됐나요?

## 비고 (Optional)
> 참고했던 링크 등 참고 사항을 적어주세요. 코드 리뷰하는 사람이 참고해야 하는 내용을 자유로운 형식으로 적을 수 있습니다.
- `구현한 기능 요약`

- `주요 변경사항`

## 🛠️ How - 어떻게 해결했나요?

- `핵심 로직 설명`

- `예외 사항, 고민 포인트 등`

## 🖼️ Attachment

- `화면 이미지, 결과 캡처 등 첨부`

## 💬 기타 코멘트

- `리뷰어에게 전하고 싶은 말, 테스트 방법, 주의할 점 등`
83 changes: 58 additions & 25 deletions .github/workflows/ci-prd.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
SPRING_PROFILES_ACTIVE: test
steps:
- name: Checkout code
uses: actions/checkout@v4
uses: actions/checkout@v6
with:
submodules: recursive
token: ${{ secrets.PAT }}
Expand All @@ -25,7 +25,7 @@ jobs:
distribution: 'temurin'

- name: Setup Gradle
uses: gradle/actions/setup-gradle@v3
uses: gradle/actions/setup-gradle@v5

- name: Grant execute permission for gradlew
run: chmod +x gradlew
Expand All @@ -34,46 +34,79 @@ jobs:
run: ./gradlew clean build --info --stacktrace --no-daemon

- name: Docker login
uses: docker/login-action@v2
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}

- name: Set up QEMU
uses: docker/setup-qemu-action@v3

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Set image tag
id: vars
run: echo "IMAGE_TAG=${GITHUB_SHA::7}" >> $GITHUB_ENV

- name: Build Docker image
run: docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/startuplight-be:${{ env.IMAGE_TAG }} -f deploy/Dockerfile .

- name: Docker Hub push
run: docker push ${{ secrets.DOCKERHUB_USERNAME }}/startuplight-be:${{ env.IMAGE_TAG }}
# Multi-architecture 빌드 및 푸시
- name: Build and push Docker image
uses: docker/build-push-action@v6
with:
context: .
file: deploy/Dockerfile
platforms: linux/amd64,linux/arm64 # 두 아키텍처 모두 빌드
push: true
tags: ${{ secrets.DOCKERHUB_USERNAME }}/startuplight-be:${{ env.IMAGE_TAG }}
cache-from: type=gha
cache-to: type=gha,mode=max

- name: Checkout manifest repository
uses: actions/checkout@v4
uses: actions/checkout@v6
with:
repository: 'StartUpLight/STARLIGHT_MANIFEST'
token: ${{ secrets.PAT }}
path: 'manifest'

- name: Update deployment.yml
- name: Update deployment.yml and push manifest
env:
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
IMAGE_TAG: ${{ env.IMAGE_TAG }}
run: |
sed -i "s|image:.*|image: ${DOCKERHUB_USERNAME}/startuplight-be:${IMAGE_TAG}|g" manifest/production/deployment.yml

# 변경사항 확인
echo "Updated deployment.yml:"
cat manifest/production/deployment.yml
update_manifest() {
local dir="$1"
local file="$dir/production/deployment.yml"

- name: Commit and push changes
env:
IMAGE_TAG: ${{ env.IMAGE_TAG }}
run: |
cd manifest
git config --local user.email "[email protected]"
git config --local user.name "SeongHo5356"
git add production/deployment.yml
git commit -m "Update image tag to $IMAGE_TAG" || exit 0
git push
sed -i "s|image:.*|image: ${DOCKERHUB_USERNAME}/startuplight-be:${IMAGE_TAG}|g" "$file"
echo "Updated $file:"
cat "$file"

git -C "$dir" config --local user.email "[email protected]"
git -C "$dir" config --local user.name "SeongHo5356"
git -C "$dir" add production/deployment.yml

if [ -z "$(git -C "$dir" status --porcelain)" ]; then
echo "No changes to commit in $dir"
return 0
fi

git -C "$dir" commit -m "Update image tag to $IMAGE_TAG"

for i in {1..3}; do
echo "Push attempt $i for $dir"
git -C "$dir" pull --rebase origin main && \
git -C "$dir" push && \
echo "Successfully pushed $dir" && \
break || {
echo "Push failed for $dir, retrying in 2 seconds..."
sleep 2
}
done

if ! git -C "$dir" diff --quiet origin/main HEAD; then
echo "ERROR: Failed to push $dir after 3 attempts"
return 1
fi
}

update_manifest manifest
91 changes: 66 additions & 25 deletions .github/workflows/ci-stg.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
SPRING_PROFILES_ACTIVE: test
steps:
- name: Checkout code
uses: actions/checkout@v4
uses: actions/checkout@v6
with:
submodules: recursive
token: ${{ secrets.PAT }}
Expand All @@ -25,7 +25,7 @@ jobs:
distribution: 'temurin'

- name: Setup Gradle
uses: gradle/actions/setup-gradle@v3
uses: gradle/actions/setup-gradle@v5

- name: Grant execute permission for gradlew
run: chmod +x gradlew
Expand All @@ -34,46 +34,87 @@ jobs:
run: ./gradlew clean build --info --stacktrace --no-daemon

- name: Docker login
uses: docker/login-action@v2
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}

- name: Set up QEMU
uses: docker/setup-qemu-action@v3

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Set image tag
id: vars
run: echo "IMAGE_TAG=${GITHUB_SHA::7}" >> $GITHUB_ENV

- name: Build Docker image
run: docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/startuplight-be:${{ env.IMAGE_TAG }} -f deploy/Dockerfile .

- name: Docker Hub push
run: docker push ${{ secrets.DOCKERHUB_USERNAME }}/startuplight-be:${{ env.IMAGE_TAG }}
# Multi-architecture 빌드 및 푸시
- name: Build and push Docker image
uses: docker/build-push-action@v6
with:
context: .
file: deploy/Dockerfile
platforms: linux/amd64,linux/arm64 # 두 아키텍처 모두 빌드
push: true
tags: ${{ secrets.DOCKERHUB_USERNAME }}/startuplight-be:${{ env.IMAGE_TAG }}
cache-from: type=gha
cache-to: type=gha,mode=max

- name: Checkout manifest repository
uses: actions/checkout@v4
uses: actions/checkout@v6
with:
repository: 'StartUpLight/STARLIGHT_MANIFEST'
token: ${{ secrets.PAT }}
path: 'manifest'

- name: Update deployment.yml
- name: Checkout manifest repository (oracle)
uses: actions/checkout@v6
with:
repository: 'StartUpLight/STARLIGHT_MANIFEST_ORACLE'
token: ${{ secrets.PAT }}
path: 'manifest-oracle'

- name: Update deployment.yml and push manifests
env:
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
IMAGE_TAG: ${{ env.IMAGE_TAG }}
run: |
sed -i "s|image:.*|image: ${DOCKERHUB_USERNAME}/startuplight-be:${IMAGE_TAG}|g" manifest/staging/deployment.yml

# 변경사항 확인
echo "Updated deployment.yml:"
cat manifest/staging/deployment.yml
update_manifest() {
local dir="$1"
local file="$dir/staging/deployment.yml"

- name: Commit and push changes
env:
IMAGE_TAG: ${{ env.IMAGE_TAG }}
run: |
cd manifest
git config --local user.email "[email protected]"
git config --local user.name "SeongHo5356"
git add staging/deployment.yml
git commit -m "Update image tag to $IMAGE_TAG" || exit 0
git push
sed -i "s|image:.*|image: ${DOCKERHUB_USERNAME}/startuplight-be:${IMAGE_TAG}|g" "$file"
echo "Updated $file:"
cat "$file"

git -C "$dir" config --local user.email "[email protected]"
git -C "$dir" config --local user.name "SeongHo5356"
git -C "$dir" add staging/deployment.yml

if [ -z "$(git -C "$dir" status --porcelain)" ]; then
echo "No changes to commit in $dir"
return 0
fi

git -C "$dir" commit -m "Update image tag to $IMAGE_TAG"

for i in {1..3}; do
echo "Push attempt $i for $dir"
git -C "$dir" pull --rebase origin main && \
git -C "$dir" push && \
echo "Successfully pushed $dir" && \
break || {
echo "Push failed for $dir, retrying in 2 seconds..."
sleep 2
}
done

if ! git -C "$dir" diff --quiet origin/main HEAD; then
echo "ERROR: Failed to push $dir after 3 attempts"
return 1
fi
}

update_manifest manifest
update_manifest manifest-oracle
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -45,3 +45,5 @@ out/
node_modules/
dist/
*.log
/docs/
/AGENTS.md
50 changes: 2 additions & 48 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@
| Category | Technology |
|----------------------|---------------------------------------------------------------------------|
| **Language** | Java 21 |
| **Framework** | Spring Boot 3.3.10 |
| **Databases** | Postgresql, Redis |
| **Framework** | Spring Boot 3.4.10 |
| **Databases** | MySQL, Redis |
| **Authentication** | JWT, Spring Security, OAuth2.0 |
| **Development Tools**| Lombok |
| **API Documentation**| Swagger UI (SpringDoc) |
Expand Down Expand Up @@ -120,49 +120,3 @@ https://www.erdcloud.com/d/bEeEkcvDoau3kf7W5
- `컨벤션명/#이슈번호-작업내용`
- pull request를 통해 develop branch에 merge 후, branch delete
- 부득이하게 develop branch에 직접 commit 해야 할 경우, `!hotfix:` 사용

<br></br>

## 📁 Directory

```PlainText
src/
├── main/
│ ├── domain/
│ │ ├── entity/
│ │ ├── controller/
│ │ ├── service/
│ │ ├── repository/
│ │ └── dto/
├── request/
└── response/
│ ├── global/
│ │ ├── apiPayload/
│ │ ├── config/
│ │ ├── security/

```

<br></br>

## 📈 부하테스트
각 플랫폼(Instagram, Facebook, Threads) API에는 계정/시간 당 발행 가능한 게시물 수에 제한이 있어, 부하 테스트에는 제약이 존재합니다. 이에 따라 저희는 즉시 발행이 아닌 **"예약 발행" API**를 활용한 부하 시뮬레이션 방식을 구성하였습니다.

|시나리오 ① 10명이 1초 동안 최대한의 요청을 보낸다.| 시나리오 ② 2000명이 1초 동안 최대한의 요청을 보낸다.|
| :-------| :-------|
|![image](https://github.com/user-attachments/assets/026eb04b-4aa3-4e23-8820-5d22f1d94d12)|![image](https://github.com/user-attachments/assets/b73b7838-48e6-4392-99cd-c6497a4958d1)|
|✅ 총 120개의 요청이 문제없이 처리됨 <br> - 평균 요청 처리 시간 : 82.09 ms <br> - 최소 요청 처리 시간 : 22.52ms <br> - 최대 요청 처리 시간 : 164.64ms |✅ 총 4002개의 요청이 문제없이 처리됨<br> - 평균 요청 처리 시간 : 7.74s <br> - 최소 요청 처리 시간 : 21.9s <br> - 최대 요청 처리 시간 : 18.28s <br> - 95th 퍼센타일 : 14.95s|

<br>

| 시나리오 ③ 사용자 수 변동 시나리오 | 시나리오 ④ 응답 시간이 5초 이내인 최대 요청 수 파악|
| :-------|:----|
|![image](https://github.com/user-attachments/assets/c77e54f8-765f-4ef5-a79b-f8896eb761a7)|![image](https://github.com/user-attachments/assets/a856af66-9d1b-47df-b287-156c125bd9b3)|
|0초 ~ 2초 : `50명`, 2초 ~ 12초 : `300명`, 12초 ~ 17초 : `1000명`, 17초 ~ 18초 : `500명`| 5초가 지날 경우 사용자 이탈이 늘어날 것이라고 판단하여 1초 동안 `1000명`의 사용자가 요청을 보내 `요청 처리 시간이 5초 이내`인 요청 개수를 파악 |
|✅ 총 3789개의 요청이 문제없이 처리됨 <br> - 평균 요청 처리 시간 : 1.94s <br> - 최소 요청 처리 시간 : 20.53ms <br> - 최대 요청 처리 시간 : 7.88s |✅ 총 2002개의 요청이 시간 내 처리됨 |

### 테스트 결과 분석
- 현재 시스템은 동시 약 `1,000건` 수준까지는 안정적으로 요청을 처리할 수 있는 것으로 보입니다. **시나리오 ③**처럼 사용자 수가 점차 증가하는 상황에서도 평균 응답 시간은 `1.94초`, 최대 응답 시간은 `7.88초`로, 대부분의 요청이 정상적으로 처리되었습니다.
- 하지만 **시나리오 ②**처럼 `2,000명`의 동시 요청이 들어오면 평균 응답 시간이 `7.74초`, 최대 `18.28초`까지 증가하면서 응답 지연이 발생하였습니다. 이 결과는 대규모 트래픽에 대한 성능 한계가 있음을 보여주며, 추후 이를 개선할 필요가 있습니다.
- **시나리오 ④**에서는 `1000명`의 사용자가 동시에 요청을 보낸 경우, 총 `2,002건`의 요청이 `5초` 이내에 처리되었습니다. 이는 현재 시스템이 실시간 대응보다는 예약 처리에 더 적합한 구조임을 보여줍니다.
- 일반적으로 사용자 이탈이 늘기 시작하는 5초 이내 응답을 기준으로 예상 접속자 수 약 `1,000명` 정도에 대해서는 충분히 안정적인 성능을 제공할 수 있다고 판단됩니다.
2 changes: 1 addition & 1 deletion config
1 change: 0 additions & 1 deletion src/main/java/starlight/StarlightApplication.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;

@EnableJpaAuditing
Expand Down
Loading