[2024.08.19 TIL] 내일배움캠프 87일차 (최종 팀프로젝트, 인덱스 유무에 따른 속도 차이 테스트)

My_Code·2024년 8월 19일
0

TIL

목록 보기
102/113
post-thumbnail

본 내용은 내일배움캠프에서 활동한 내용을 기록한 글입니다.


💻 TIL(Today I Learned)

📌 Today I Done

✏️ 인덱스 유무에 따른 속도 차이 테스트

    • 기존 엔티티 코드에서 다른 엔티티와 관계를 맺으면 자동으로 외래키에 대한 인덱스가 생성됨
  • 그래서 인덱스 여부에 따른 속도 차이를 비교하기 위해서 새로운 테스트 EC2 인스턴스, 데이터베이스가 필요했음

  • EC2 인스턴스는 배포 서버와 동일한 환경으로 새롭게 생성

  • 그리고 테스트 데이터베이스에는 기존에 있던 엔티티를 제거하기 위해서 외래키를 지운 후 인덱스들을 제거해야 함

  • 그리고 인덱스를 제거하기 전에 로우 쿼리로 실행했을 때의 속도도 같이 측정할 예정

  • 로우 쿼리는 VSCode의 터미널에서 보이는 로우 쿼리를 복사해서 DBeaver 같은 곳에서 실행하면 됨

  • 인덱스 있을 때의 로우 쿼리 소요 시간 (ms)

    • 107
    • 37
    • 41
    • 36
    • 35
    • 34
    • 37
    • 45
    • 42
    • 33
    • 평균 : 44.7
  • ‘3초 내 응답, 오류는 1% 이내’ 라는 조건일 때, 가능한 최대 접속자 수 (대략 2000명)

    • 총 공연 데이터의 수는 약 1000개
    • 2000명 이상도 가능은 하지만 여러 번 실행해도 에러가 1% 이내인 경우는 약 2000명


  • 인덱스 없을 때의 로우 쿼리 소요 시간 (ms)

    • 87
    • 34
    • 33
    • 33
    • 33
    • 37
    • 30
    • 33
    • 32
    • 40
    • 평균 : 39.2
  • 3초 내 응답, 오류는 1% 이내’ 라는 조건일 때, 가능한 최대 접속자 수 (대략 1950명)

    • 1950명 이상도 가능은 하지만 여러 번 실행해도 에러가 1% 이내인 경우는 약 1950명

  • 결론
    • 인덱스의 유무로 인한 속도 차이는 미비함
    • 데이터가 엄청 많거나 JOIN 관계가 복잡하지 않기 때문인 것 같음
    • 그래서 다른 방법으로 테스트를 진행할 예정
    • 기존에는 대략 2000명의 트래픽만 수용 가능했지만 다수의 EC2를 ALB로 연결해서 수용 가능한 트래픽 수를 늘려볼 예정


📌 Tomorrow's Goal

✏️ 여러 EC2 인스턴스 ALB에 연결하기

  • 사실 오늘 2개의 인스턴스를 더 만들어서 간단하게 ALB로 연결했음

  • 하지만 정리가 되지 않아서 내일 정리해서 기록을 남길 예정

  • 여러 EC2 인스턴스를 ALB로 연결하면 단일 인스턴스에서 수용하지 못한 트래픽의 수를 다중 인스턴스를 통해 해결이 가능함

  • 그리고 내일 Auto Scaling을 통해서 기존 서버의 수용 가능한 트래픽을 넘어서면 자동으로 서버를 증설해서 트래픽을 수용할 수 있도록 하는 기능을 설정할 예정



📌 Today's Goal I Done

✔️ 인덱스 유무에 따른 속도 차이 테스트

  • 오늘은 인덱스 유무에 따른 속도 차이 테스트를 마무리 함

  • 생각처럼 유의미한 결과가 나오지 않아서 결국에는 다른 테스트로 넘어감

  • 기존에 하던 테스트는 스파이크 테스트라고 해서 한 순간에 많은 트래픽을 줘서 얼마나 버틸 수 있는지를 확인하는 테스트였음

  • 하지만 이후에 진행한 테스트는 많은 트래픽을 꾸준히 줘서 얼마나 많은 트래픽을 수용할 수 있는지 확인하는 테스트를 진행했음

  • 기본적인 ALB 연결은 간단했지만 이 내용을 CI/CD에 적용시키는 것은 굉장히 어려웠음

  • 결국 CI/CD에는 적용하지 못하고 JMeter를 이용해서 간단하게 성능 테스트를 진행함

  • 하루 종일 테스트만 하다가 끝나니 생각보다 허무하게 느껴짐...


profile
조금씩 정리하자!!!

0개의 댓글