본문 바로가기

백엔드/확장성

확장성 개요

반응형

정의


- 확장성

(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):
    • 비용은 중요한 요소다. 비용은 물론 하드웨어와 소프트웨어 비용을 포함하지만, 시스템을 배포하고 관리하는 비용 또한 중요하게 고려해야 한다. 이러한 비용에는 시스템이 빌드하는 데 걸리는 시간, 시스템을 실행시키는 데 드는 운용 노력의 양, 모든 고려해야 할 사항에 대해서 필요한 교육 비용까지 포함된다. 즉 비용은 시스템 소유에 필요한 모든 비용이다.

이러한 고려 사항들은 분산 웹 시스템을 설계할 때 판단 기준으로 사용할 수 있다.

 

- 하지만 어느 하나를 향상시키는 것이 다른 하나의 하락을 가져올 수도 있다. 간단한 예로 처리량을 향상시키기 위해 서버를 여러 개 추가하는 것(수평 확장)은 서버를 여러 개 추가로 관리해야 하기 때문에 관리성과 비용 측면에서는 좋지 않다.

 

반응형