- 잦은 API Call이 예상되는 쿼리를 위한 Index 적용 성능 개선기
- ContentCachingRequestWrapper가 Request 정보를 캐싱하지 못하는 문제 해결
- 스터디 조회 인수테스트 더미 데이터 관리 최적화 (with AfterAllCallback)
- 집계성 컬럼(favorite, review) 반정규화 진행 및 쿼리 튜닝을 통한 성능 개선
- ThreadPool & HikariCP 최적화
- WAS 서버 Scale Out 후 스케줄링 로직이 중복 실행되는 문제 해결
- CompletableFuture를 활용한 N건 이미지 업로드 병렬 처리
Frontend는 리팩토링 하지 않았기 때문에 Backend 요청 흐름만 명시
- 아래 흐름도에서 DNS Resolving 흐름은 생략
docker/docker-compose-persistence.yml
실행docker/docker-compose-monitoring.yml
실행
-
GOOGLE_EMAIL
= 구글 계정 이메일 -
GOOGLE_APP_PASSWORD
= 구글 앱 비밀번호 -
S3_BUCKET
= AWS S3 Bucket -
CLOUD_FRONT_URL
= AWS CloudFront Domain URL-
S3 Credentials 관련
{localUser}/.aws
에 AccessKey & SecretKey 정보 필수
-
-
OAUTH_GOOGLE_CLIENT_ID
= Google OAuth Application Client ID -
OAUTH_GOOGLE_CLIENT_SECRET
= Google OAuth Application Client Secret -
OAUTH_GOOGLE_REDIRECT_URI
= Google OAuth Application Redirect Uri -
OAUTH_NAVER_CLIENT_ID
= Naver OAuth Application Client ID -
OAUTH_NAVER_CLIENT_SECRET
= Naver OAuth Application Client Secret -
OAUTH_NAVER_REDIRECT_URI
= Naver OAuth Application Redirect Uri -
OAUTH_KAKAO_CLIENT_ID
= Kakao OAuth Application Client ID -
OAUTH_KAKAO_CLIENT_SECRET
= Kakao OAuth Application Client Secret -
OAUTH_KAKAO_REDIRECT_URI
= Kakao OAuth Application Redirect Uri -
SLACK_WEBHOOK_URL
= Slack Webhook Url
java -jar \
-Dfile.encoding=UTF-8 \
-Dspring.mail.username="구글 계정 이메일" \
-Dspring.mail.password="구글 앱 비밀번호" \
-Dspring.cloud.aws.s3.bucket="AWS S3 Bucket" \
-Dspring.cloud.aws.cloudfront.url="AWS CloudFront Domain URL" \
-Doauth2.google.client-id="Google OAuth Application Client Id" \
-Doauth2.google.client-secret="Google OAuth Application Client Secret" \
-Doauth2.google.redirect-uri="Google OAuth Application Redirect Uri" \
-Doauth2.naver.client-id="Naver OAuth Application Client Id" \
-Doauth2.naver.client-secret="Naver OAuth Application Client Secret" \
-Doauth2.naver.redirect-uri="Naver OAuth Application Redirect Uri" \
-Doauth2.kakao.client-id="Kakao OAuth Application Client Id" \
-Doauth2.kakao.client-secret="Kakao OAuth Application Client Secret" \
-Doauth2.kakao.redirect-uri="Kakao OAuth Application Redirect Uri" \
-Dslack.webhook.url="Slack Webhook Url" \
./build/libs/StudyWithMe.jar
- API 테스트 시 필요한
Token
은src/main/resources/DummyToken.txt
에서 사용
Google OAuth
Authorization Code
를 파싱한 후/api/oauth/#/google
요청 시 Authorization Code에 존재하는%2F -> /
로 수정
%2F
는 HTTP URL Encoding으로 인한 결과로써 OAuth Provider가 인코딩된 값 인식 불가능- 4%2F0Adeu5BXgIJvUdjU090jAGQEwm8WPb8VidZzvmS9OjNFLrfeTIW9B-jGB292k5PRf73w4XA -> 4/0Adeu5BXgIJvUdjU090jAGQEwm8WPb8VidZzvmS9OjNFLrfeTIW9B-jGB292k5PRf73w4XA > - %2F -> /
- Gradle
build
Task 실행 후 접속- build를 진행해야 REST Docs의 빌드된 index.html이 resources/static에 존재