성능 공학
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
성능 공학은 시스템이 정해진 시간 안에 트랜잭션을 처리하도록 보장하여 비즈니스 수익 증대를 지원하는 것을 목표로 한다. 시스템 개발 실패 및 유지보수 비용 증가를 방지하고, 불필요한 하드웨어 구매를 줄이는 데 기여한다. 성능 공학은 개념, 상세, 구축, 전환의 단계를 거쳐, 비즈니스 프로세스 식별, 유스 케이스 분해, 성능 도구 지정 및 성능 테스트를 수행한다. 서비스 수준 관리, 용량 관리, 문제 관리를 통해 시스템의 성능을 관리하며, 모니터링 시스템을 구축하여 성능 지표를 추적하고 서비스 수준 계약을 준수하도록 한다.
더 읽어볼만한 페이지
- 소프트웨어 최적화 - 프로파일링 (컴퓨터 프로그래밍)
프로파일링(컴퓨터 프로그래밍)은 프로그램의 성능 분석 및 개선을 위한 기술로, 실행 시간 측정과 병목 현상 파악에 사용되며, 다양한 종류의 프로파일러가 존재한다. - 소프트웨어 최적화 - 프로그램 최적화
프로그램 최적화는 컴퓨터 프로그램의 효율성을 높이는 과정으로, 더 효율적인 구현 방식을 선택하거나 불필요한 기능을 제거하여 문제 해결에 집중하며, 다양한 수준에서 플랫폼 의존적이거나 독립적인 기술을 활용하여 수행되지만, 특정한 품질 지표를 개선하기 위해 다른 측면을 희생하는 트레이드오프가 발생할 수 있다. - 정보 기술 관리 - 전사적 자원 관리
전사적 자원 관리(ERP)는 기업의 자원과 업무 프로세스를 통합하여 효율성을 높이는 시스템이며, 재무, 인사, 제조, 공급망 관리 등 다양한 기능을 다루고, 기업의 의사 결정, 투명성, 세계화를 지원한다. - 정보 기술 관리 - 고객 지원
고객 지원은 기업이 고객의 문의, 불만, 문제 해결 요청 등에 대응하는 활동으로, 자동화와 다양한 방식을 통해 효율성을 높여 고객 만족도 및 충성도를 강화하는 데 기여한다.
| 성능 공학 | |
|---|---|
| 성능 공학 | |
![]() | |
| 개요 | |
| 분야 | 소프트웨어 공학 |
| 적용 대상 | 컴퓨터 시스템 네트워크 소프트웨어 애플리케이션 |
| 목표 | 성능 요구 사항 충족 병목 현상 식별 및 해결 시스템 효율성 향상 사용자 만족도 향상 |
| 주요 활동 | 성능 모델링 성능 테스트 성능 분석 성능 튜닝 |
| 주요 개념 | |
| 성능 지표 | 응답 시간 처리량 자원 사용률 대기 시간 |
| 성능 테스트 유형 | 부하 테스트 스트레스 테스트 내구성 테스트 병목 테스트 |
| 성능 모델링 | |
| 모델 유형 | 대기 행렬 이론 시뮬레이션 분석 모델 |
| 모델링 도구 | GPSS Simscript |
| 성능 테스트 | |
| 테스트 환경 | 실제 환경 테스트 환경 클라우드 환경 |
| 테스트 도구 | JMeter LoadRunner Gatling |
| 성능 분석 | |
| 분석 방법 | 통계 분석 병목 분석 추세 분석 |
| 분석 도구 | APM (애플리케이션 성능 관리) 프로파일러 |
| 성능 튜닝 | |
| 튜닝 방법 | 코드 최적화 데이터베이스 튜닝 네트워크 튜닝 하드웨어 업그레이드 |
| 튜닝 도구 | 프로파일러 성능 모니터링 도구 |
| 관련 기술 | |
| 기술 | 소프트웨어 아키텍처 운영 체제 데이터베이스 네트워크 클라우드 컴퓨팅 |
| 영어 명칭 | |
| 영어 | Performance engineering |
2. 성능 엔지니어링의 목표
성능 엔지니어링은 시스템의 성능 문제를 예방하고 해결하여 비즈니스 목표 달성을 지원하는 것을 목표로 한다. 구체적으로는 다음과 같다.
2. 1. 비즈니스 목표 지원
- 시스템이 필요한 시간 안에 트랜잭션을 처리하여 비즈니스 수익 증대를 돕는다.
- 성능 목표를 달성하지 못해 시스템 개발을 중단하고, 이로 인한 비용을 상각해야 하는 시스템 실패를 방지한다.
- 성능 문제로 시스템 배포가 지연되거나 불필요하게 시스템을 다시 제작해야 하는 상황을 방지한다.
- 불필요한 시스템 튜닝 작업을 줄인다.
- 추가적인 하드웨어 구매 비용을 절감한다.
- 운영 환경에서 성능 문제로 인해 발생하는 소프트웨어 유지보수 비용 증가를 줄인다.
- 임시방편으로 성능을 수정하여 발생하는 소프트웨어 문제와 그로 인한 유지보수 비용 증가를 줄인다.
- 성능 문제로 발생하는 시스템 문제 처리에 필요한 추가적인 운영 비용을 줄인다.
- 프로토타입 시뮬레이션을 통해 미래에 발생할 수 있는 병목 현상을 예측한다.
- 서버 용량을 증대시킨다.
2. 2. 시스템 효율성 향상
성능 공학은 다음을 통해 시스템 효율성을 향상시킨다.- 불필요한 시스템 튜닝 및 하드웨어 구매 비용 절감[1]
- 운영 환경에서의 성능 문제로 인한 유지보수 비용 증가 억제[1]
- 임시방편의 성능 수정으로 인한 추가적인 유지보수 비용 방지[1]
2. 3. 성능 예측 및 관리
프로토타입 시뮬레이션을 통해 미래의 병목 현상을 파악하여 대비한다.[1] 서버 용량을 최적화하고 확장성을 확보한다. 시스템 문제 처리에 대한 운영 오버헤드를 줄인다.3. 성능 엔지니어링 접근 방식
성능 엔지니어링은 다양한 방법론 내에서 적용될 수 있다. 일반적으로 래셔널 통합 프로세스(RUP)를 프레임워크로 사용할 경우, 프로그램 또는 프로젝트의 첫 번째 단계에서 핵심 비즈니스 프로세스를 식별한다.
3. 1. 개념 단계 (Inception)
래셔널 통합 프로세스(RUP)의 단계를 프레임워크로 사용하는 경우, 프로그램 또는 프로젝트의 첫 번째 단계인 개념 단계에서 핵심 비즈니스 프로세스가 식별된다. 일반적으로 이들은 수익 가치, 비용 절감 또는 기타 할당된 비즈니스 가치를 기반으로 핵심적인 것으로 분류된다. 이러한 분류는 IT 조직이 아닌 사업 부서에서 수행한다. 시스템 성능에 영향을 미칠 수 있는 높은 수준의 위험이 이때 식별되고 설명된다. 예를 들어 특정 벤더 시스템에 대한 알려진 성능 위험이 있을 수 있다. 마지막으로, 상세 단계에서 성능 활동, 역할 및 결과물이 식별된다. 활동 및 자원 로딩은 상세 단계 프로젝트 계획에 통합된다.[1]3. 2. 상세 단계 (Elaboration)
이 정의 단계에서, 핵심 비즈니스 프로세스는 중요한 유스 케이스로 분해된다. 필요에 따라 프로브 케이스는 단일 페이지(화면) 전환으로 더 분해된다. 이들은 스크립트 기반의 성능 테스트를 받게 될 유스 케이스이다.성능 공학과 관련된 요구사항 유형은 비기능 요구사항(NFR)이다. 기능 요구사항이 수행해야 하는 비즈니스 작업과 관련된 반면, 성능 관련 비기능 요구사항은 정의된 상황에서 해당 비즈니스 작업이 얼마나 빠르게 수행되는지와 관련이 있다.
3. 3. 구축 단계 (Construction)
구축 단계에서는 성능 테스트 도구를 선정하고 개발 팀에 배포 및 교육을 실시한다. 개발/컴포넌트 단위 테스트 환경을 위해 다음과 같은 도구들이 필요하다.[1]- 프로파일링 도구
- 자동화된 단위(컴포넌트) 성능 테스트 도구 (아직 개발 중인 컴포넌트를 구동할 GUI가 없을 때 사용)
- 서버 측 단위(컴포넌트) 구동을 위한 자동화된 도구
- 자동화된 다중 사용자 지원 스크립트 기반 엔드 투 엔드 도구 (화면 기반 사용 사례 실행에 사용)
- 데이터베이스 테스트 데이터 로드 도구 (데이터베이스 옵티마이저가 올바른 실행 경로를 선택하도록 하고, 필요에 따라 데이터베이스를 다시 초기화 및 로드)
성능 테스트 팀은 일반적으로 개발 환경이 아닌, 계획된 프로덕션 환경과 최대한 가깝게 구성된 특수 사전 배포 환경에서 성능 테스트를 실행한다. 이 팀은 테스트 케이스에 대해 성능 테스트를 실행하여 중요한 사용 사례가 지정된 비기능 요구 사항을 준수하는지 확인한다. 정상적인 예상 부하(중간값)와 최대 부하에 대해 부하 테스트를 실행하고, 시스템 병목 현상을 식별하는 스트레스 테스트도 자주 실행한다.[1]
수집된 데이터와 분석은 성능 튜닝을 수행하는 그룹에 전달된다. 필요한 경우, 비준수 테스트가 비기능 요구 사항을 준수하도록 시스템을 튜닝한다. 이 시점까지 성능 엔지니어링이 적절하게 적용되었다면 시스템은 성능 인증을 받기에 충분하지만, 그렇지 않은 경우 시스템 일부를 리팩토링하여 개발 단계로 되돌려야 할 수 있다. 추가 하드웨어로 문제를 해결할 수도 있지만, 이는 수익성 감소로 이어질 수 있다.[1]
3. 4. 전환 단계 (Transition)
시스템을 프로덕션 환경에 배포하기 전에, 운영 체제, 네트워크, 서버 등을 최적화한다. 성능 모니터링 소프트웨어를 배포 및 구성하여 지속적인 성능 관리를 준비한다.- 기본 체크리스트와 성능 테스트 환경에서 식별된 최적화에 따라 운영 체제, 네트워크, 서버(애플리케이션, 웹, 데이터베이스, 로드 밸런서 등) 및 모든 메시지 큐잉 소프트웨어를 구성한다.
- 모든 성능 모니터링 소프트웨어가 배포 및 구성되었는지 확인한다.
- 프로덕션 데이터 로드가 완료된 후 데이터베이스에 대한 통계를 실행한다.
새 시스템이 배포되면 지속적인 운영이 성능 활동을 시작하며, 여기에는 다음이 포함된다.
- 주간 및 월간 성능 보고서가 중요한 사용 사례가 지정된 비기능 요구 사항 기준 내에서 수행됨을 확인한다.
- 사용 사례가 NFR 기준을 벗어나는 경우 결함을 제출한다.
- 월별 및 분기별 보고서에서 예상되는 추세를 식별하고 분기별로 용량 계획 관리 활동을 수행한다.
4. 서비스 관리
운영 환경에서 성능 공학은 주로 서비스 수준 관리, 용량 관리, 문제 관리의 세 가지 영역에 중점을 둔다.[1]
4. 1. 서비스 수준 관리 (Service Level Management)
서비스 수준 관리는 서비스 수준 협약과 서비스 수준 준수 검증, 문제 감지 및 추세 식별을 위한 관련 시스템 모니터링과 관련이 있다. 예를 들어, 실제 사용자 모니터링을 배포하면 사용자 트랜잭션이 지정된 비기능적 요구 사항에 따라 실행되도록 보장할 수 있다. 트랜잭션 응답 시간은 데이터에 대한 쿼리 및 보고서를 실행할 수 있도록 데이터베이스에 기록된다. 이를 통해 용량 관리에 유용한 추세 분석이 가능하다. 사용자 트랜잭션이 범위를 벗어나는 경우, 해당 이벤트는 경고를 생성하여 상황에 주의를 기울이도록 해야 한다.4. 2. 용량 관리 (Capacity Management)
성능 공학에서 용량 관리는 시스템이 성능 준수 상태를 유지하도록 보장하는 데 중점을 둔다. 이는 과거에 생성된 모니터링 데이터를 기반으로 추세 분석을 수행하여 성능 미준수 시점을 예측하는 것을 의미한다. 예를 들어, 시스템이 거래 처리 속도 저하 추세를 보인다면(이는 데이터 세트 크기 증가, 동시 사용자 수 증가 또는 기타 요인으로 인해 발생할 수 있음) 어느 시점에서는 더 이상 서비스 수준 계약에 명시된 기준을 충족하지 못하게 된다. 용량 관리는 이러한 시점 전에 추가 용량(추가 CPU, 더 많은 메모리, 새로운 데이터베이스 인덱싱 등)을 확보하여 추세선을 재설정하고 시스템이 지정된 성능 범위를 유지하도록 하는 책임을 진다.4. 3. 문제 관리 (Problem Management)
성능 엔지니어링은 성능 관련 문제의 근본 원인을 해결하는 데 중점을 둔다. 여기에는 일반적으로 시스템 튜닝, 운영 체제 또는 장치 매개변수 변경, 설계 불량이나 코딩 방식의 문제로 인한 성능 저하를 해결하기 위한 애플리케이션 소프트웨어 리팩토링이 포함된다.5. 모니터링
시스템이 지정된 성능 지표를 충족하는지 확인하려면 모든 주요 시스템에 모니터링 하위 시스템이 필요하다. 모니터링 하위 시스템의 계획, 설계, 설치, 구성 및 제어는 적절하게 정의된 모니터링 프로세스에 의해 지정된다.
모니터링의 장점은 다음과 같다.
- 사용 사례 수준에서 서비스 수준 계약을 설정할 수 있다.
- 정기적인 시점에서 모니터링을 켜고 끄거나 문제 해결을 지원할 수 있다.
- 정기적인 보고서 생성을 가능하게 한다.
- 증가하는 사용자 부하 및 증가하는 데이터 세트가 사용 사례 수준 성능에 미치는 영향과 같은 추세를 시간 경과에 따라 추적할 수 있다.
이 기능의 추세 분석은 매우 중요하다. 이 기능을 적절하게 구현하면 점차 증가하는 사용자 부하와 증가하는 데이터 세트를 겪고 있는 특정 애플리케이션이 특정 사용 사례에 대한 지정된 비기능적 성능 요구 사항을 초과할 시기를 예측할 수 있다. 이를 통해 시스템이 비기능적 성능 요구 사항의 매개변수 내에서 실행되도록 유지하는 데 필요한 리소스를 적절하게 관리하고 예산을 책정하며, 획득하고, 배포할 수 있다.
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com
