개략적인 규모 측정

2024. 11. 11. 16:58CS/시스템 설계

규모 추정

규모 추정이란 보편적인 사고 실험을 통해 추정치를 계산하는 행위입니다. 어떤 설계가 요구사항에 부합하는지 확인하기 위해 진행합니다.

이를 위해서 프로그래머는 2의 제곱수, 응답지연 값 등을 잘 이해하고 있어야 합니다.

기본적으로 메모리의 최소 단위는 1byte입니다. 1 byte = 8bit로 이루어져 있습니다.

 

2의 x 제곱 근사치 이름 축약형
10 1천 (Thousand) 1 Kilobyte 1KB
20 1백만 (Million) 1 Megabyte 1MB
30 10억 (BIllion) 1 Gigabyte 1GB
40 1조 (Trillion) 1 Terabyte 1TB
50 1000조 (quadrillion) 1 Petabyte 1PB

 

현대의 저장용량은 급속도로 발전되어 왔기 때문에, 테라바이트까지는 익숙합니다.

 

프로그래머가 알아야 하는 응답지연 값

 

위 그림을 시각화하면 다음과 같이 표현될 수 있습니다.

 

7IA4JbX.png

 

 

위 속도를 이해하기 위해서는 다음과 같은 메모리 계층을 참고하면 좋습니다.

 

 

 

분기 예측 오류는 CPU가 분기명령 (if , for) 실행 시 다음 실행 명령어를 예측하고, 틀리는 경우를 의미합니다.

현대 CPU는 이러한 기능을 CPU 캐시 단에서 적용하고 있기 때문에, 빠른 속도를 제공합니다.

뮤텍스 락 또한 CPU의 캐시 레벨에서 작동하기 때문에 빠른 속도를 나타냅니다.

한 가지 명확한 사실은, 디스크를 사용할수록 느려진다는 사실입니다.

위 수치들을 종합한다면 다음과 같은 결론을 도출할 수 있습니다.

 

  1. 디스크 작업은 느리다
  2. 디스크 탐색은 피하는 것이 좋다.
  3. 단순한 압축 알고리즘은 빠르다.
  4. 따라서 데이터 전송 전에, 가능하면 압축하는 것이 좋다.
  5. 데이터 센터들 간 데이터 이동은 시간이 상당히 걸린다.

가용성

 

가용성은 서버네트워크, 프로그램 등의 정보 시스템이 정상적으로 사용할 수 있는 정도를 말한다.
위키피디아

 

쉽게 풀어서 내가 원하는 순간에 시스템이 다운되지 않고 원활하게 이용할 수 있을 확률을 뜻합니다.

현대 서버는 온 프레미스 환경클라우드 환경이 혼재하고 있습니다. 클라우드는 주로 외부 솔루션 업체를 이용하여

서버를 구동합니다. (AWS, Azure, GCP)

 

따라서 계약 시, SLA(Service Level Agreement)를 통해 클라우드 제공자 <-> 고객 사이의 계약을 체결합니다.

가용성과 함께 알아두면 좋은 이론 : CAP

 

고가용성 서비스 제공을 위해, 현대 데이터베이스 아키텍처는 분산 환경에서 실행하도록 발전하고 있습니다.

 

 

0jaZnjg.png

특히, CAP이론은 데이터베이스와 관련된 이론으로


'Consistency, Availability, Partition Tolerance 세 가지 조건을 모두 만족하는 서비스는 불가능하다 '

 

라는 제약조건을 의미하는 이론입니다.

 

  • Consistency (일관성) : 모든 노드가 동일한 시점의 데이터를 반환하도록 보장
  • Availability : 모든 요청에 대해 적어도 하나의 노드가 응답할 수 있어야 한다.
  • Partition Tolerance : 네트워크 분할이 생기더라도 시스템이 계속 동작할 수 있어야 한다.

예시

현대 RDBMS는 수평적 확장을 통해 데이터의 가용성과 일관성을 유지합니다.

하지만 각 노드(Master-Slave) 간 통신이 끊겼을 때, 분단된 노드의 실행을 보장할 수 없습니다. (분단 허용성 X)

 

캐싱을 위해 많이 사용하는 Redis는 강한 일관성을 보장합니다. master-slave 복제에서 Write I/O는 Master에서만 수행되고, Slave는 non-blocking async 방식으로 마스터의 데이터를 복제 받습니다.

또한 redis는 네트워크 분할 시, 일부 노드가 접근 불가능하게 되면 일관성을 보장하기 위해 일시적으로 가용성을 포기하는 정책을 활용할 수 있습니다.

 

따라서 redis는 CP 특성을 중점적으로 고려하지만, Sentinal(Cluster)를 통해 가용성을 강화하는 전략을 선택할 수 있습니다.

 

 

각 솔루션의 특성들을 잘 파악하고 문제 상황에 맞는 적절한 전략을 수립하는 것이 개발자가 취해야 할 자세라고 생각합니다.

'CS > 시스템 설계' 카테고리의 다른 글

처리율 제한 장치의 설계  (0) 2024.11.18