-
Notifications
You must be signed in to change notification settings - Fork 2
prod : 프로덕션과 테스트 서버 파이프라인 분리 #225
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
841 commits
Select commit
Hold shift + click to select a range
3dee256
feat: notify 과정 중 에러 발생 시 discord 알림 전송 구현
chominju02 cc25138
MOSU-153 refactor: 컨플릭트 해결
jbh010204 4b7806e
refactor: Update ExamApplication handling 처리에 status 포함하도록 변경
jbh010204 2ca4d8e
MOSU-153 refactor: 신청 조회시 신청 상태 구조 변경
jbh010204 904cfe2
Merge pull request #185 from mosu-dev/refactor/mosu-184
chominju02 2090494
refactor: databaseinitializer 수정
chominju02 ac6748f
feat: Update ArchivingOrchestratorCronConfig to change trigger schedu…
polyglot-k 751d218
feat: Increase batch size in ApplicationFailureLogDomainArchiver from…
polyglot-k 4e86554
feat: Schedule domain archivers with a 10-minute interval in Archivin…
polyglot-k 66cf69b
feat: Filter out null values in ApplicationFailureLog batch processing
polyglot-k 16acef7
feat: Update ApplicationFailureLogJpaRepositoryCustomImpl to use curr…
polyglot-k bc19157
feat: Refactor deleteAllUsingBatchWithExamApplications to use NamedPa…
polyglot-k 5e698fd
Merge branch 'develop' of https://github.com/mosu-dev/mosu-server int…
polyglot-k 4e3a8e2
feat: Add error handling and logging for batch archiving in Applicati…
polyglot-k 39045f8
feat: Add null check and logging for domain archivers in ArchivingOrc…
polyglot-k 606d7eb
feat: Implement graceful shutdown for ArchivingOrchestratorJob with @…
polyglot-k f236af4
Merge pull request #183 from mosu-dev/feature/cron
polyglot-k 15ee2be
feat: Change Hibernate ddl-auto setting from create-drop to update in…
polyglot-k 859c2d2
feat: Add LogCleanup interface for log data deletion based on date
polyglot-k 8e7e130
feat: Add LogCleanupJob and trigger for periodic log cleanup
polyglot-k fde6d80
feat: Implement LogCleanupJob for periodic log cleanup of old logs
polyglot-k 42ecbcd
feat: Prevent concurrent execution of ApplicationFailureLogDomainArch…
polyglot-k bc342c1
feat: Add ApplicationFailureLogCleanup for log deletion based on date
polyglot-k 851ec3c
refactor: 환불 알림톡 관련 로그 추가
chominju02 4527196
refactor: 쿠키 보안 설정 주석 처리 및 SameSite 정책 변경
toothlessdev e41dc6c
fix: 쿠키 도메인 우회용 cors 설정
toothlessdev 2e3c3a4
Merge pull request #188 from mosu-dev/fix#187
toothlessdev ab2cbc5
refactor: 쿠키 도메인 설정 주석 처리
toothlessdev d02c7b7
Merge pull request #189 from mosu-dev/fix#187
toothlessdev d702d47
fix: 쿠기 관련 설정 롤백
toothlessdev ed1927a
feat: Enhance notification handling in RefundTxEventListener with err…
polyglot-k f7f572d
feat: Improve refund processing logging in RefundService
polyglot-k c9aca8f
feat: Refactor query structure in RefundJpaRepository for improved re…
polyglot-k 81d468c
feat: Enhance error handling in refund processing and clean up code s…
polyglot-k e709ea4
feat: Update refund status parsing to include 'DONE' state in CancelT…
polyglot-k 6d81d60
feat: Update NotifyService to log successful notification sends and i…
polyglot-k 11b83ce
feat: Update DiscordNotifier and NotifyService to improve error loggi…
polyglot-k b15ca6e
feat: Add documentation for DiscordNotifier component to clarify erro…
polyglot-k 7484ac7
feat: Refactor repository interfaces to implement custom repository m…
polyglot-k 27498a1
feat: Refactor ApplicationFailureLogDomainArchiver to remove custom r…
polyglot-k acba226
chore: Refactor repository package structure for improved organizatio…
polyglot-k 385b328
feat: Add dev.mosuedu.com to CORS configuration in SecurityConfig and…
toothlessdev db0ef27
feat: Caffeine을 통한 IP rate limiting filter 구현
jbh010204 5ee29b1
MOSU-191 feat: Update rate limiting configuration in security-config.yml
jbh010204 33987f0
feat: Introduce AbstractFailureLogFactory to streamline failure log c…
polyglot-k 55d4727
feat: Add PaymentFailureLogJpaEntity and PaymentFailureLogJpaReposito…
polyglot-k 702f3c8
feat: Implement PaymentFailureLogJpaRepositoryImpl for batch saving p…
polyglot-k f8b242f
feat: Add custom repository interface and query for retrieving failed…
polyglot-k e7952e0
feat: Add RefundFailureLogDomainArchiver for archiving refund failure…
polyglot-k 96446a6
feat: Implement PaymentJpaRepositoryImpl for batch deletion of paymen…
polyglot-k 405cdbf
feat: Add PaymentFailureLogFactory for creating payment failure log e…
polyglot-k 6f415c3
feat: Implement PaymentFailureLogDomainArchiver for archiving failed …
polyglot-k a78e525
feat: Add RefundFailureLogFactory for creating refund failure log ent…
polyglot-k c617537
feat: Add RefundFailureLogJpaEntity for refund failure logging
polyglot-k 8ad6d96
MOSU-191 refactor: IpRateLimitingProperties vaildate 방식 변경
jbh010204 f8e60ce
MOSU-191 feat: client IP address 추출을 위한 IP 유틸구현
jbh010204 300ab07
MOSU-191 feat: Increment request counter before checking if IP is blo…
jbh010204 181db44
refactor: Move RefundFailureLogJpaEntity to the domain package
polyglot-k 8d532f3
feat: Add RefundFailureLogJpaRepository and RefundFailureLogJpaReposi…
polyglot-k 560108f
feat: Implement RefundFailureLogJpaRepositoryImpl for batch saving re…
polyglot-k 1236db6
feat: Add RefundJpaRepositoryCustom interface and implement failed re…
polyglot-k 1364ecd
feat: Implement RefundJpaRepositoryImpl for batch deletion of exam ap…
polyglot-k ee4c727
feat: Implement RefundFailureLogDomainArchiver for archiving failed r…
polyglot-k e8b018c
feat: Add method to delete payment failure logs older than a specifie…
polyglot-k 9c736d4
feat: Refactor create method in PaymentFailureLogFactory to use Payme…
polyglot-k 84e84dd
feat: Add transactional support to archive method in ApplicationFailu…
polyglot-k c029df5
feat: Add transactional support and disallow concurrent execution in …
polyglot-k ea945a1
feat: Implement PaymentFailureLogCleanup for deleting old payment fai…
polyglot-k 246254a
feat: Implement RefundFailureLogCleanup for deleting old refund failu…
polyglot-k 7714279
Merge pull request #192 from mosu-dev/feat/mosu-191
polyglot-k f70a138
Merge branch 'develop' of https://github.com/mosu-dev/mosu-server int…
polyglot-k e9515c8
feat: Add index on status and created_at columns in PaymentJpaEntity
polyglot-k d8b67ee
Merge pull request #193 from mosu-dev/feat/cron-2
polyglot-k 6e74439
chore: Rename domain packages to include 'entity' for clarity
polyglot-k ede1fe5
chore: Update imports to include 'entity' in domain classes for consi…
polyglot-k 24c926e
refactor: Rename 'util' package to 'support' for improved clarity and…
polyglot-k 8d10873
fix: Change JOIN to RIGHT JOIN in ExamJpaRepository for correct data …
polyglot-k e3786b6
feat: Add ExamQuotaCacheInitializer to optimize initial cache loading
polyglot-k 1bfb5d1
refactor: Simplify ExamQuotaCacheManager by removing CommandLineRunne…
polyglot-k 0a8affc
feat: Add ExamQuotaLoadService to asynchronously load exam quotas and…
polyglot-k 9b9f023
feat: Add CACHE_OPERATION_NOT_SUPPORTED error code for unsupported ca…
polyglot-k 3f8ed46
feat: Add methods to count applications grouped by exam ID and retrie…
polyglot-k 40ba56c
feat: Update ExamQuotaLoadService to filter out null values in load m…
polyglot-k bad7294
feat: Add OperationType enum for increment and decrement operations
polyglot-k c79bfed
feat: Add OperationType enum for increment and decrement operations
polyglot-k 9e72062
feat: Refactor AtomicExamQuota operators to use OperationType enum fo…
polyglot-k 4d9804f
feat: Improve formatting and readability in ExamQuotaAtomicOperationC…
polyglot-k 223ec2e
Merge pull request #195 from mosu-dev/refactor/redis-failover
polyglot-k 9213d02
feat: Add IP rate limiting configuration and enable flag
polyglot-k 3cfd09c
feat: Add Docker CI configuration and Gradle caching
polyglot-k 78514b0
feat: Add deployment script for blue-green deployment with health checks
polyglot-k 831c157
MOSU-178 refactor: ErrorCode 토큰 관련 에러 명칭 변경
jbh010204 a4656c6
MOSU-178 refactor: plusInfo 암호화를 위한 EncodeUtil 수정
jbh010204 4d354ca
MOSU-178 refactor: SignUpToken -> Token으로 명칭 변경
jbh010204 109d13d
MOSU-178 refacotor: 비밀번호 변경 API @UserID 어노테이션 제거
jbh010204 a087699
MOSU-178 refacotor: Rename validateSignUpToken to validateToken and u…
jbh010204 314c964
MOSU-178 refacotor: Update KmcUserInfo to include KmcPlusInfo and mod…
jbh010204 453b795
MOSU-178 refactor: Rename SignUpToken to Token and update related ser…
jbh010204 066aaca
MOSU-178 refactor: Update gender parsing to return Korean labels
jbh010204 fd4a957
MOSU-178 feat: Implement KMC token processing and user validation for…
jbh010204 d685d6c
feat: Add step to clone external KMC jar repository into libs directory
jbh010204 b09d71a
rafactor: 리뷰내용반영
jbh010204 bd12aa0
MOSU-178 refactor: 비밀번호 찾기 기능 변경
jbh010204 c9194e0
MOSU-178 feat: @PhoneNumber로 전화번호 매핑하도록 구현
jbh010204 f6e5bfb
MOSU-178 refactor: 비밀번호 변경시 전화번호로만 가능하도록 변경
jbh010204 8f36d92
MOSU-178 refactor: 비밀번호 변경 리팩토링
jbh010204 caa1f2a
MOSU-178 fix: phoneNumber resolver 값 null 가져오는 문제 해결
jbh010204 d9cb3bf
Merge pull request #200 from mosu-dev/feat/mosu-178
jbh010204 8ec8313
fix: resolver MvcConfig에 적용
jbh010204 020686e
feat: Update AccessTokenFilter to allow additional static resource paths
polyglot-k 52d3f9f
feat: Add BankCode enum for managing bank information
polyglot-k c122ce6
feat: Add CreateVirtualAccountRequest and CreateVirtualAccountRespons…
polyglot-k 161f89d
feat: Add INVALID_VIRTUAL_ACCOUNT_DEPOSIT_EVENT error code for handli…
polyglot-k 4284227
feat: Update TossPaymentClient to use path segments for payment confi…
polyglot-k b3b1709
feat: Add TossVirtualAccountClient for creating virtual accounts via …
polyglot-k 302ae25
feat: Add TossVirtualAccountPayload record for handling virtual accou…
polyglot-k dc1fce3
feat: Add VirtualAccountResponse record for handling virtual account …
polyglot-k ce9b11d
feat: Add VirtualAccountOrderIdGenerator for generating unique virtua…
polyglot-k bbf5e9c
feat: Implement VirtualAccountService for creating virtual accounts a…
polyglot-k dc6cfd9
feat: Add VirtualAccountController for managing virtual account creat…
polyglot-k d8c3fa5
feat: Add VirtualAccountCallbackListener and VirtualAccountCallbackSe…
polyglot-k e7eb43f
feat: Add DepositSuccessEvent and DepositFailureEvent for deposit eve…
polyglot-k fb954c9
feat: Add DepositEvent and DepositEventRequest for deposit event hand…
polyglot-k 0dd3417
feat: Add error codes for virtual account deposit event and creation …
polyglot-k b1dd9c3
feat: Enhance virtual account creation with error handling for failures
polyglot-k 8bf0ec8
feat: Update application configuration for Thymeleaf and secure secre…
polyglot-k 74fb11e
feat: Change response status to CREATED for successful virtual accoun…
polyglot-k 8e54f9a
feat: Update sequence generation to ensure non-negative values in Vir…
polyglot-k adef71f
Merge branch 'develop' of https://github.com/mosu-dev/mosu-server int…
polyglot-k 6e06ea9
Merge pull request #202 from mosu-dev/feat/deposit
polyglot-k 5135a87
chore: Refactor payment DTOs to use 'toss' package for better organiz…
polyglot-k 649c952
MOSU-204 rename: AccessTokenFilter -> TokenFilter로 변경
wlgns12370 01286ad
MOSU-204 feat: Whitelist 구현
wlgns12370 444c446
MOSU-204 feat: 메서드에 따른 토큰 검증 절차 변경
wlgns12370 aa773ab
MOSU-207 fix: Faq userId 추출해서 사용하도록 변경
wlgns12370 a6d4237
MOSU-207 fix: GET으로 정적 리소스 조회 설정
wlgns12370 d6cfa25
Merge pull request #206 from mosu-dev/feature/mosu-204
wlgns12370 8d3c872
Merge pull request #208 from mosu-dev/fix/mosu-207
wlgns12370 2b0d650
feat: Add DepositEventHandler interface for handling deposit events
polyglot-k a1f961a
feat: Enhance DepositEvent classes with orderId and secret fields
polyglot-k 31c4ac8
feat: Include orderId and secret in DepositSuccessEvent and DepositFa…
polyglot-k 4c09da3
feat: Implement DepositSuccessEventHandler and DepositFailureEventHan…
polyglot-k bdaf10e
feat: Integrate DepositSuccessEventHandler and DepositFailureEventHan…
polyglot-k 2f4c769
feat: Add MailTemplatePath class for email template constants
polyglot-k 8ec6d08
feat: Add SubjectFormat class for deposit success email subject const…
polyglot-k bdb6533
feat: Add VirtualAccountLogJpaEntity and VirtualAccountLogJpaReposito…
polyglot-k 570cb22
feat: Add asynchronous logging of virtual account creation events
polyglot-k 444d4ef
feat: Implement MailNotifier for asynchronous email notifications on …
polyglot-k 361b8cf
feat: Add MailConfig for configuring JavaMailSender with SMTP properties
polyglot-k 6f235e6
feat: Add error code for missing virtual account log
polyglot-k a66e0c7
feat: Add DepositSuccessMailRequest for email notification context
polyglot-k dadfd4d
feat: Add Thymeleaf and Spring Mail dependencies to build.gradle
polyglot-k 0d3ac11
feat: Enhance DepositEvent with createdAt field and formatted date me…
polyglot-k c25dd7c
feat: Update DepositFailureEvent to include createdAt parameter
polyglot-k 16cce81
feat: Update DepositFailureEvent to include createdAt parameter
polyglot-k d38d86d
feat: Add WAITING status to DepositStatus enum
polyglot-k a03792d
feat: Update DepositSuccessEvent to include createdAt parameter
polyglot-k 7cc9f27
feat: Enhance DepositSuccessEventHandler to handle deposit success no…
polyglot-k 4353404
feat: Configure mail settings in application.yml for SMTP integration
polyglot-k cba4b6d
feat: Add deposit completion notification template in deposit-complet…
polyglot-k ad774e9
feat: Remove mail sending dependency from build.gradle
polyglot-k 06ecccb
feat: Add transactional and asynchronous handling to DepositFailureEv…
polyglot-k e804874
feat: Refactor DepositFailureEventHandler to use VirtualAccountLogSer…
polyglot-k 3877438
feat: Refactor DepositSuccessEventHandler to use VirtualAccountLogSer…
polyglot-k 8a0b8d8
feat: Add VirtualAccountLogService for managing virtual account logs …
polyglot-k 22cfa9f
feat: Refactor VirtualAccountService to use VirtualAccountLogService …
polyglot-k 995d120
feat: Remove unused Mosu mail configuration from application.yml
polyglot-k 3fc1ffe
feat: Refactor MailConfig to use MailProperties for configuration man…
polyglot-k 2e5770d
Merge pull request #209 from mosu-dev/refactor/virtual
polyglot-k 38bca0c
feat: Remove unused Thymeleaf configuration and add logging for depos…
polyglot-k 725ce01
feat: Update logging level for scheduling in ArchivingOrchestratorJob…
polyglot-k d28a4f8
feat: Comment out alternative cron schedule for starvation cleanup job
polyglot-k ca8a8c8
feat: Add logging for the number of failed refunds being archived
polyglot-k 798d551
feat: Implement retry mechanism for email sending in MailNotifier
polyglot-k 5252dcf
feat: Update core pool size for ScheduledExecutorService in Archiving…
polyglot-k 413dd51
MOSU-213 refactor: Filter 하드코딩 경로 AuthConstants로 캡슐화
wlgns12370 b9b5fce
MOSU-213 refactor: RunTime 생성자 호출 시 에러를 잡아주는 @UtilityClass 적용
wlgns12370 1d226b4
MOSU docs: 부하 테스트 및 성능 분석시 문서화를 위한 md파일 추가
wlgns12370 d5a2acb
MOSU-213 fix: Util @Component 제거
wlgns12370 b2ab5e3
MOSU-213 refactor: 불필요한 log 제거
wlgns12370 e2f14ef
feat: Refactor ApplicationNotifyRequest to use LunaNotification DTOs
polyglot-k 0cabb95
feat: Update cron schedule for starvation cleanup job
polyglot-k bdbeff6
feat: Refactor DepositSuccessEventHandler to use updated mail request…
polyglot-k cc9c6ab
feat: Refactor DepositSuccessMailRequest to implement MailRequest int…
polyglot-k 0cce2b7
feat: Add DiscordExceptionNotifyEventRequest for structured exception…
polyglot-k 202c606
feat: Implement NotifyClientAdapter in DiscordNotifier for structured…
polyglot-k 80abfd3
feat: Refactor notification request classes to implement LunaNotifica…
polyglot-k 272c3e9
feat: Refactor notification classes to implement Luna-specific interf…
polyglot-k 736099d
feat: Refactor notification classes to implement Luna-specific DTOs a…
polyglot-k 2d0c570
feat: Rename NotificationVariable to LunaNotificationVariable and upd…
polyglot-k e4e157d
feat: Rename notification DTOs and update package structure to Luna-s…
polyglot-k 0478f06
feat: Refactor MailNotifier to use a generic MailRequest interface an…
polyglot-k 9e9f3a8
feat: Rename SubjectFormat to MailSubjectFormat for clarity in email …
polyglot-k f281720
feat: Update NotifyClientAdapter to use a generic type for request ha…
polyglot-k 89c391b
feat: Update NotifyEventListener to use LunaNotificationEvent for imp…
polyglot-k 81fa41d
feat: Rename NotifyEventPublisher package and update notification eve…
polyglot-k d1af85f
feat: Update NotifySender to use LunaNotificationEvent for consistenc…
polyglot-k e6fede0
feat: Update NotifyStrategyMapping to use LunaNotificationStatus for …
polyglot-k 1738fa8
feat: Update NotifySenderResolver to use LunaNotificationStatus and L…
polyglot-k 5832b36
feat: Update NotifyService to use LunaNotificationEvent and LunaNotif…
polyglot-k 498270e
feat: Rename NotifyTemplateGenerator package and update notification …
polyglot-k 2db93d5
MOSU-213 refactor: 비밀번호 요청 log 제거
wlgns12370 c54f90f
feat: Update ArchivingOrchestratorCronConfig to adjust cron schedule …
polyglot-k f558c3a
feat: Remove unused MailSubjectFormat import from DepositSuccessEvent…
polyglot-k 424c3dd
feat: Update DepositSuccessMailRequest to include customer name in su…
polyglot-k 48ee934
feat: Handle null cause in DiscordExceptionNotifyEventRequest for imp…
polyglot-k a5e24c4
Merge pull request #215 from mosu-dev/refactor/enhanced-notify
polyglot-k 34aa232
Merge pull request #214 from mosu-dev/feature/mosu-213
wlgns12370 60aa005
MOSU-216 refactor: 불필요한 OAuth2 로깅 제거
wlgns12370 88f056e
MOSU-216 feat: 카카오 심사 성공에 따른 필드 추가
wlgns12370 6442797
MOSU-216 refactor: KmcTokenProcessingFilter 불필요한 로깅 제거
wlgns12370 3451787
feat: Add APPLICATION_GUEST endpoint to Whitelist for guest access
polyglot-k 217cdd0
feat: Refactor VirtualAccountService to use CreateVirtualAccountProce…
polyglot-k c0709fa
feat: Add applicationId parameter to saveVirtualAccountLog method in …
polyglot-k ed80ced
feat: Add applicationId field to VirtualAccountLogJpaEntity for enhan…
polyglot-k f513310
feat: Update import statements in VirtualAccountCallbackService for b…
polyglot-k 2fb1ce3
feat: Add DepositEventMapper and DepositEventPublisher for handling d…
polyglot-k 9c5d115
feat: Rename DepositEventHandler package for improved clarity
polyglot-k 587cd2b
feat: Add applyAsGuest endpoint for guest application submissions
polyglot-k e6dfdf6
feat: Add ApplicationGuestRequest for guest application submissions a…
polyglot-k 044c01b
feat: Implement applyByGuest method for guest application submissions…
polyglot-k cd4f107
feat: Add USER_SAVE_FAILED error code for user save failures
polyglot-k f10ba41
feat: Rename DepositSuccessEventHandler package for improved organiza…
polyglot-k 54fc413
feat: Implement CreateVirtualAccountProcessor for virtual account cre…
polyglot-k 88e13c2
feat: Add ExamApplicationAmountCalculator and update application logi…
polyglot-k c0a3260
feat: Rename DepositFailureEventHandler package and enhance event han…
polyglot-k e168723
feat: Add ExamApplicationAmountCalculator for calculating exam applic…
polyglot-k 60e58fc
MOSU-216 feat: kakao 응답 정보 에러 처리
wlgns12370 8b444be
feat: Add query to find ExamApplication by order ID with virtual acco…
polyglot-k 4076fc0
feat: Update RegisterApplicationCommand to support multiple ExamAppli…
polyglot-k 2b7a21c
feat: Add saveUser method to UserService for user persistence
polyglot-k 9c8a924
feat: Update TossVirtualAccountPayload to accept dynamic amount for v…
polyglot-k 5ac5c16
Merge pull request #219 from mosu-dev/feature/mosu-216
wlgns12370 f208bfc
fix: Refactor lunch amount calculation to use Boolean.TRUE for clarity
polyglot-k cbc87b1
Merge branch 'develop' of https://github.com/mosu-dev/mosu-server int…
polyglot-k cd4cf35
feat: Refactor applyByGuest method to improve application handling flow
polyglot-k 947f2b1
feat: Add error handling for virtual account creation in CreateVirtua…
polyglot-k e461efd
Merge pull request #221 from mosu-dev/feat/guest-application
polyglot-k f3f875a
feat: ExamStatus 추가 및 시험 마감 기능 추가
chominju02 daf37a0
refactor: 마감된 시험인지 검증하는 로직 수정
chominju02 d48fc68
refactor: dealindline이 지난 시험은 최초 발견 시 lazy하게 close 처리
chominju02 b7cc906
mosu-218 refactor: 문의 관리자 권한들은 관리자 controller 이관
jbh010204 8a00199
refactor: 검증로직 순서 변경
chominju02 c04c57e
mosu-218 feat: 내 문의글 조회 기능 구현
jbh010204 3574e1d
Merge pull request #222 from mosu-dev/feature/mosu-205
chominju02 e46ced0
mosu-218 refactor: 리뷰 반영
jbh010204 adb7ba6
MOSU-218 내 문의글 조회 내역 기능 구현
jbh010204 7100d70
fix: Correct SQL query to delete from refund table instead of exam_ap…
polyglot-k b9b135f
fix: Update saveAllUsingBatch method to use setObject for application…
polyglot-k 29f3bcd
fix: Update deployment conditions in docker-depoly.yaml and add branc…
polyglot-k File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
There are no files selected for viewing
Binary file not shown.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,97 @@ | ||
| --- | ||
| name: 성능 테스트 및 개선 리포트 | ||
| about: 성능 병목 테스트 및 개선 과정을 기록합니다. | ||
| title: "[📈 성능 개선] OOO 기능의 부하 테스트 및 최적화" | ||
| labels: "성능개선, 부하테스트, 최적화" | ||
| assignees: "" | ||
| --- | ||
|
|
||
| ## 🎯 테스트 시나리오 정의 | ||
|
|
||
| > 어떤 기능에 대해 어떤 상황을 가정하여 성능 테스트를 진행할 것인지 구체적으로 작성합니다. | ||
|
|
||
| - **테스트 대상 API**: `[HTTP Method] /api/v1/...` | ||
| - **핵심 로직**: (예: 게시글 목록 조회, 복잡한 조인 쿼리 포함) | ||
| - **부하 테스트 도구**: (예: nGrinder, JMeter, k6) | ||
| - **테스트 환경**: (예: 로컬 MacBook Pro (M1, 16GB), DB는 Docker, 애플리케이션 메모리 1GB) | ||
|
|
||
| --- | ||
|
|
||
| ## 📊 1차 성능 측정 결과 (개선 전) | ||
|
|
||
| > 개선 작업을 진행하기 전의 성능 지표를 기록합니다. (Before) | ||
|
|
||
| | 지표 (Metric) | 측정 값 (Value) | 단위 (Unit) | | ||
| |:----------------------------|:-------------|:----------| | ||
| | **VUser (가상 사용자 수)** | | 명 | | ||
| | **TPS (초당 트랜잭션 수)** | | tps | | ||
| | **평균 응답 시간 (Avg. Latency)** | | ms | | ||
| | **최대 응답 시간 (Max. Latency)** | | ms | | ||
| | **에러율 (Error Rate)** | | % | | ||
|
|
||
| **[nGrinder, JMeter 등 결과 그래프 스크린샷을 여기에 첨부해 주세요]** | ||
|
|
||
|
|
||
| --- | ||
|
|
||
| ## 🧐 병목 지점 분석 및 가설 | ||
|
|
||
| > 1차 측정 결과를 바탕으로 어떤 부분에서 병목이 발생하고 있는지 분석하고, 원인에 대한 가설을 세웁니다. | ||
|
|
||
| **가설**: | ||
| (예: N+1 쿼리 문제로 인해 DB 조회 시간이 과도하게 소요될 것으로 추정됨.) | ||
|
|
||
| **근거**: | ||
|
|
||
| - [ ] APM(Pinpoint, Sentry 등)에서 특정 메서드 지연 확인 | ||
| - [ ] 느린 쿼리 로그(Slow Query Log)에서 해당 쿼리 발견 | ||
| - [ ] 높은 CPU / Memory 사용량 확인 (구간: ) | ||
| - [ ] 코드 리뷰 (비효율적인 로직, 불필요한 API 호출 등) | ||
| - **기타**: | ||
|
|
||
| --- | ||
|
|
||
| ## 🛠️ 개선 전략 및 실행 | ||
|
|
||
| > 위 가설을 바탕으로 어떤 방식으로 문제를 해결할 것인지 구체적인 전략을 작성하고 실행합니다. | ||
|
|
||
| **전략**: | ||
| (예: JPA의 Fetch Join을 사용하여 N+1 문제를 해결. 또는, 자주 변경되지 않는 데이터에 캐싱(Redis, Caffeine)을 적용.) | ||
|
|
||
| **관련 PR**: | ||
|
|
||
| - #(PR 번호) | ||
|
|
||
| --- | ||
|
|
||
| ## 📊 2차 성능 측정 결과 (개선 후) | ||
|
|
||
| > 개선 작업 후, 1차 측정과 동일한 조건으로 다시 성능을 측정하여 기록합니다. (After) | ||
|
|
||
| | 지표 (Metric) | 측정 값 (Value) | 단위 (Unit) | | ||
| |:----------------------------|:-------------|:----------| | ||
| | **VUser (가상 사용자 수)** | | 명 | | ||
| | **TPS (초당 트랜잭션 수)** | | tps | | ||
| | **평균 응답 시간 (Avg. Latency)** | | ms | | ||
| | **최대 응답 시간 (Max. Latency)** | | ms | | ||
| | **에러율 (Error Rate)** | | % | | ||
|
|
||
| **[개선 후 결과 그래프 스크린샷을 여기에 첨부해 주세요]** | ||
|
|
||
|
|
||
| --- | ||
|
|
||
| ## ✨ 최종 결론 | ||
|
|
||
| > 개선 전/후 지표를 비교하여 개선 효과를 정량적으로 요약하고, 결론을 작성합니다. | ||
|
|
||
| **개선 효과 요약**: | ||
|
|
||
| - **TPS**: `(개선 전 값)` -> `(개선 후 값)` **( 약 O 배 증가 )** | ||
| - **평균 응답 시간**: `(개선 전 값)` -> `(개선 후 값)` **( 약 O % 감소 )** | ||
|
|
||
| **결론**: | ||
| (예: Fetch Join 적용으로 N+1 문제를 해결하여 DB I/O를 크게 줄였고, 그 결과 TPS는 2.5배 증가, 평균 응답 시간은 60% 감소하는 효과를 확인했습니다.) | ||
|
|
||
| **추가 논의 사항**: | ||
| (예: 향후 트래픽 증가 시 스케일 아웃 전략 필요, 캐시 동기화 문제에 대한 추가 논의 필요 등) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,38 @@ | ||
| name: Docker PR build | ||
|
|
||
| on: | ||
| pull_request: | ||
| branches: [ develop ] | ||
|
|
||
| jobs: | ||
| build-and-deploy: | ||
| runs-on: ubuntu-latest | ||
|
|
||
| steps: | ||
| - name: Checkout source | ||
| uses: actions/checkout@v3 | ||
|
|
||
| - name: Set up JDK 21 | ||
| uses: actions/setup-java@v3 | ||
| with: | ||
| java-version: '21' | ||
| distribution: 'temurin' | ||
|
|
||
| - name: Cache Gradle files | ||
| uses: actions/cache@v3 | ||
| with: | ||
| path: | | ||
| ~/.gradle/caches | ||
| ~/.gradle/wrapper | ||
| key: gradle-${{ runner.os }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} | ||
| restore-keys: | | ||
| gradle-${{ runner.os }}- | ||
|
|
||
| - name: Clone external repo with jar into libs/ | ||
| run: | | ||
| mkdir -p libs | ||
| git clone https://x-access-token:${{ secrets.GH_PAT }}@github.com/mosu-dev/mosu-kmc-jar.git temp-jar | ||
| cp temp-jar/*.jar libs/ | ||
|
|
||
| - name: Build with Gradle | ||
| run: ./gradlew build -x test |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,24 @@ | ||
| name: Docker CI/CD - Deploy | ||
|
|
||
| on: | ||
| workflow_dispatch: | ||
| branches: | ||
| - test | ||
| jobs: | ||
| deploy: | ||
| runs-on: self-hosted | ||
|
|
||
| steps: | ||
| - name: Deploy via SSH | ||
| run: | | ||
| cd ~/mosu-server | ||
|
|
||
| echo "${{ secrets.TEST_ENV_BLUE }}" > .env.blue | ||
| echo "${{ secrets.TEST_ENV_GREEN }}" > .env.green | ||
| echo "APP_IMAGE_VERSION=${{ github.sha }}" >> .env.blue | ||
| echo "APP_IMAGE_VERSION=${{ github.sha }}" >> .env.green | ||
| sudo docker stop $(sudo docker ps -aq) || true | ||
| sudo docker rm $(sudo docker ps -aq) || true | ||
| echo "Stopping all containers..." | ||
|
|
||
| sudo ./deploy.sh |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,4 +1,4 @@ | ||
| FROM openjdk:21-jdk | ||
| ARG JAR_FILE=build/libs/*.jar | ||
| ADD ${JAR_FILE} app.jar | ||
| ENTRYPOINT ["java", "-Duser.timezone=GMT+9", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app.jar"] | ||
| FROM amazoncorretto:21 | ||
| COPY build/libs/*SNAPSHOT.war app.war | ||
|
|
||
| ENTRYPOINT ["java", "-Duser.timezone=GMT+9", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app.war"] | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -2,6 +2,7 @@ plugins { | |
| id 'java' | ||
| id 'org.springframework.boot' version '3.4.5' | ||
| id 'io.spring.dependency-management' version '1.1.7' | ||
| id 'war' | ||
| } | ||
|
|
||
| group = 'life.mosu' | ||
|
|
@@ -24,7 +25,7 @@ repositories { | |
| } | ||
|
|
||
| dependencies { | ||
|
|
||
| implementation fileTree(dir: 'libs', include: ['*.jar']) | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||
| implementation 'org.springframework.boot:spring-boot-starter-data-jpa' | ||
| implementation 'org.springframework.boot:spring-boot-starter-web' | ||
| implementation 'org.springframework.boot:spring-boot-starter-validation' | ||
|
|
@@ -38,8 +39,12 @@ dependencies { | |
| testImplementation 'org.springframework.boot:spring-boot-starter-test' | ||
| testRuntimeOnly 'org.junit.platform:junit-platform-launcher' | ||
|
|
||
| // 인증사 관련 의존성 | ||
| implementation 'javax.servlet:jstl:1.2' | ||
| implementation "org.apache.tomcat.embed:tomcat-embed-jasper" | ||
|
|
||
| // swagger | ||
| implementation "org.springdoc:springdoc-openapi-starter-webmvc-ui:2.7.0" | ||
| implementation "org.springdoc:springdoc-openapi-starter-webmvc-ui:2.8.9" | ||
|
|
||
| // jwt | ||
| implementation 'io.jsonwebtoken:jjwt-api:0.11.5' | ||
|
|
@@ -58,9 +63,17 @@ dependencies { | |
| implementation 'org.flywaydb:flyway-mysql' | ||
| runtimeOnly 'com.mysql:mysql-connector-j' | ||
|
|
||
| // Testcontainers | ||
| testImplementation 'org.springframework.boot:spring-boot-testcontainers:3.3.5' | ||
| testImplementation 'org.testcontainers:testcontainers:1.19.3' | ||
| testImplementation 'org.testcontainers:junit-jupiter:1.19.3' | ||
| testImplementation 'org.testcontainers:mysql:1.20.0' | ||
|
|
||
|
|
||
| // security | ||
| implementation 'org.springframework.boot:spring-boot-starter-security' | ||
| implementation 'org.springframework.boot:spring-boot-starter-oauth2-client' | ||
| implementation 'com.github.ben-manes.caffeine:caffeine:3.1.8' | ||
|
|
||
| // aws | ||
| implementation platform('software.amazon.awssdk:bom:2.20.0') | ||
|
|
@@ -85,6 +98,31 @@ dependencies { | |
|
|
||
| // poi-excel | ||
| implementation 'org.apache.poi:poi-ooxml:5.4.0' | ||
|
|
||
| implementation 'org.springframework.boot:spring-boot-starter-webflux' | ||
|
|
||
| runtimeOnly 'com.h2database:h2' | ||
|
|
||
| testImplementation 'org.springframework.boot:spring-boot-testcontainers:3.3.5' | ||
| testImplementation 'org.testcontainers:testcontainers:1.19.3' | ||
| testImplementation 'org.testcontainers:junit-jupiter:1.19.3' | ||
| testImplementation 'org.testcoscntainers:mysql:1.20.0' | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||
|
|
||
| annotationProcessor "org.springframework.boot:spring-boot-configuration-processor" | ||
|
|
||
| implementation 'org.apache.commons:commons-pool2:2.12.1' | ||
|
|
||
| //scheduler | ||
| implementation 'org.springframework.boot:spring-boot-starter-quartz' | ||
|
|
||
| //타임리프 | ||
| implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' | ||
| } | ||
|
|
||
| configurations.configureEach { | ||
| resolutionStrategy { | ||
| force 'org.apache.commons:commons-lang3:3.18.0' | ||
| } | ||
| } | ||
|
|
||
| tasks.named('test') { | ||
|
|
||
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The pattern
*SNAPSHOT.waris brittle as it will fail if you build a release version (which typically doesn't contain 'SNAPSHOT' in its name). Consider using a more generic pattern like*.warif you are sure there will be only one WAR file. An even more robust approach would be to rename the artifact to a fixed name (e.g.,app.war) in yourbuild.gradlefile.