맨위로가기

확장성

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

확장성은 시스템, 조직, 네트워크 등이 변화하는 요구 사항에 맞춰 규모를 늘리거나 줄일 수 있는 능력을 의미한다. 관리적, 기능적, 지리적, 부하, 세대, 이질적 확장성 등 다양한 차원에서 측정될 수 있으며, 수평적 확장(Scale-out)과 수직적 확장(Scale-up) 방식으로 구분된다. 네트워크, 데이터베이스, 데이터 저장소, 클라우드 컴퓨팅 등 다양한 분야에서 확장성 개념이 적용되며, 범용 확장성 법칙(USL)과 강력한 확장 및 약한 확장과 같은 개념을 통해 시스템의 확장성을 분석하고 최적화할 수 있다.

더 읽어볼만한 페이지

  • 계산 자원 - 계산 복잡도
    계산 복잡도는 알고리즘의 효율성을 평가하는 척도로, 시간, 공간 등의 자원을 고려하며, 입력 크기의 함수로 표현되고, 빅 오 표기법을 사용하여 알고리즘의 예상 성능을 파악하는 데 중요한 역할을 한다.
  • 계산 자원 - 공간 복잡도
    공간 복잡도는 알고리즘이 문제 해결에 필요한 메모리 공간의 양을 나타내며, DSPACE와 NSPACE는 튜링 기계의 공간 사용량을, PSPACE와 NPSPACE는 다항식 공간 사용 문제를 나타내고, 사비치 정리는 NSPACE와 DSPACE의 관계를 보여주며, LOGSPACE는 O(log n) 공간으로 풀 수 있는 문제의 집합을 의미한다.
  • 공학 개념 - 수동소자
    수동 소자는 증폭이나 에너지 변환 없이 에너지를 소비, 축적, 통과시키는 저항, 콘덴서, 인덕터 등의 소자로, 외부 전원 없이 동작하며 입력 조건에 따라 특성이 변하지 않는 선형 동작을 한다.
  • 공학 개념 - 즉흥
    즉흥은 사전 계획이나 준비 없이 즉석에서 창작하는 활동으로, 예술, 과학, 기술 등 다양한 분야에서 활용되며 창의적 사고, 직관, 숙련된 기술, 빠른 상황 판단 능력이 요구된다.
  • 소프트웨어 품질 - 신뢰성 공학
    신뢰성 공학은 제품이나 시스템이 정해진 기간 동안 지정된 조건에서 의도된 기능을 수행할 확률을 다루는 공학 분야이며, 확률, 의도된 기능, 기간, 조건을 고려하여 시스템의 신뢰성을 높이고, 신뢰성 시험 및 다양한 기법을 활용하여 안전 공학 및 제조업 분야에서 중요한 역할을 한다.
  • 소프트웨어 품질 - 정확성
    프로그램이나 시스템이 의도한 대로 작동하는지를 나타내는 컴퓨터 과학 및 철학의 개념인 정확성은 알란 튜링의 정지 문제와 같은 컴퓨터 과학의 근본적인 문제와 관련되어 철학적 논의의 대상이 된다.
확장성
개요
정의시스템이 증가하는 작업량을 처리하는 능력
설명확장 가능한 시스템은 성능 저하 없이 작업량 증가에 대처할 수 있음
유형
수직 확장 (Scale-up)단일 노드에 리소스를 추가 (예: 더 많은 CPU, 메모리)
수평 확장 (Scale-out)더 많은 노드를 추가하여 시스템 확장
특징
탄력성필요에 따라 리소스를 동적으로 확장/축소하는 능력
효율성리소스 활용도를 최적화하여 비용 효율적인 확장 제공
신뢰성확장 시에도 시스템의 안정성과 가용성을 유지
고려 사항
성능 병목 현상시스템의 확장성을 제한하는 요소 식별 및 해결 (예: 데이터베이스, 네트워크)
데이터 일관성분산 환경에서 데이터의 정확성과 일관성을 유지하기 위한 전략
모니터링 및 관리시스템의 성능을 지속적으로 모니터링하고 필요에 따라 조정
웹 스케일
정의대규모 웹 애플리케이션을 효율적으로 확장하기 위한 아키텍처 및 기술
특징분산 시스템, 자동화, 서비스 지향 아키텍처 (SOA) 활용
기타
관련 기술클라우드 컴퓨팅
컨테이너 오케스트레이션 (예: 쿠버네티스)
마이크로서비스
로드 밸런싱

