멋쟁이 사자처럼 백엔드 스쿨 3기에 참여하던 도중 NCP크레딧을 지원을 받아서 배포를 진행했으며 활용 회고를 작성합니다!
1. 무엇을 만들었는지
- 저희 팀에서 진행한 프로젝트는 중고물품 경매 사이트입니다. 사용자는 판매하고자 하는 상품을 등록하고 입찰시스템을 통한 거래가 가능합니다.
핵심 기능으로는 상품에 대한 입찰 서비스와 웹소켓을 통한 채팅과 실시간 알림 서비스입니다. 배포는 네이버 클라우드 플랫폼을 통해 진행했으며 GithubAction을 통해 CI/CD를 구축했습니다. 아래 링크에서 실제 동작 UI와 프로젝트 구조를 확인할 수 있습니다.
https://github.com/BidderOwn/BidderOwn_BE
GitHub - BidderOwn/BidderOwn_BE
Contribute to BidderOwn/BidderOwn_BE development by creating an account on GitHub.
github.com
2. 사용 자원
- Server
서버는 총 3대 대여 했으며, 쿠버네티스를 통해 마스터 서버 1대와 노드 서버 2대로 구분하여 운영했습니다.
- Monitoring System
아래는 모니터링 시스템 UI인데 CPU사용률, Mem사용량, 네트워크 사용량 등 많은 데이터들을 보기 쉽게 제공해줍니다. 실제로 테스트를 진행하면서 성능이 안나올 때 모니터링 시스템의 CPU사용률을 체크하면서 도움을 많이 받았습니다.
- Object Storage
다음은 이미지 저장을 위해 사용한 Object Storage인데 외부 저장소를 이용하면서 서버 자원을 좀 더 활용할 수 있었습니다.(기존에 springBoot의 static저장소에다가 이미지를 저장했을 때는 저장로직도 복잡하고 이미지 렌더링 문제를 겪였는데 Object Storage로 전환하면서 해결했습니다.)
추가로 Aws S3와 호환되는 API를 지원해줘서 익숙한 도구를 사용하는 느낌을 받으실 수 있습니다.
3. 좋았던 점
아무래도 naver에서 만든 플랫폼이다 보니 가이드가 한국어로 작성돼 있어서 필요한 정보를 얻기가 편했습니다. 간단하게나마 인프라 기본 개념에 익숙해지는데에 도움이 많이 됐어서 추후에 어떤 플랫폼을 이용하던 NCP에서의 경험을 살릴 수 있을 것 같습니다.
4. nGrinder를 통한 성능 테스트
nGrinder를 이용해 서버에 부하를 가해 성능 테스트를 진행한 내용입니다.
Vuser(가상의 유저)가 1분 동안 꾸준히 메인페이지를 조회했을 때 TPS(1초 당 트랜잭션 처리 수)와 MTT(평균 테스트 시간)에 대한 지표입니다.
Vuser 100명까지는 그래도 응답시간이 0.3초 정도로 준수하지만 200명이 넘어갔을 때는 0.7초정도 걸리고 300명이 넘어갔을 때는 테스트 실패 비율이 35%까지 증가한 걸 확인할 수 있었습니다. 이 때 TPS는 안떨어지는데 응답 시간이 길어지는 것을 보고 DB에 부하가 걸리는건가? 라고 생각했고 NCP의 모니터링 시스템을 확인하여 DB가 떠있는 서버의 CPU사용률이 80퍼가 넘어가는 것을 확인할 수 있었습니다.
-> DB가 떠있는 서버의 스펙을 올렸는데도 크게 개선되는 부분이 없어서 이 부분은 추후에 로그를 확인하거나 pinpoint를 도입해 부하가 걸리는 원인을 분석해볼 생각입니다.
5.후기
S3 Storage를 이용해 기존 발생하던 이미지 렌더링 이슈를 해결할 수 있었고 성능 테스트를 진행하는 과정에서 모니터링 시스템을 이용해 서버에 접속하지 않고도 컴퓨팅 자원 이용률을 확인할 수 있는 부분이 편리하고 좋았습니다.
추후에 AWS를 학습하거나 할 때 NCP에서의 경험이 많은 도움이 될 것 같습니다. 감사합니다!