03 애플리케이션 성능 개선
▶ 애플리케이션 성능 측정 지표
⦁ 처리량(Throughput) : 주어진 시간에 처리할 수 있는 트랜잭션의 수
⦁ 응답 시간(Response Time) : 사용자 입력이 끝난 후, APP의 응답 출력이 개시될 때까지의 시간
⦁ 경과 시간(Turnaround Time) : 사용자가 요구를 입력한 시점부터 트랜잭션을 처리 후 그 결과의 출력이 완료할 때까지 걸리는 시간
⦁ 자원 사용률(Resource Usage) : 애플리케이션이 트랜잭션을 처리하는 동안 사용하는 CPU 사용량, 메모리 사용량, 네트워크 사용량
▶ 데이터베이스 관련 성능 저하 원인
⦁ 데이터베이스 락 : 대량의 데이터 조회, 과도한 업데이트 시 발생하는 현상
⦁ 불필요한 데이터베이스 패치 : 대량의 데이터 요청이 들어올 경우 응답시간 저하 현상 발생
⦁ 연결 누수 : DB연결과 관련한 JDBC 객체를 사용 후 종료하지 않을 경우
⦁ 부적절한 커넥션 풀 크기 : 너무 작거나 크게 설정한 경우
▶ 베드 코드
다른 개발자가 로직을 이해하기 어렵게 작성된 코드
⦁ 외계인 코드(Alien Code) : 아주 오래되거나 참고문서 또는 개발자가 없어 유지보수 작업이 어려운 코드
⦁ 스파게티 코드 : 스파게티처럼 코드가 복잡하게 얽힘
⦁ 알수 없는 변수명, 로직 중복
▶ 클린 코드
잘 작성되어 가독성 높고, 단순하며, 의존성을 줄이고, 중복을 최소화해 잘 정리된 코드클린
⦁ 코드 작성원리 : 가단의 중추
▶ 소스 코드 품질분석 도구
⦁ 정적 분석도구
- pmd : 자바 및 타언어 소스 코드에 대한 버그, 데드코드 분석
- cppcheck : C/C++ 코드에 대한 메모리 누수, 오버플로우 등 문제 분석
- checkstyle : 자바 코드에 대한 코딩 표준 검사 도구
⦁ 동적 분석도구
- Avalanche : Valgrind , STP 기반 소프트웨어 에러 및 취약점 동적 분석 도구
- Valgrind : 자동화된 메모리 및 스레드 결함 발견 분석 도구
▶ 리팩토링(Refactoring)
유지보수 생산성 향상을 목적으로 기능을 변경하지 않고, 복잡한 소스 코드를 수정, 보완해 가용성 및 가독성을 높이는 기법
01 운영체제의 특징
▶ 운영체제
사용자가 컴퓨터 하드웨어를 쉽게 사용할 수 있도록 인터페이스를 제공해주는 소프트웨어
▶ 운영체제의 종류 : 윈도즈, 유닉스, 리눅스, 맥, 안드로이드
▶ 리눅스/유닉스 계열의 기본 명령어
⦁ chmod : 특정 파일 또는 디렉토리의 퍼미션 수정 명령어
⦁ chown : 파일이나 디렉토리의 소유자, 소유 그룹 명령어
▶ 메모리 관리 기법
⦁ 반입 기법 : 메모리로 적재 시기 결정
⦁ 배치 기법 : 메모리 적재 위치 결정
⦁ 할당 기법 : 메모리 적재 방법 결정
⦁ 교체 기법 : 메모리 교체 대상 결정
▶ 메모리 배치 기법
⦁ 최초 적합(First-fit) : 가용 공간 중 첫 번째 분할에 할당
⦁ 최적 적합(Best-fit) : 가장 크기가 비슷한 공간에 할당
⦁ 최악 적합(Worst-fit) : 가장 큰 공간에 할당
▶ 프로세스 상태 전이
* 실행 : Running * 입출력 발생 : Block * 대기 : Waiting
▶ 프로세스 스케줄링 유형
◇ 선점형 스케줄링
⦁ 라운드 로빈(Round Robin) : 같은 크기의 CPU 시간 할당
⦁ SRT(Shortest Remaining Time First) : 가장 짧은 시간이 소요되는 프로세스를 먼저 수행하고, 남은 처리 시간이 더 짧다고 판단되는 프로세스가 준비 큐에 생기면 언제라도 프로세스가 선점됨
⦁ 다단계 큐(Multi Level Queue) : 작업들을 여려 종류 그룹 분할
⦁ 다단계 피드백 큐 : 큐마다 서로 다른 CPU시간 할당량 부여, FIFO와 라운드 로빈 스케줄링 기법을 혼합한 것
◇ 비선점형 스케줄링
⦁ 우선순위(Priority) : 프로세스별 우선순위가 주어지고, 우선순위에 따라 CPU 할당
⦁ 기한부(Deadline) : 작업들이 명시된 시간이나 기한 내에 완료되도록 계획
⦁ FCFS(First Come Frist Service) : 프로세스가 대기 큐에 도착한 순서에 따라 CPU 할당
⦁ SJF(Shortest Job First) : 프로세스가 도착하는 시점에 따라 그 당시 가장 작은 서비스 시간을 갖는 프로세스가 종료 시까지 자원 점유, 기아 현상 발생
⦁ HRN(Highest Response Ratio Next) : 대기 중인 프로세스 중 현재 응답률이 가장 높은 것을 선택, 기아 현상 최소화 기법
▶ 가상화(Virtualization)
물리적인 리소스들을 사용자에게 하나로 보이게 하거나, 여러 개로 보이게 하는 기술
이를 통해 서버의 가동률을 60~70% 이상으로 올릴 수 있다.
▶ 가상화 기술요소
⦁ 컴퓨팅 가상화 : 물리적으로 컴퓨터 리소스를 가상화해 논리적 단위로 리소스를 활용할 수 있도록 하는 기술
⦁ 스토리지 가상화 : 스토리지와 서버 사이에 소프트웨어/하드웨어 계층을 추가, 스토리지를 논리적으로 제어 및 활용할 수 있도록 하는 기술
⦁ I/O 가상화 : 서버와 I/O 디바이스 사이에 위치하는 미들웨어 계층으로, 서버의 I/O 자원을 물리적으로 분리하고 케이블과 스위치 구성을 단순화해 효율적인 연결 지원
⦁ 컨테이너 : 컨테이너화된 애플리케이션들이 단일 운영체제상에서 실행되도록 해주는 기술
⦁ 분산처리 기술 : 여러 대의 컴퓨터 계산 및 저장능력을 이용해 커다란 계산문제나 대용량의 데이터를 처리하고 저장하는 기술
⦁ 네트워크 가상화 기술 : 물리적으로 떨어져 있는 다양한 장비들을 연결하기 위한 수단
▶ 클라우드 컴퓨팅(Cloud Computing)
인터넷의 서버를 통해 IT 관련 서비스를 한 번에 사용할 수 있는 컴퓨팅 환경
▶ 클라우드 컴퓨팅 유형
⦁ 인프라형 서비스(laaS) : 서버, 스토리지 같은 시스템 자원을 클라우드로 제공하는 서비스
⦁ 플랫폼형 서비스(PaaS) : 애플리케이션을 개발, 실행, 관리할 수 있게 하는 플랫폼을 제공하는 서비스
⦁ 소프트웨어형 서비스(SaaS) : 클라이언트를 통해 접속하여 소프트웨어를 서비스 형태로 이용하는 서비스
'자격증 > 정보처리기사' 카테고리의 다른 글
[정보처리기사] 네트워크 기초 | 민민의 하드디스크 - 티스토리 (0) | 2023.04.17 |
---|---|
[정보처리기사] 테스트 케이스 | 민민의 하드디스크 - 티스토리 (0) | 2023.04.17 |
[정보처리기사] 소프트웨어 개발 보안 구현 | 민민의 하드디스크 - 티스토리 (0) | 2023.04.17 |
[정보처리기사] 접근 통제 기법 및 암호화 알고리즘 | 민민의 하드디스크 - 티스토리 (0) | 2023.04.17 |
[정보처리기사] 소프트웨어 개발 보안 설계 및 공격 기법 | 민민의 하드디스크 - 티스토리 (0) | 2023.04.17 |