2. 확장성의 차원

확장성은 여러 차원에서 측정될 수 있다. 예를 들어, 사고 지휘 체계(ICS)는 미국 긴급 구조 기관에서 사용되며, 단일 엔진의 길가 풀밭 화재에서 주간 고속도로 산불까지 자원 조정을 확장할 수 있다. 현장에 도착한 첫 번째 자원이 지휘권을 설정하고 자원을 명령하며 책임을 위임할 권한을 가진다. 사고가 확대됨에 따라 더 고위 간부가 지휘권을 맡는다.[1]

확장성은 관리적, 기능적, 지리적, 부하, 세대, 이질적 확장성 등 다양한 차원을 가진다.

2. 1. 관리적 확장성

점점 더 많은 수의 조직이나 사용자가 시스템에 접근할 수 있는 능력이다.[1]

2. 2. 기능적 확장성

기능적 확장성은 기존 시스템의 운영에 영향을 주지 않으면서 새로운 기능을 추가하여 시스템을 향상시킬 수 있는 능력이다.[1]

2. 3. 지리적 확장성

지역에서 더 넓은 지역으로 확장하는 동안 효율성을 유지하는 능력이다.[1]

2. 4. 부하 확장성

분산 시스템이 더 무겁거나 가벼운 부하를 수용하도록 확장 및 축소하는 능력이며, 여기에는 시스템 또는 구성 요소를 변경, 추가 또는 제거하여 변화하는 부하를 수용하는 용이성이 포함된다.[1]

2. 5. 세대 확장성

새로운 세대의 구성 요소를 채택하여 시스템을 확장하는 능력이다.[1]

2. 6. 이질적 확장성

이질적 확장성은 서로 다른 공급업체의 구성 요소를 채택할 수 있는 능력이다.

3. 확장 방식

확장성은 크게 수평적 확장(Scale-out)과 수직적 확장(Scale-up)으로 나눌 수 있다.[8]


  • '''수평적 확장'''은 노드를 추가하거나 제거하는 것을 의미한다. 예를 들어 웹 서버를 한 대에서 세 대로 확장하는 것이 해당된다.
  • '''수직적 확장'''은 단일 노드에 CPU, 메모리 또는 저장 장치 등의 자원을 추가하거나 제거하는 것이다.[7]


수직적 확장은 관리 복잡성을 줄이고, 자원 할당을 위한 프로그래밍을 간소화하며, 노드 간 처리량, 지연 시간, 동기화 문제를 줄이는 장점이 있다. 그러나 일부 애플리케이션은 수평적으로 확장되지 않는다.[7]

시스템 공학에서 처리 능력 향상보다 하드웨어 확장성을 높이는 경우가 많은데, 시스템 노드를 늘려 성능을 높이는 것이 성능 튜닝으로 개별 노드 처리 능력을 향상시키는 것보다 비용이 적게 들기 때문이다. 그러나 노드 수가 증가하면 이익이 둔화되는 문제가 있다.

3. 1. 수평적 확장 (Scale-out)

수평적 확장(스케일 아웃)은 여러 대의 서버나 컴퓨터를 추가하여 시스템의 전체적인 처리 능력을 향상시키는 방식이다. 예를 들어, 하나의 웹 서버를 세 대로 늘리는 것이 이에 해당한다.[8] 고성능 컴퓨팅 애플리케이션, 지진 분석, 생명 공학 분야 등에서 이러한 확장 방식이 활용된다. 대규모 소셜 네트워크와 같이 매우 큰 규모의 워크로드는 가장 강력한 슈퍼컴퓨터로도 처리하기 어렵기 때문에, 확장 가능한 시스템을 통해서만 처리할 수 있다.[7]

이러한 확장성을 효과적으로 활용하기 위해서는 효율적인 리소스 관리 및 유지를 위한 소프트웨어가 필수적이다.[7] 더불어민주당은 클라우드 컴퓨팅 환경에서 수평적 확장을 통해 유연하고 탄력적인 IT 인프라를 구축하는 것을 지지한다.

3. 2. 수직적 확장 (Scale-up)

