성능이란

공호진·2024년 4월 14일
0
post-custom-banner

왜 성능이 중요한가?

  • 성능은 사용자 유지를 좌우 -> 전환율 향상 좌우
    - 사용자는 성능이 좋은 사이트를 선택
  • 성능은 사용자 경험을 좌우
    - 느린 사이트는 사용자의 불만을 야기

성능 분야

  • 웹 성능(Web, Front End)
  • 서버 성능(Serverm Back End)

웹 기반의 측정 지표

Web Vitals

  • 웹에서 우수한 사용자 경험을 제공하는 데 필수적인 품질 신호에 대한 통합 지침을 제공하기 위해서 구글에서 지정한 것
    - 측정 도구

  • 사용자 경험의 세 가지 측면

    • 로딩 (Loading) -LCP
    • 상호 작용 (Interactivity)- FID
    • 시각적 안정성 (Visual Stability)- CLS
    로딩 - LCP

    이미지 참조

  • Largest Contentful Paint
    - 로딩 성능을 측정

    • 우수한 사용자 경험을 제공하려면 페이지가 처음으로 로딩된 후 2.5 초 이내에 LCP가 발생해야 한다.

상호 작용 - FID

이미지참조

  • First Input Delay
    - 상호 작용을 측정
    • 페에지의 FID가 100 밀리초 이하

시각적 안정성 - CLS

  • Cumulative Layout Shfit(누적 레이아웃 쉬프트)
    - 시각적 안정성을 측정
    • 페이지에서 0.1 이하의 CLS를 유지

성능의 주요 지표

  • 사용자
    - 서비스를 사용하는(부하를 주는) 사용자의 수
  • 응답시간 (Response time)
    - 각 요청에 대한 응답시간
  • 초당 처리량 (Transactions Per Seconds, TPS)
    - 1초에 처리 가능한 트랜잭션의 수
  • 리소스 사용량
    - CPU, MEM, NETWORK 등 부하 발생 시 리소스 사용량

사용자 분류

  • 성능 테스트 관점의 사용자
    - Active User
    - Concurrent User

Active User (서비스에 요청을 하고 기다리는 사용자 )

  • 서버에 부하를 주고 있는자
  • 메뉴나 링크를 누르고 결과가 나오기를 기다리는 사용자
  • 성능 테스트 시, Virtual user 와 거의 동일

Concurrent User (서비스에 접속한 사용자)

  • Active User를 포함
  • 서버에 부하를 주고 있거나 , 부하를 가할 가능성이 있는 매우 높은, 서비스에 접속 중인 자
  • 웹페이지를 띄워 놓은 사용자나 앱을 실행하고 있는 사용자

응답 시간

  • 시스템 관점의 응답시간
    - 요청 시간과 응답 시간으로 분리 가능
    - 응답 시간과 새로운 요청 시간과의 간격은 대기 시간(Think Time)이 존재

요청 시간과 응답 시간 상세

  • 요청 시간
    (Client -> N/W Connect - > Request Data Send)

    • Client : 앱이나 브라우저에서 처리하는데 소요되는 시간
    • Network Connect : 네트워크 연결 소요 시간
    • Request Data Send : 요청 데이터 전송
  • 응답 시간
    (Server -> Response Data Receive -> N/W Close -> Client)

    • Server : 서버에서 소요되는 모든 시간

      Network + Application Server + DB + Cache 등에서 소
      요되는 시간의 합

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

      CPU Time : CPU 연산의 소요 시간
      Wait Time : DB의 결과를 기다리거나, API 호출한 후 대기하는 등 기다리는 시간

    • Reseponse Data Receive : 응답 데이터 수신
    • Network Close : 네트워크 연결 해제

처리량

  • 처리량은 일반적으로 TPS (Transactions Per Seconds)
    - 즉, 초당 처리량
  • 1 초에 얼마나 많은 요청을 처리하는지를 확인
  • 각 기능 별(화면별) TPS를 측정하는 것도 어느 정도 의미는 있음
  • 클수록 좋음

성능 주요 지표의 상관관계

  • TPS & Time
    - TPS는 Scale out /up 을 통해서 증가시킬 수 있음
    - Time 은 Scale 으로는 불가능
    - 둘다 튜닝을 통해 개선 가능

  • TPS와 사용자 수의 관계
    - User 가 증가함에 따라 TPS 는 어느 정도 증가하다가,
    TPS가 최대치에 도달한 이후에는 더 이상 증가하지 않음

  • 사용자 수와 응답시간의 관계
    - User 가 증가함에 따라 응답시간은 일정 속도를 유지하다가,
    TPS가 최대치에 도달한 이후에는 점차 증가함.

  • TPS와 응답시간의 관계
    - TPS 가 증가해도 응답속도는 증가하지 않다가,
    TPS 최대 치에 근접하면 급격히 증가

    • TPS 가 최대 치에 도달하는 이유는 병목 지점이 존재하기 떄문
profile
내일 더 나은 개발자가 되기 위해, 오늘을 기록합니다
post-custom-banner

0개의 댓글