▶ EC2 와 로컬의 응답 시간의 차이
내가 테스트를 공부하게 되면서 문득 로컬과 EC2의 시간 차이를 비교해보고 싶었다. EC2가 훨씬 느린것이야 당연히 알고 있었지만 그 이유를 모른다는 생각에 시작했다.
테스트는 역시 로컬이 말도 안되는 시간값을 보여줬다
https://latewalk.tistory.com/151
JMeter를 이용한 과부하 테스트(동시 접속자 테스트)
JMeter를 알아보기 전에 부하 테스트에 대해서 간단하게 알아보자 부하 테스트는 임계치 한계에 도달 할 때까지 시스템의 부하를 지속적으로 증가시켜서 시스템을 테스트하는 것을 의미하는 테
latewalk.tistory.com
▶ 응답 속도가 느리다
응답 속도가 느리다고 생각한 이유는 TPS에서 알수 있었다. 데이터를 처리하는 단위인 TPS가 비슷하다는건 로컬과 굉장히 비슷한 환경으로 데이터를 다루고 있다는 뜻이 되는데 로컬과 EC2 의 TPS가 크게 차이가 나지 않는다는 것은 데이터를 다루는 과정에 있어서는 별로 크게 다를게 없다는 것이다.
그렇다면 JMeter 에서 보았던 결과창을 토대로 TPS는 문제가 없는데 평균 응답 속도가 굉장히 많이 차이가 난다 그럼 데이터를 처리하는 시간(processing Time)은 딱히 차이가 없는 것이고 남은 대기 시간(Latency Time)에서 차이가 난다는 결론이 나온다.
▶ 대기 시간이 느린 이유
위에서 블로그에서 보다시피 EC2 가 현저히 느린데 그 이유를 알아보자
이유 1. 클라우드 네트워크
EC2 인스턴스는 클라우드 데이터 센터에 호스팅이 되며, 데이터 전송에 필요한 네트워크를 통해 통신하게 된다. 로컬 환경과는 달리 클라우드 네트워크를 거치게 되면서 더 높은 네트워크 지연이 발생하게 된다.
- 사실 이 이유가 가장 크다고 생각한다. 결국 나는 아마존 서울에 있는 PC를 사용하고 있는 것이고 거기에 있는 DB를 사용하는 것이다. 그래서 TPS를 보면 가까이 있는 서버와 DB는 로컬과 굉장히 비슷한 결과를 보이는데 그 결과를 가져오는데 가져오는 시간인 응답속도가 느린 것이다.
- 데이터 패킷이 클라우드 데이터 센터와 로컬 환경 사이를 라우팅하면서 중간 라우터와 여러 네트워크 장비를 통과하게 되는데 이러한 과정에서 속도의 차이가 발생할 수 있다.
- 클라우드 서비스에서 네트워크 대역폭 및 혼잡도가 영향을 미친다.
- 사람들이 인터넷을 많이 사용하는 시간대일수록 트래픽은 거대해지고 지연 시간이 증가한다.
이유 2. 아마존 프리티어 사용
EC2 인스턴스의 유형에서 영향이 있을 수 있다. 내가 사용하는 프리티어인 t4g.small을 이용하고 있다.
표를보면 내가 지금 사용하는 대역폭은 5Gbps 인데 사실 나의 프로젝트에서 이정도면 충분한 대역폭으로써 서비스를 운영하는데 아무 문제 없을 수준이다.
▶ 결론
우선 내가 인스턴스 크기를 늘린다고 놀라운 효과를 얻을 수는 없을 것같다.
그래서 결국 나는 클라우드 네트워크에 인한 영향이라고 결론으로 보았다.
이유를 다시 살펴보면
- 데이터 전송 거리 : 클라우드 센터와 사용자의 데이터 전송 거리가 멀다
- 라우터 : 데이터가 전송되는 과정에서 여러 라우터와 네트워크 장비를 통과하게 되면서 데이터의 이동 속도와 지연에 영향을 미친다.
해결방안
우선 문제가 있으니 해결방안을 좀 생각해보자
- CDN (Content Delivery Network) 사용 : CDN 서비스를 활용하면 정적 콘텐츠와 미디어 파일등을 더욱 빠르게 제공할 수 있다. 물론 나의 경우와는 다르지만 정적 파일을 따로 다루어서 빠르게 다룰수 있는 방법을 알아볼수 있다.
- 네트워크 최적화 : 데이터를 압축하거나 라우팅 최적화, 대역폭 관리를 하여 줄이는 방법이 있지만 이는 불가능에 가깝다고 생각한다.
- 네트워크 캐시 사용 : 캐싱을 사용하여 이전 요청의 결과를 저장하고 동일한 요청이 들어올 때 다시 계산하는 대신 캐시에서 결과를 반환하는 것이다. 그렇다면 메인화면을 보는 사용자의 입장에서는 캐시에 담긴 화면을 그대로 꺼내는 것이라서 훨씬 빠르지 않을까??
'프로젝트 > 개인 프로젝트' 카테고리의 다른 글
Postman을 통한 테스트 자동화(Feat. 테스트 시나리오) (1) | 2023.10.13 |
---|---|
Pageable의 Page 와 Slice의 성능 테스트 (0) | 2023.09.11 |
Global Exception & Business Exception(예외 처리) (0) | 2023.09.08 |
페이징(Pagination) (0) | 2023.09.08 |