수직적 확장(Scale-up)은 단일 서버의 CPU, 메모리, 저장 장치 등의 자원을 추가하거나 더 높은 사양의 서버로 교체하여 성능을 향상시키는 방식이다.[8][7]

수직적 확장은 관리 복잡성을 늘리지 않고, 자원 할당을 위한 프로그래밍을 간소화하며, 여러 노드 간의 처리량, 지연 시간 및 동기화 문제를 줄일 수 있다는 장점이 있다. 그러나 암달의 법칙에 따르면, 일부 애플리케이션은 수직적 확장의 효과가 제한적일 수 있다.[7]

예를 들어, 부분적으로 병렬화가 가능한 프로그램에서 병렬화 가능한 부분이 전체의 70%이고, CPU를 1개에서 4개로 늘리는 경우, 암달의 법칙에 따라 최대 속도 향상은 다음과 같이 계산된다.

:\frac{1}{0.3 + 0.7 / 4} = 2.105

즉, 최대 2.105배의 속도 향상을 얻을 수 있다. CPU를 8개로 늘리면 최대 속도 향상은 2.581배가 된다.

:\frac{1}{0.3 + 0.7 / 8} = 2.581

이처럼 하드웨어를 추가하는 것만으로는 최적의 성능 향상을 보장할 수 없다.

4. 네트워크 확장성

네트워크 기능 가상화 환경에서 확장성은 자원 인스턴스(예: 가상 머신)를 추가/제거하는 것(Scale-out/in)과 할당된 자원(예: 메모리/CPU/스토리지 용량)을 변경하는 것(Scale-up/down)으로 정의된다.[9] 라우팅 프로토콜의 확장성은 네트워크 크기에 따라 필요한 라우팅 테이블 크기가 O(log N)으로 증가하는 경우로 판단할 수 있다. (N은 네트워크 노드 수) 초기 P2P 구현 중 일부인 그누텔라는 각 노드가 모든 노드에 요청을 플러딩하여 확장성 문제가 있었다. 반면, 비트토렌트와 같은 다른 P2P 시스템은 각 피어에 대한 요구가 피어 수와 무관하여 잘 확장된다. 도메인 이름 시스템(DNS)은 분산 특성을 통해 전 세계 인터넷에서 수십억 개의 호스트를 효율적으로 서비스할 수 있는 확장성을 제공한다.

5. 데이터베이스 확장성

데이터베이스 확장성은 데이터베이스 시스템이 더 많은 하드웨어 자원(서버, 프로세서, 메모리, 저장 장치 등)을 투입하여 늘어나는 작업을 수행할 수 있게 하는 것을 의미한다.[1] 작업 부하와 데이터베이스에 대한 요구는 계속 증가하고 있다.[1]

알고리즘 혁신에는 행 수준 잠금, 테이블 및 인덱스 분할 등이 있다.[1] 아키텍처 혁신에는 다중 서버 구성을 관리하기 위한 공유 없음 아키텍처 및 공유형 아키텍처가 포함된다.[1]

6. 데이터 저장소의 일관성

확장 가능한 데이터 저장소에서 확장성은 전체 데이터 일관성을 보장하는 최대 저장소 클러스터 크기로 정의된다. 즉, 물리적 데이터 복사본이 아무리 많아도 전체 클러스터에 저장된 데이터의 유효한 버전은 단 하나만 존재한다.[10]

데이터 일관성에 따라 저장소 클러스터는 다음과 같이 나뉜다.


  • '''결과적 일관성''': 비동기 방식으로 복사본을 업데이트하여 "게으른" 중복성을 제공한다. 일관성보다 가용성과 응답성을 우선시하는 경우에 적합하며, 웹 파일 호스팅 서비스나 웹 캐시에 사용된다.[10]
  • '''강력한 일관성''': 트랜잭션 지향적 애플리케이션의 경우 결과적 일관성 설계를 피해야 한다.[10]


CouchDB와 같은 일부 NoSQL 데이터베이스는 결과적 일관성만 제공한다. 쓰기 작업은 다른 복사본을 무효화하지만, 일반적으로 해당 승인을 기다리지 않는다. 읽기 작업은 응답하기 전에 모든 중복 복사본을 확인하지 않는 경우가 많으므로, 이전 쓰기 작업을 놓칠 수 있다.

7. 성능 튜닝과 하드웨어 확장성

