데이터 블로그 챌린지 Day 7

데이터 기반 서비스 개선 (1/3) - 서버 스펙 찾기

섬네일 추출 기능 개선을 3부로 쪼개어 글을 적어보려한다.

결론

단순히 머릿속으로 서버 스펙을 설정하기보다 성능 테스트를 통해 얻은 데이터를 기반으로 서버 스펙을 찾음으로 근거있는 판단이 되어야한다.

상황

이미지 업로드 시 섬네일 추출까지 동시에 진행하였다. 즉 업로드와 섬네일 추출까지 완료가 되어야 response 를 보내준다.

업로드와 섬네일 추출을 분리해서 진행하면 사용자에게 더 좋은 UX 를 제공할 수 있을 것 같다는 생각이 들었다. 업로드가 되면 섬네일 작업이 완료될 때까지 spinner 가 돌며 작업 중임을 알리면 업로드 속도가 훨씬 빨라지기 때문에 업로드와 섬네일을 분리하자는 생각이 들었다.

서버 스펙 찾기

서버에서 가장 중요한 스펙이라면 CPU 와 메모리를 뽑을 수 있다. 하드의 종류, 네트워크 등 선택적 요소가 더 있지만 스펙별 가격 편차가 더 커지는 것으로 뽑자면 CPU 와 메모리이다. 대충 적당한 스펙으로 서버 구동하고 모니터링해도 괜찮지만 데이터 기반으로 적정 스펙을 찾아 최적의 가격을 지불하는 것이 더 현명할 것이다. 그렇기에 서버 스펙을 달리해서 테스트가 얼마나 실행되는지 확인하는 것이 필요하다.

서버 준비

총 7대를 준비하였다. Docker 로 배포하였기에 같은 환경이다. 각기 다른 스펙으로 테스트를 하기 위해 각 서버에 hw1~7 이라는 이름을 붙여주었다. 숫자가 높을수록 서버 스펙은 상향된다.

  • hw1 - CPU 1, Memory 512MiB
  • hw2 - CPU 1, Memory 1GiB
  • hw3 - CPU 1, Memory 2GiB
  • hw4 - CPU 2, Memory 2GiB
  • hw5 - CPU 2, Memory 4GiB
  • hw6 - CPU 2, Memory 8GiB
  • hw7 - CPU 4, Memory 8GiB

7-1.png

테스트 진행

  • hw1 - Service Unavailable -> 메모리 부족으로 서버 중지
  • hw2 - 1m 39.72s
  • hw3 - 1m 31.14s
  • hw4 - 1m 15.78s
  • hw5 - 1m 15.30s
  • hw6 - 1m 16.44s
  • hw7 - 1m 14.58s

테스트 분석

hw1 는 사용하지 못하고 hw2, hw3 를 제외하곤 응답 시간이 비슷한 것을 볼 수 있다. 이 정도로 차이가 안 날 수 있나 싶지만 결과를 부정할 수는 없다.

테스트 결론

hw4 를 사용하는 것이 가장 효율적인 서버 스펙이 될 것이다.


데이터 블로그 챌린지 Day 6

데이터 두 가지 접근법 및 수리 모델의 역할

데이터 블로그 챌린지 Day 8

데이터 기반 서비스 개선 (2/3) - 데이터 시각화

Next →

NCloud LB & SourcePipeline 구축하기
tech collection 서비스 성능 개선하기
Selenium 복권 구매 자동화 만들어보기
디자인 패턴
책 리뷰
블로그 챌린지