Contents
![[-] [-]](/moniwiki/imgs/plugin/arrup.png)
![[+] [+]](/moniwiki/imgs/plugin/arrdown.png)
- 1 제 1 원칙 : 초기 연결점의 유지 원칙(Fixing-Point Principle)
- 2 제 2 원칙 : 가까운 자원 사용 원칙(Locality-Design Principle)
- 3 제 3 원칙 : 처리와 빈도의 상관원칙(Processing vs Frquency Trade off Principle)
- 4 제 4 원칙 : 자원공유원칙(Shared-Resource Princlple)
- 5 제 5 원칙 : 병렬처리원칙(Parallel Processing Principle)
- 6 제 6 원칙 : 집중화 원칙(Centering Principle)
- 7 제 7 원칙 : 설비활용 원칙(Instrumenting Principle)
이 글은 소프트웨어 성능공학(SPE, Software Performance Engineering)의 전문가인 스미스 박사(Connie U. Smith)의 저서 ‘Performance Engineering of Software System’의 시스템 성능과 관련된 의사결정에 결정적인 근거를 제공해 주는 7가지 기본원칙이다.
1 제 1 원칙 : 초기 연결점의 유지 원칙(Fixing-Point Principle) #
“신속한 응답을 위하여 가능한 빠른 시간에 연결을 시작하여 지속적으로 유지하는 것이 비용이 효과적이다.”
- 동적 SQL을 제거하라
- 관련된 SQL문장을 Stored Prodedure로 대치하라
- 빈번히 반복적으로 수행되는 메뉴나 폼을 범용사용자 인터페이스를 사용하지 말고 전용으로 별도로 구성하라.
- DB 서버와의 네트워크 액세스를 최소화하기 위해 필요한 경우 테이블을 클라이언트 PC로 다운로드 한다.
- 디스크 I/O를 최소화를 위해 자주 사용되는 테이블과 인덱스를 메모리 안으로 버퍼링한다.
- DB 비정규화를 준비한다.
- 경영자 정보시스템을 위한 DB는 별도로 준비한다.
2 제 2 원칙 : 가까운 자원 사용 원칙(Locality-Design Principle) #
“물리적으로 가까운 거리의 컴퓨터 자원을 최우선적으로 사용하여 결과를 구하라”
- 모든 사용자 인터페이스 로직은 클라이언트 PC에서 수행하라
- 표준적인 DB 처리를 위한 내장 프로시저는 Db서버에서 실행토록 하라
- 실행 도중 서로 다른 지역에 위치한 DB로부터 데이터를 조합하는 프로그램을 가급적 피하라.
- 사용자와 가까운 곳으로 데이터를 분산 배치하기 위한 방법으로 체계적인 데이터 중복구조(Replication Schemes)를 사용하라
- 데이터 처리 작업의 85% 이상이 지역의 데이터를 사용하도록 설계목표를 정하라
3 제 3 원칙 : 처리와 빈도의 상관원칙(Processing vs Frquency Trade off Principle) #
“빈번히 수행되는 작업의 처리시간을 최소화하도록 노력하라”
- 개발 초기 단계에 작업별 실행빈도를 분석해 두어라
- 클라이언트와 서버간의 LAN 전송횟수를 최소화하도록 프로그램을 설계하라
- 서버와 서버간의 WAN 전송횟수를 최소화하도록 데이터를 분산하라
- 다수의 SQL 요구 대신 내장 프로시저를 사용하라
4 제 4 원칙 : 자원공유원칙(Shared-Resource Princlple) #
“가능한 한 공유될 수 있는 형태로 자원을 사용하라. 독립적인 사용이 필요한 경우에도 자원 점유시간 및 대기시간을 최소화하라”
- 서로 다른 지역에 위치한 데이터의 동질성을 유지하기 위하여 2단계 커밋(2 Phase Commit)을 사용하지 말고 데이터중속/복사 구조를 활용하라
- 처리능력이 상대적으로 열악한 공유자원(서버디스크, WAN)의 점유시간을 최소화하도록 프로그램을 설게하라
- 신속한 응답을 요구하는 온라인 작업과 장시간의 처리를 수행하는 일괄작업은 별도의 서버로 분리하라
5 제 5 원칙 : 병렬처리원칙(Parallel Processing Principle) #
“병렬처리는 처리사간의 단축이 커뮤니케이션 상의 추가적인 부담과 기타 자원의 경합에 따른 지연을 상쇄할 수 있는 경우에만 선택하라”
- 서버에서 병렬처리의 과도한 개시와 종료를 반복하지 마라.
- Top End, TUXIDO, ENCNA등의 TP모니터를 이용하여 자원사용에 대한 우선 순위 관리를 맡기는 것도 좋은 방법이다.
- 병렬처리를 위한 DBMS제품과 하드웨어 제품의 겸용성을 확인하라.
6 제 6 원칙 : 집중화 원칙(Centering Principle) #
“시스템 부하를 가중시키는 핵심적인 처리작업을 선별하여 그들의 처리시간 단축에 관심을 집중하라. –80/20 규칙을 기억하라”
- 처리 우선순취가 높은 프로그램
- 규모가 매우 큰 프로그램
- 신속한 응답을 요구하는 프로그램
- 프로그램 내에서는 처리가능의 핵심 부분에 관심을 집중하여 가장 심각하게 문제가 되는 자원을 먼저 튜닝한다.
7 제 7 원칙 : 설비활용 원칙(Instrumenting Principle) #
“작업 부하, 자원 요구 정도와 성능목표 달성 여부 등을 측정 보완할 수 있는 설비를 갖추고 이를 활용하라”
- 문제가 있는 프로그램이나 시스템 자원을 파악하기 위해 모델링 기법을 이용하라
- 어디서 병목현상이 나타나는지 알고 있다고 가정하지 마라
- 클라이언트/서버 분산 시스템에 활용 가능한 감시용 소프트웨어가 있을 것이라고 가정하지 마라(대행 시스템 벤더들은 클라이언트/서버 솔루션의 지원에 적극적이지 않다.)