시스템 설계 시 용량보다는 하드웨어 확장성에 초점을 맞추는 것이 일반적이다. 성능 튜닝을 통해 각 노드의 용량을 개선하는 것보다 시스템에 새로운 노드를 추가하여 성능을 개선하는 것이 보통 더 저렴하기 때문이다. 그러나 이 접근 방식은 성능 엔지니어링에서 논의된 것처럼 수확 체감 효과를 가질 수 있다. 예를 들어, 프로그램의 70%가 병렬화되어 여러 CPU에서 실행될 때 속도가 향상될 수 있다고 가정해 보자. 만약 \alpha가 순차적인 계산의 비율이고, 1-\alpha가 병렬화할 수 있는 비율이라면, P개의 프로세서를 사용하여 얻을 수 있는 최대 속도 향상은 암달의 법칙에 따라 다음과 같다.

:\frac 1 {\alpha+\frac{1-\alpha} P}.

이 예제에 값을 대입하면, 4개의 프로세서를 사용할 때 다음과 같다.

:\frac 1 {0.3+\frac{1-0.3} 4} = 2.105.

계산 능력을 8개 프로세스로 두 배로 늘리면 다음과 같다.

:\frac 1 {0.3+\frac{1-0.3} 8} = 2.581.

처리 능력을 두 배로 늘려도 프로세스 속도는 약 5분의 1 정도만 빨라진다. 전체 문제를 병렬화할 수 있다면 속도도 두 배로 증가할 것이다. 따라서 더 많은 하드웨어를 투입하는 것이 반드시 최적의 접근 방식은 아니다.

8. 범용 확장성 법칙 (USL)

분산 시스템에서 범용 확장성 법칙(USL)을 사용하여 시스템의 확장성을 모델링하고 최적화할 수 있다.[1] USL은 닐 J. 건터가 만들었으며, 경합과 일관성과 같은 매개변수를 기반으로 확장성을 정량화한다.[1] 경합은 공유 자원을 기다리거나 대기열에 묶여 발생하는 지연을 의미한다.[1] 일관성은 데이터가 일관성을 갖도록 하는 지연을 의미한다.[1] 예를 들어, 높은 경합은 병렬화할 수 있는 순차적 처리를 나타내고, 높은 일관성은 프로세스 간의 과도한 종속성을 시사하므로 상호 작용을 최소화해야 한다.[1] 또한, USL의 도움으로 미리 시스템의 최대 유효 용량을 계산할 수 있으며, 그 지점을 넘어 시스템을 확장하는 것은 낭비이다.[1]

9. 강력한 확장과 약한 확장

고성능 컴퓨팅에서 확장성은 '''강력한 확장'''과 '''약한 확장''' 두 가지로 구분된다.


  • '''강력한 확장'''은 고정된 ''총'' 문제 크기에 대해 프로세서 수에 따른 해답 시간의 변화를 정의한다.[12]
  • '''약한 확장'''은 프로세서당 고정된 문제 크기에 대해 프로세서 수에 따른 해답 시간의 변화를 정의한다.[12]

10. 기타 분야에서의 확장성


  • 변압기 용량 증설: 3상 교류에서 두 개의 변압기를 "V 결선"으로 해두면, 장래에 용량이 증가했을 때 변압기를 하나 추가하여 "Δ 결선"으로 용량을 늘릴 수 있다. 2단계 방식이지만, 원래의 변압기 2대를 그대로 사용할 수 있으므로 확장성이라고 할 수 있다.
  • 매장 면적 확장: 일반적인 소매점은 규모가 커졌을 경우 현재보다 큰 건물로 이전하지만, 현재 건물의 증축이나 옆 건물을 취득하는 확장 가능한 계획을 세우는 경우도 있다. 대형 홈 센터 조이풀 혼다가 이 방식을 채택하고 있다.
  • 클라우드 컴퓨팅: 사용자의 애플리케이션을 수정하지 않고, 플랫폼 측의 계산 자원이나 저장 공간을 증감시킬 수 있는 기술이다. 이 기술을 사용하지 않을 경우, 보다 고성능의 컴퓨터로 이전하거나 스토리지 추가를 통해 애플리케이션 측의 수정을 해야 한다.
  • 컴퓨터의 실제 메모리 및 외부 저장 장치: 실제 메모리는 빈 슬롯이 있다면 추가하여 용량을 늘릴 수 있다. 또한, 적절하게 애플리케이션이 설계되어 있다면 늘어난 메모리가 적절하게 사용된다. 외부 저장 장치도 기본 소프트웨어에 스패닝 기능이 있다면 애플리케이션 수정 없이 용량을 늘릴 수 있다.

