정의
- 확장성
(Extensibilty 또는 Scalability)
- 확장성이란, 서비스나 응용프로그램이 증가하는 성능 요구에 맞게 향상될 수 있는 정도를 나타낸다.
- 동시 접속자가 100명인 시스템이 있다고 가정할 때 특정 시즌이나 이벤트로 인해 동시 접속자가 10배에서 100배 이상 많이 접속하는 경우 확장성이 높은 시스템은 사용자 증가에 따라 시스템의 자원이나 리소스를 손쉽게 추가/삭제할 수 있다.
- 이러한 확장성은 물리적 하드웨어 환경에서 스케일 업(Scale up)과 스케일 아웃(Scale Out)이라는 두 가지의 확장성 전략을 이용하여 구현할 수 있다.
- 스케일 업(Scale up)은 단일 하드웨어에 대해 시스템 리소스(프로세서, 메모리, 디스크, 네트워크 어댑터 등)를 추가하거나 기존 하드웨어를 더욱 강력한 것으로 교체하는 작업이다.
- 스케일 아웃(Scale out)은 서버를 여러 대 추가하여 처리 능력을 향상시키는 방법이다.
1. 확장성
ㅇ [일반] 확장성 (Extensibilty 또는 Scalability)
- 대규모적인 재설계/재설치 등의 필요없이 확장이 얼마나 쉽고 가능한가에 대한 용이성
ㅇ [영상분야]
- 스케일러빌러티 (Scalability)
. 화면의 크기나 영상프레임률 등이 달리 정의되어도, 이를 조절 또는 동시에 처리 가능한 능력
- 익스텐서빌러티 (Extensibility)
. 어떠한 비트율 전송에 대해서도 단순 정보 추가 만으로 비트율을 쉽게 높일 수 있는 능력
* 통상, 이 둘을 구분 않고 그냥 스케일러빌러티 라고도 함
2. [ 시스템 일반 분야 ]
ㅇ 시스템 설계상에서 확장성이란 용어가 자주 등장하며,
- 이는 모든 가능성을 염두에 두고 시스템의 성장 및 확대를 지원할 수 있도록 하는 목표를 뜻함
ㅇ 예를들면,
- 네트워크 설계자는 네트워크의 확산이나 거대한 성장을 도모해야 함
- 이는 단지 산술적으로 노드의 수가 증가하더라도 이를 수용토록 확장성 있게 설계해야 함을 의미
- 그러나, 산술적 증가는 항상 관리의 복잡성 등을 수반하게 됨
ㅇ 일반적으로, 확장성은, 네트워크 토폴로지의 관점에서 볼 때,
- 버스형 보다는 성형이 좋음
3. [ 비디오/동영상 분야 ]
ㅇ 영상분야에서의 스케일러빌러티는,
- MPEG-2 표준에서 최초로 나온 개념으로써,
- 화면의 크기나 프레임율이 다른 경우, 이를 조절 또는 동시에 처리할 수 있는 능력
ㅇ 확장성 능력
- 화면의 크기나 프레임 율이 다른 경우에 이를 동시에 처리할 수 있는 능력
. 해상도가 다른 영상들을 동시에 재현 가능
. HDTV 품질의 비트율에서 일부분을 취해 복호하면 SDTV급의 영상 재현 가능
- 다른 해상도를 갖거나, 서로 다른 대역폭을 갖는 전송로에 대한 접근/접속 능력
. 수신측 성능을 고려하여 송신측에서 적합한 정도의 성능으로 부호화하는 능력
- 단 한번의 부호화로 다양한 네트워크 대역폭 및 다른 사용자의 요구를 적응적으로
만족시킬 수 있는 능력
. 영상 압축된 하나의 비트열에서 공간 해상도, 시간 해상도 등이 다른 여러 종류
의 영상들을 복호 또는 호환 가능케하는 능력
ㅇ 구분
- 공간적 스케일러빌리티 (Spactial Scalability)
- 시간적 스케일러빌리티 (Temporal Scalability)
- 화질적 스케일러빌리티 (SNR Scalability) 등
* 차세대 기술 => 적응적 스케일러빌러티
예시
[영상분야]
- 스케일러빌러티 (Scalability)
. 화면의 크기나 영상프레임률 등이 달리 정의되어도, 이를 조절 또는 동시에 처리 가능한 능력
- 익스텐서빌러티 (Extensibility)
. 어떠한 비트율 전송에 대해서도 단순 정보 추가 만으로 비트율을 쉽게 높일 수 있는 능력
* 통상, 이 둘을 구분 않고 그냥 스케일러빌러티 라고도 함
분산 시스템 설계 시 고려사항
- 확장성 있는 웹 사이트란 사용자들이 인터넷을 통해 원격지의 자원에 연결할 때, 자원이나 자원에 대한 접근 권한이 여러 개의 서버에 분산되어 있을 때를 말한다. 다음은 고려 사항들이다.
- 가용성(Availability):
- Amazon.com과 같은 온라인 마켓 사이트에서 몇 분간 서비스가 제대로 동작하지 않으면, 회사는 수천 혹은 수만 달러의 손실을 입게 된다. 따라서 '항상 사용 가능하고 장애에 유연한 아키텍처를 가지는 것'은 가장 기본적인 비즈니스 요구사항이라 할 수 있다.
- 분산 시스템에서 높은 가용성을 얻기 위해, 중요한 컴포넌트의 이중화와 실패가 발생했을 경우에 대한 빠른 복구 방법, 문제가 발생할 때 일부만으로 동작할 수 있게 해 전면 장애가 발생하지 않게 하는 구성(graceful degradation)에 대한 고려가 필요하다.
- 성능(Performance):
- 웹 사이트의 속도는 사용성, 만족도 뿐 아니라 수익 및 유지에 직접적으로 연관이 있는 검색 엔진의 랭킹에도 중요한 영향을 미친다. 결과적으로 빠른 응답 시간과 낮은 레이턴시를 위해서 최적화된 시스템을 만드는 것은 중요하다.
- 신뢰성(Reliability):
- 항상 똑같은 요청에는 똑같은 결과를 제공해야 한다. 시스템이 항상 정상적으로 동작해야 한다는 말이다. 데이터가 변하거나 업데이트되고 나면 업데이트된 새로운 데이터를 반환해야 한다. 어떤 데이터가 시스템에 저장된 이후 사용자가 해당 데이터를 검색할 때 항상 그 결과가 반환된다는 것을 사용자들이 알게 할 필요가 있다.
- 확장성(Scalability):
- 대규모의 분산 시스템에서라면 규모 자체는 확장성에서 고려해야 할 하나의 측면에 불과하다. 중요한 것은 더 많은 부하를 처리할 수 있도록 처리량을 증가시키기 위해 필요한 노력이다. 시스템의 확장성이란 시스템의 여러 특징이나 기능/비기능 한계 상황으로 설명될 수 있다. 예를 들어 얼마나 많은 추가적인 트래픽을 처리할 수 있는지, 저장 공간을 추가하기가 얼마나 쉬운지, 얼마나 더 많은 트랜잭션을 처리할 있는지와 같은 것들 말이다.
- 관리성(Manageability):
- 쉽게 운용할 수 있는 시스템을 설계하는 것은 또 다른 중요한 고려 사항이다. 시스템의 관리성이란 운용(유지와 업데이트)의 확장성과 같은 말이다. 관리성이 좋아지려면 문제 발생 시 분석이 용이해야 하며 문제를 이해하기 쉬워야 한다. 그리고 업데이트와 수정, 시스템 운용 자체가 쉬워야 한다
- 비용(Cost):
- 비용은 중요한 요소다. 비용은 물론 하드웨어와 소프트웨어 비용을 포함하지만, 시스템을 배포하고 관리하는 비용 또한 중요하게 고려해야 한다. 이러한 비용에는 시스템이 빌드하는 데 걸리는 시간, 시스템을 실행시키는 데 드는 운용 노력의 양, 모든 고려해야 할 사항에 대해서 필요한 교육 비용까지 포함된다. 즉 비용은 시스템 소유에 필요한 모든 비용이다.
이러한 고려 사항들은 분산 웹 시스템을 설계할 때 판단 기준으로 사용할 수 있다.
- 하지만 어느 하나를 향상시키는 것이 다른 하나의 하락을 가져올 수도 있다. 간단한 예로 처리량을 향상시키기 위해 서버를 여러 개 추가하는 것(수평 확장)은 서버를 여러 개 추가로 관리해야 하기 때문에 관리성과 비용 측면에서는 좋지 않다.