성능 요구 사항: 사용자 및 관리자
사용자는 자신의 경험을 통해 애플리케이션 성능을 판단합니다.
- 애플리케이션이 빠르게 응답할 수 있나요?
- 백그라운드 작업이 수행되는 동안 모래 시계 아이콘이 표시되어 있나요?
- 애플리케이션이 빠르게 시작되고 닫히나요?
- 오류를 이해할 수 있는 방식으로 처리합니까?
요약하자면, 사용자는 애플리케이션을 빠르고 예측 가능하게 만들기를 원합니다.
반면, 관리자는 네트워크 리소스를 얼마나 효율적으로 사용하는지에 대해 애플리케이션의 성능을 판단하는 경우가 많습니다. 관리자는 다음을 요청할 수 있습니다.
- 애플리케이션에 오버헤드가 낮고 네트워크 사용량이 효율적인가요?
- 최소 연결 수가 사용되므로 서버에서 가능한 한 많은 사용자를 한 번에 서비스할 수 있나요?
- 나는 지속적으로 헬프데스크를 호출하고 있습니까?
요컨대, 관리자는 애플리케이션의 크기를 조정하려고 합니다.
성능 요구 사항에 대한 모범 사례
Windows Sockets 애플리케이션을 개발할 때 이러한 성능 요구 사항은 유용한 규칙으로 변환됩니다.
네트워크 애플리케이션을 신속하게 초기화합니다.
사용자 인터페이스는 네트워크 응답을 기다릴 필요가 없습니다. 네트워크를 사용할 수 있거나 네트워크 없이 일부 작업을 수행할 수 있습니다. 네트워크가 응답하지 않는 경우 사용자는 애플리케이션 닫기와 같은 간단한 작업을 위해 사용자 인터페이스가 필요할 수 있습니다.
네트워크가 종료되기를 기다리지 마세요.
올바르게 작성된 클라이언트 서버 애플리케이션은 중단된 연결 끊기를 정상적으로 처리합니다. 종료할 때 중단될 수 없는 서버와 파일 또는 폴더 동기화와 같이 잠재적으로 긴 작업을 시작하지 마세요. 네트워크는 일관적으로 반응하지 않으므로 소규모 작업에서도 시간이 오래 걸릴 수 있습니다. 진행률 표시 및 예상 완료 시간을 포함하여 사용자에게 긍정적인 피드백을 제공합니다.
반응형 사용자 인터페이스를 확인합니다.
애플리케이션 응답성은 불필요한 기술 지원팀 호출을 제거하는 데 도움이 됩니다. 대화형 응답에 대한 좋은 지침은 500밀리초입니다. 사용자는 500밀리초보다 긴 일시 중지를 성능 지연으로 인식합니다. 애플리케이션은 사용자에게 애플리케이션에 대한 확신을 제공할 수 있을 만큼 응답해야 합니다.
네트워크 오류를 면밀히 조사합니다.
모든 네트워크 오류가 중요한 것은 아닙니다. 예를 들어 모든 데이터를 수신하거나 게시한 애플리케이션은 연결을 닫을 때 오류를 무시할 수 있습니다. 네트워크 또는 사용자를 사용할 수 있다고 가정하지 마세요. 사용자 개입 없이 오류를 처리하거나 오류가 심각하지 않은 경우 무시합니다.
애플리케이션은 자체적으로 적절한 시간 초과를 정의해야 합니다.
예를 들어 Windows 소켓 연결() 요청은 21초 동안 일부 조건에서 차단될 수 있습니다. 애플리케이션은 사용자에게 적절한 시간 초과를 도입해야 할 수 있습니다.
프로토콜 오버헤드를 최소화합니다.
네트워크 대역폭을 절약하는 것은 부분적으로 애플리케이션에서 발생하는 프로토콜 오버헤드를 최소화하는 것입니다. 불필요한 네트워크 트래픽을 제거하는 것도 중요합니다. 헤더 오버헤드가 낮은 프로토콜을 사용하여 애플리케이션 데이터를 전송할 수 있습니다. 예를 들어 더 적은 양의 비임계 또는 반복 가능한 데이터를 보낼 때 TCP가 아닌 UDP를 사용하여 연결 설정 및 유지 관리와 관련된 오버헤드를 줄입니다. 동일한 데이터를 여러 받는 사람에게 보내야 하는 경우 멀티캐스트를 고려합니다. UDP 애플리케이션은 흐름 제어되지 않으므로 사용 가능한 대역폭을 초과하면 심각한 네트워크 오류가 발생할 수 있습니다. Netstat 유틸리티는 -e 및 -s 옵션과 함께 사용하여 다양한 프로토콜에 대한 통계를 표시할 수 있습니다.
시스템 리소스를 절약합니다.
적절한 구속을 사용하지 않으면 시스템 리소스를 빠르게 사용할 수 있습니다. 예를 들어 소켓 및 TCP 연결은 리소스를 사용합니다. 애플리케이션의 용도를 제공하는 클라이언트당 여러 TCP 연결을 사용하지 마세요.
트랜잭션 애플리케이션의 경우 좋은 사용자 환경과 낮은 네트워크 사용률이 목표와 충돌하지 않습니다. 네트워크가 병목 상태입니다. 네트워크 집약적 애플리케이션은 대기하는 데 더 많은 시간을 소비하며, 잘 작성된 네트워크 애플리케이션은 사용자 인터페이스와 네트워크 전송 모두에 불필요한 대기 시간을 최소화하도록 설계되었습니다.
관련 항목