호딩클라우드

성능이란? 성능은 왜 중요할까 본문

java

성능이란? 성능은 왜 중요할까

hoding-cloud 2024. 2. 20. 13:54

성능이란

성능은 왜 중요할까?

https://web.dev/learn/performance/why-speed-matters?hl=ko

 

속도가 왜 중요할까요?  |  web.dev

학습 성능을 시작하기 전에 먼저 사용자 환경에서의 역할과 이러한 성능이 사용자에게 더 나은 결과를 가져올 수 있는 방법을 이해해야 합니다. 이 과정은 먼저 이러한 주제에 대한 간략한 소개

web.dev


성능개선과 비지니스

성능은 사용자 유지를 좌우

성능은 수익률 좌우

성능은 사용자 경험을 좌우


웹 기반 성능 측정 지표(Web Vitals)
https://web.dev/articles/vitals?hl=ko


세가지 측면

로딩 : LCP(Largest Contentful Paint) -> 페이지가 처음으로 로딩되는 시간.

상호작용 - FID(First Input Delay) -> 최초 입력 지연

시각적 안정성 - CLS (Cumulative Layout Shift) 레이아웃이 움직이고 이런 부분의 안정성

Web Vitals 측정 도구

Chrome User Experience Report

PageSpeed Insights

Search Console(Core Web Vitals Report)

 


성능의 주요 지표

사용자 : 서비스를 사용하는 사용자의 수

응답시간 : 각요청에 대한 응답시간.

초당 처리량 TPS : 1초에 처리 가능한 트랜잭션의 수

리소스 사용랑 : CPU, Memory Network 등 부화 발생시 리소스 사용량

 

사용자 분류

- 로그인여부에 따라 사용하는 리소스가 다를 수 있다.

로그인된 사용자

로그인되지 않은 사용자

 

성능 테스트 관점의 사용자

Active User 

서비스에 요청을 하고 기다리고 있는 사용자

- 서버에 부하를 주고 있는 자

- 메뉴나 링크를 누르고 결과가 나오기를 기다리는 사용자

- 성능 테스트시 Virtual User와 거의 동일

Concurrent User

- ActiveUser보다 큰 범위

- 서버에 부하를 주고있거나 부하를 가할 가능성이 매우 높은 서비스에 접속중인자

- 웹페이지를 띄워 놓은 사용자나 앱을 실행하고 있는 사용자

출처 : 5월 우아한 Tech 세미나 후기- 이동규(https://techblog.woowahan.com/2627/)

 

Active 와 Concurrent 사용자의 비율을 알고 있는 것은 성능테스트에서 매우 중요하다.

서비스마다 다르지만 일반 사이트의 경우 평균적은 비율은 5%, 회사 솔루션 서버같은 경우 10~20% 이다.

 

응답시간 분류

Application Server에서 소요되는 시간은 CPU time과 Wait time으로 나눌 수 있다.

CPU time : CPU 연산을 하면서 소요되는 시간

Wait time : DB의 결과를 기다리거나 API 호출한 후 대기하는 등 기다리는 시간을 의미

 

처리량 TPS

1초에 얼마나 많은 요청을 처리 가능한지 의미하는 초당 처리량

하나의 화면 또는 기능별로 계산할 수 있다.

참고 : 분당 처리량(TPM), 시간당 처리량(TPH)

 

TPS와 시간 관계

TPS는 스케일 아웃/ 업을 통해서 증가 시킬 수 있으나, 시간을 항샹시킬 수 있다는 의미는 아니다.

 

TPS와 사용자 수의 관계

User가 증가함에 따라 TPS는 증가하다가 TPS가 최대치에 도달한 이후에는 더이상 증가하지 않는다.

 

사용자수와 응답시간의 관계

TPS가 최대치에 도달한 이후에 급격하게 증가한다.

TPS가 최대치에 도달하는 이유는 병목지점이 존재하기 떄문이다.

 

병목이란?

TPS가 더이상 증가하지 않게 되고 응답속도가 증가하게되는 부분

대부분의 병목은 DB에서 발생한다.

DB connecttion 풀 의 적정 개수

기본 개수를 사용하게 되면 병목이 발생하지만 WAS,DB가 놀고있는 상황이 발생할 수 있다.

해당 서비스의 최대 TPS를  파악한 뒤 이 때의 active User수 정도의 커넥션 풀을 설정하는 것이 좋다.

 

성능테스트가 필요할 때

1. 서비스 오픈 전 성능 확인

- 서비스에서 몇 명의 사용자를 처리할 수 있는지 확인

- 서버의 최대 처리량 확인

2. 튜닝 전 후 성능 비교

- 응답속도가 빠른 기능의 경우 단건의 성능 비교는 무의미하고 부하시의 성능비교가 중요하기 때문

- 단. 응답속도가 느린 기능의 경우 단건의 성능 비교도 의미는 있습니다.

3. 인프라 용량 산정

4. 부하 상황에서의 결함 도출

 

'java' 카테고리의 다른 글

[java] JVM Garbage Collector  (0) 2024.03.04
JAVA JDK21 가상스레드란? 배경부터 테스트까지  (1) 2024.01.29