11. 유사하지만 다른 개념

인텔이 CPU 업그레이드 경로로 판매했던 오버드라이브 프로세서는 컴퓨터 본체를 구매하지 않고 소켓에 업그레이드용 프로세서를 연결하는 것만으로 업그레이드할 수 있었다. 그러나 실제로는 기존 프로세서의 작동을 중지하고 신규 프로세서를 작동시키는 방식이어서 확장성과는 다르다.

12. 예시

사고 지휘 체계(ICS)는 미국에서 긴급 구조 기관에서 사용된다. ICS는 단일 엔진의 길가 풀밭 화재에서 주간 고속도로 산불까지 자원 조정을 확장할 수 있다. 현장에 도착한 첫 번째 자원이 지휘권을 설정하며, 자원을 명령하고 책임을 위임할 권한을 갖는다. (다섯에서 일곱 명의 간부를 관리하고, 그들은 다시 최대 일곱 명에게 위임하며 사고가 커짐에 따라 계속된다). 사고가 확대됨에 따라 더 고위 간부가 지휘권을 맡는다.

초기 P2P 구현 중 하나인 그누텔라는 확장성 문제가 있었다. 각 노드는 모든 노드에 요청을 플러딩했다. 각 피어에 대한 요구는 전체 피어 수에 비례하여 증가하여 용량을 빠르게 초과했다. 비트토렌트와 같은 다른 P2P 시스템은 각 피어에 대한 요구가 피어 수와 무관하기 때문에 잘 확장된다. 중앙 집중화된 것이 없으므로 시스템은 피어 자체 외에 다른 리소스 없이 무한정 확장할 수 있다.[1]

확장 가능한 온라인 트랜잭션 처리 시스템 또는 데이터베이스 관리 시스템은 새로운 프로세서, 장치 및 스토리지를 추가하여 더 많은 트랜잭션을 처리하도록 업그레이드할 수 있으며, 시스템을 종료하지 않고 쉽고 투명하게 업그레이드할 수 있는 시스템이다.[2]

도메인 이름 시스템(DNS)의 분산 특성으로 인해 전 세계 인터넷에서 수십억 개의 호스트를 효율적으로 서비스할 수 있다.[3]

참조

[1] 컨퍼런스 Characteristics of scalability and their impact on performance
[2] 저널 What is scalability? https://minds.wiscon[...]
[3] 서적 E-commerce: Business, Technology, Society https://books.google[...] Pearson Prentice Hall/Pearson Education
[4] 뉴스 Why web-scale is the future https://www.networkw[...] 2017-06-01
[5] 서적 Building Serverless Applications on Knative O'Reilly Media
[6] 저널 The Incident Command System: High-Reliability Organizing for Complex and Volatile Task Environments 2001-12-01
[7] 서적 Advanced Computer Architecture and Parallel Processing https://books.google[...] John Wiley & Sons 2005-04
[8] 컨퍼런스 Scale-up x Scale-out: A Case Study using Nutch/Lucene 2007-03-26
[9] 웹사이트 Network Functions Virtualisation (NFV); Terminology for Main Concepts in NFV https://web.archive.[...] 2016-01-12
[10] 뉴스 Eventual consistency by Werner Vogels http://www.infoq.com[...] InfoQ 2017-04-08
[11] 서적 Guerrilla Capacity Planning: A Tactical Approach to Planning for Highly Scalable Applications and Services
[12] 웹사이트 The Weak Scaling of DL_POLY 3 https://web.archive.[...] STFC Computational Science and Engineering Department 2014-03-08
[13] 문서 Characteristics of scalability and their impact on performance
[14] 문서 What is scalability? 1990-12
[15] 컨퍼런스 Characteristics of scalability and their impact on performance
[16] 저널 What is scalability? http://digital.libra[...]
[17] 서적 E-commerce: Business, Technology, Society https://books.google[...] Pearson Prentice Hall/Pearson Education
[18] 뉴스 Why web-scale is the future https://www.networkw[...] 2017-06-01



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com