Julie의 Tech 블로그

인프라 구조 - 안정성과 성능 본문

Tech

인프라 구조 - 안정성과 성능

Julie's tech 2021. 5. 14. 11:18
728x90

인프라를 구성하고 운영하다보면 성능 이슈가 생길 때도 있다.

시스템 성능에 대해 두 지표가 대표적인데, 응답과 처리량이다.

응답의 경우 처리당 소요시간이며, 처리량은 단위 시간당 처리되는 양을 의미한다.

실제로 시스템을 운영할 때는 응답자 별로 평균값을 계산하여 평균 응답시간을 집계하게 된다.

응답시간은 보통 웹 브라우저로 화면 응답 시간, 결과 표시 시간, 웹 서버 처리 시간, AP서버 처리 시간 등을 합한다.

처리해야하는 양이 많을 경우 병목현상이 생기기도 한다.

3계층형 아키텍쳐에서 아래와 같은 병목 현상들을 볼 수 있다.

1. CPU 병목 현상

2. 메모리 병목 현상

3. 디스크 I/O 병목 현상

4. 네트워크 I/O 병목 현상

5. 애플리케이션 병목 현상

병목현상을 처리하는 방안으론 두 가지가 있다.

1) Scale-out : CPU코어 수를 늘리거나 서버 수를 늘리는 등의 튜닝

2) Scale-up : 처리 능력을 향상시키는 것

혹은 병렬 처리를 통해 응답시간을 향상시킬 수 있다.

예를 들어 멀티 프로세스, 멀티 스레드가 CPU 코어를 복수로 이용함으로써 응답 시간을 향상시키는 것이다.

CPU사용률이 100%일때 흔히 효율성이 떨어진다고 생각할 수 있지만,

실제로는 대기 큐에 있는 프로세스가 없을 때는 효율적으로 CPU를 사용하는 것이라 판단할 수 있다.

반면 대기 큐에 있는 프로세스가 증가하고, CPU사용률이 0인 경우에도 마찬가지로 I/O 병목 현상이라고도 한다.

대부분 동기 I/O 방식이기 때문에 응답이 올때까지 다른 처리를 하지 않아 발생한다.

* I/O 방식에는 랜덤과 순차 액세스가 있다. 순차 액세스의 경우 순차적으로 접근하여 데이터를 읽는 것이고, 랜덤 엑세스는 랜덤하게 건너뛰면서 읽어들이는 것이다.

단일 디스크의 경우 순차가 빠르고, 랜덤이 느리다. 큰 파일을 읽을 경우 병렬적으로 랜덤 액세스를 처리하면 빠르게 가능하다.


인프라를 안정적으로 운영하기 위해선 '이중화'라는 개념에 대한 이해도 필요하다.

이중화란 기능 하나를 병렬화하여 한쪽에서 장애가 발생하더라도 대체 가능한 형태를 일컫는다.

이중화를 할 때는 아래와 같은 조건들이 필요하다.

- 균등한 부하를 받을 수 있도록 분산

- 생존 여부를 지속적으로 확인하는 감시

- 장애가 발생했을 때 안정적으로 복구 가능한지

서버 내에서는 전원에 대해 이중화를 할 수 있다.


Glossary

- 동시성(Concurrency), 병렬성(Parallel) : 병행의 경우 다수의 처리를 실행하고 있는 상태, 병렬성의 경우 여러 사람이 동시에 일을 진행

- 마이크로 서비스 아키텍쳐 : 어플리케이션이 서비스 모음으로 개발되는 어플리케이션 아키텍쳐의 유형


참고서적

그림으로 공부하는 IT인프라 구조

https://book.naver.com/bookdb/book_detail.nhn?bid=17527140

반응형