소프트웨어 확장 성은 어떻게 측정됩니까?


21

특정 응용 프로그램 확장성에 대한 작은 기술 프레젠테이션을 요청 받았습니다. 애플리케이션은 Java, Spring MVC, Hibernate를 사용하여 개발되었습니다. 응용 프로그램 소스 코드에 액세스 할 수 있습니다.

소스를 사용하여 소프트웨어 확장 성을 어떻게 측정하고 소프트웨어 확장 성을 측정 할 때 어떤 메트릭을 살펴 봐야합니까?

답변:


8

주제에 관한 Wikipedia 기사 를 읽는 것으로 시작하겠습니다 .

간단히 말해서 확장 성은 더 많은 리소스를 추가하여 시스템 성능 을 향상시키는 방법 또는 로드가 증가함에 따라 리소스 사용률을 증가시키는 방법 입니다. 예를 들어 응답 시간이 0.3 초를 초과 할 때까지 사이트에서 얼마나 많은 동시 사용자를 처리 할 수 ​​있습니까? 사용 가능한 RAM / 디스크 / CPU / 등을 두 배로 한 후에도 같은 질문입니다. 응용 프로그램 내부에 대한 지식을 사용하여 확인할 가치가있는 매개 변수를 결정할 수 있습니다.

서버 머신과 하나 이상의 클라이언트 머신으로 테스트 벤치를 설정하십시오. 일부 도구를 사용하여 서버에서 사용할 수있는 리소스의 양을 제한 ulimit하거나 (예 :) 서버 에서 일부 간섭 응용 프로그램을 실행하십시오. 서버가 클라이언트 요청을 처리하는 방법을 측정하십시오. 위의 점진적으로 증가 / 감소 방해하는로드 / 사용 가능한 리소스를 반복하십시오. 끝에 점이있는 n 차원 공간이 생깁니다. 한 번에 하나의 매개 변수 만 변경하는 반면 다른 모든 매개 변수는 일반적인 값 (또는 몇 가지 값)으로 고정하는 것이 더 간단 할 수 있습니다. 이 경우 결과를 한 축에서 서버 성능 (예 : 사용자 / 요청 수) 및 다른 축에서 자원 이용률 / 가용성을 가진 2D 그래프 묶음으로 나타낼 수 있습니다.

응용 프로그램이 응용 프로그램의 여러 부분에 여러 서버를 사용하는 더 복잡한 시나리오가 있으며 그 양과 비율을 변경할 수 있지만 귀하의 경우가 아닌 것 같습니다. 대부분의 경우이 작업이 필요한 경우 스레드 / 프로세스 수를 변경하려고 할 수 있습니다.

전체 애플리케이션을 측정하는 경우 일반적으로 소스 코드 액세스가 필요하지 않습니다. 그러나 코드의 특정 부분 (예 : DB 또는 UI 만)을 측정하는 데 흥미가있을 수 있습니다. 그런 다음 소스 코드를 사용하여 측정을 위해이 모듈 만 노출하고 테스트를 실행할 수 있습니다. 이를 마이크로 벤치 마크 라고합니다 .

예제를 찾고 있다면 학술 기사에 많은 예제가 있습니다. Google 학술 검색에서 성과 평가 + 선호하는 용어 를 검색하십시오 .


1

확장 성은 실제로 실제 응용 프로그램의 정량화 가능한 속성이 아닙니다.

실질적인 측면에서 확장 성은 다양한 차원에서 증가하는 워크로드를 지원할 수 있어야합니다.

응용 프로그램을 시작하려면 기존 하드웨어 리소스로 증가하는 작업 부하를 지원합니다. 그러나 한계에 도달하는 여러 가지 점이 있습니다. 예를 들어 메모리 양, 코어 수, 데이터 구조 경합, 데이터베이스 처리량 등이 있습니다. 이러한 한계 중 하나에 도달 할 때마다 증가하는 워크로드를 지원하기 위해 다른 접근법을 사용해야합니다. 확장 성은 극복 할 수없는 한계에 도달하거나 주요 재 설계를 수행하기 전에 워크로드를 계속 늘릴 수있는 기간에 관한 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.