Skip to content

Commit

Permalink
feat: 성능 튜닝 및 무중단 배포 적용 (#651)
Browse files Browse the repository at this point in the history
* feat: HikariCP, Tomcat 튜닝 (#644)

* refactor: 임시로 DEV CI/CD 스크립트 수정

* refactor: branch 경로 수정 및 docker에만 push 할 수 있도록 수정

* refactor: accept-count 200

* refactor: - accept-count 200, + hikari max pool size 50

* refactor: + hikari max pool size 200

* refactor: - hikari max pool size 30

* refactor: OfferingEntity의 Member에 FetchType.LAZY 설정 및 트랜잭션 추가

* refactor: getAllOffering에 트렌젝션 적용

* chore: actuator에 hikariCP 메트릭 지표 추가

* refactor: - hikari max pool size 20

* refactor: + hikari max pool size 40

* refactor: - hikari max pool size 30

* refactor: - hikari max pool size 20

* refactor: + hikari max pool size 50

* refactor: - hikari max pool size 4

* refactor: + hikari max pool size 40

* refactor: hikari max pool size default(10)

* refactor: + hikari max pool size 8

* refactor: 테스트를 위해 공모 생성 시 알림 off

* refactor: - tomcat max threads 3

* refactor: + tomcat max threads 100

* refactor: default로 회귀

* feat: HikariCP, Tomcat 설정 및 주석 해제

* refactor: metric 관련 설정 제거

---------

Co-authored-by: fromitive <[email protected]>
Co-authored-by: Choo <[email protected]>

* chore: prod yml ci/cd를 blue & green 으로 변경 (#650)

---------

Co-authored-by: masonkimseoul <[email protected]>
Co-authored-by: Choo <[email protected]>
  • Loading branch information
3 people authored Oct 24, 2024
1 parent 96c3da8 commit b9f4070
Show file tree
Hide file tree
Showing 5 changed files with 36 additions and 24 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/backend-dev-ci-cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ on:
- ".github/workflows/backend-dev-ci-cd.yml"
- "Dockerfile"
# pull_request:
# branches: [ "develop" ]
# branches: [ "chongdae" ]
# paths:
# - "backend/**"
# - ".github/workflows/backend-dev-ci-cd.yml"
Expand Down
43 changes: 21 additions & 22 deletions .github/workflows/backend-prod-ci-cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -61,30 +61,29 @@ jobs:
docker tag ${{ secrets.BE_DOCKER_IMAGE_NAME_PROD }} ${{ secrets.BE_DOCKERHUB_USERNAME }}/${{ secrets.BE_DOCKER_IMAGE_NAME_PROD }}:${GITHUB_SHA::7}
docker push ${{ secrets.BE_DOCKERHUB_USERNAME }}/${{ secrets.BE_DOCKER_IMAGE_NAME_PROD }}:${GITHUB_SHA::7}
deploy-a:
needs: build-and-test
runs-on: prod-a

deploy-new-container:
needs: build-and-test
strategy:
matrix:
runner: [prod-a, prod-b]
runs-on: [ self-hosted, ${{ matrix.runner }} ]
steps:
- name: Pull Image And Restart Container on Production A
run: |
docker login -u ${{ secrets.BE_DOCKERHUB_USERNAME }} -p ${{ secrets.BE_DOCKERHUB_PASSWORD }}
docker stop ${{ secrets.BE_DOCKER_CONTAINER_NAME }} | true
docker rm ${{ secrets.BE_DOCKER_CONTAINER_NAME }} | true
docker image prune -a -f
docker pull ${{ secrets.BE_DOCKERHUB_USERNAME }}/${{ secrets.BE_DOCKER_IMAGE_NAME_PROD }}:${GITHUB_SHA::7}
docker run --name ${{ secrets.BE_DOCKER_CONTAINER_NAME }} -d -v /logs:/logs -p 80:8080 -e SPRING_PROFILES_ACTIVE=prod ${{ secrets.BE_DOCKERHUB_USERNAME }}/${{ secrets.BE_DOCKER_IMAGE_NAME_PROD }}:${GITHUB_SHA::7}
- name: Checkout repository
uses: actions/checkout@v4

deploy-b:
needs: deploy-a
runs-on: prod-b
- name: Deploy new container on ${{ matrix.runner }}
run: |
bash launch_next_container.sh ${GITHUB_SHA::7} prod ${{ secrets.BE_DOCKERHUB_USERNAME }} ${{ secrets.BE_DOCKER_IMAGE_NAME_PROD }}
working-directory: backend/deploy

switch-new-container:
needs: deploy-new-container
strategy:
matrix:
runner: [prod-a, prod-b]
runs-on: [ self-hosted, ${{ matrix.runner }} ]
steps:
- name: Pull Image And Restart Container on Production B
- name: Switch from old to new container on ${{ matrix.runner }}
run: |
docker login -u ${{ secrets.BE_DOCKERHUB_USERNAME }} -p ${{ secrets.BE_DOCKERHUB_PASSWORD }}
docker stop ${{ secrets.BE_DOCKER_CONTAINER_NAME }} | true
docker rm ${{ secrets.BE_DOCKER_CONTAINER_NAME }} | true
docker image prune -a -f
docker pull ${{ secrets.BE_DOCKERHUB_USERNAME }}/${{ secrets.BE_DOCKER_IMAGE_NAME_PROD }}:${GITHUB_SHA::7}
docker run --name ${{ secrets.BE_DOCKER_CONTAINER_NAME }} -d -v /logs:/logs -p 80:8080 -e SPRING_PROFILES_ACTIVE=prod ${{ secrets.BE_DOCKERHUB_USERNAME }}/${{ secrets.BE_DOCKER_IMAGE_NAME_PROD }}:${GITHUB_SHA::7}
bash switch_blue_green_container.sh
working-directory: backend/deploy
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import jakarta.persistence.Entity;
import jakarta.persistence.EnumType;
import jakarta.persistence.Enumerated;
import jakarta.persistence.FetchType;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
Expand Down Expand Up @@ -48,7 +49,7 @@ public class OfferingEntity extends BaseTimeEntity {
private Long id;

@NotNull
@ManyToOne
@ManyToOne(fetch = FetchType.LAZY)
private MemberEntity member;

@NotNull
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ public class OfferingService {
private final OfferingFetcher offeringFetcher;
private final Clock clock;

@Transactional(readOnly = true)
public OfferingDetailResponse getOfferingDetail(Long offeringId, MemberEntity member) {
OfferingEntity offering = offeringRepository.findById(offeringId)
.orElseThrow(() -> new MarketException(OfferingErrorCode.NOT_FOUND));
Expand All @@ -72,6 +73,7 @@ public OfferingAllResponseItem getOffering(Long offeringId) {
return new OfferingAllResponseItem(offering, offeringPrice);
}

@Transactional(readOnly = true)
public OfferingAllResponse getAllOffering(String filterName, String searchKeyword, Long lastId, Integer pageSize) {
Pageable pageable = PageRequest.ofSize(pageSize);
OfferingFilter filter = OfferingFilter.findByName(filterName);
Expand Down Expand Up @@ -186,6 +188,7 @@ private void updateStatus(OfferingEntity offering) { // TODO : 도메인 분리
}

@WriterDatabase
@Transactional
public void deleteOffering(Long offeringId, MemberEntity member) {
OfferingEntity offering = offeringRepository.findById(offeringId)
.orElseThrow(() -> new MarketException(OfferingErrorCode.NOT_FOUND));
Expand Down
9 changes: 9 additions & 0 deletions backend/src/main/resources/application.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,17 @@
server:
tomcat:
threads:
max: 35
max-connections: 1024
accept-count: 242

spring:
application:
name: chongdae
datasource:
url: jdbc:h2:mem:database
hikari:
maximum-pool-size: 8
jpa:
show-sql: true
defer-datasource-initialization: true
Expand Down

0 comments on commit b9f4070

Please sign in to comment.