어떤 시스템 유형이 "스케일 아웃"이 아닌 "스케일 아웃"해야합니까?


12

여러 개의 작은 서버로 나눠서 "스케일 아웃"이 아닌 "더 강력하고 더 비싼 서버로"확장해야하는 시스템이 있는지 오랫동안 궁금했습니다.

그러한 시스템이 존재하고 있다면, 시스템이 수평 확장이 아닌 수평 확장을 필요로하는 경향이 있는가? 예를 들어 ACID 규격 데이터베이스 트랜잭션 또는 기타 강력한 데이터 무결성 요구 사항으로 인해 이러한 요구가 발생할 수 있습니다.

스케일 업은 스케일 아웃보다 하드웨어 비용이 훨씬 많이 드는 것처럼 보이기 때문에 가능하면 피하고 싶은 것처럼 보이지만 항상 피할 수 있는지 확실하지 않습니다.

따라서 확장 할 수없고 대신 확장해야하는 시스템이 있습니까? 이 문제의 원인은 무엇이며 그러한 시스템을 어떻게 식별 하시겠습니까? (일반적으로 더 쉽게 식별 할 수있는 공통된 특성을 공유합니까?)



7
소프트웨어가 스케일 아웃되도록 설계되지 않은 경우 종종 스케일 업이 훨씬 쉽습니다. 소스를 소유하지 않거나 개발자에게 영향을 미치는 경우 소프트웨어 재 설계 비용이 비싸거나 불가능합니다.
Zoredache

그러한 시스템을 작성하는 것은 매우 어려운 문제입니다. 특히 여러 마스터가 같은 레코드에 동시에 쓰는 곳에서 갈 수있는 마스터 / 마스터 디자인. 누가 글을 이기는가?
Matt

3
당신은에 관심이있을 것이다 CAP Theorem . 기본적으로 정리에 정의 된 일관성과 가용성이 모두 필요한 서비스는 분할을 허용하지 않습니다. 대부분의 실제 요구 사항은 최종 일관성에 대한 일부 일관성을 희생하거나 (사실 후 수동으로 또는 자동으로 불일치를 처리 함) 일부 참가자가 없을 경우 요청 처리를 거부함으로써 가용성을 희생 할 수 있습니다. 따라서 절대적 일관성과 절대적 가용성을 모두 요구하는 시스템은 본질적으로 확장해야합니다.
Lie Ryan

1
"신뢰할 수있는 LAN"이 "실패하지 않음"을 의미하는 경우 실제 환경을 고려하지 않은 것입니다.
mfinni

답변:


18

나는 주로이있는 응용 프로그램 작업 제로 수평 확장 잠재력을 . Linux에서 실행 되더라도 응용 프로그램, 데이터 구조 및 I / O 요구 사항으로 인해 사용자 워크로드 증가를 수용하기 위해 점차적으로 더 큰 시스템으로 "확장"해야합니다.

많은 기존의 기간 업무 및 트랜잭션 응용 프로그램에는 이러한 유형의 제약 조건이 있습니다. 업계가 클라우드 솔루션 및 DevOps 중심 웹 스케일 아키텍처 에 중점을두고 컴퓨팅 세계의 상당 부분을 무시 한다고 강조하는 이유 중 하나 입니다.

불행히도, 내가 설명하는 스케일 업 시스템은 실제로 섹시하지 않기 때문에, 업계는 그들의 가치를 무시하거나 크고 중요한 시스템 (예 : 소 대 애완 동물 ) 을 다루는 데 필요한 기술을 강조하지 않는 경향이 있습니다.


1
"가장 쉬운 방법은 문제에 하드웨어를 던지는 것입니다." 무어의 법칙 제발 그만해!
cjc

2
@Demetri-Microsoft SQL Server는 제가 생각할 수있는 가장 "높은 프로필"제품으로, "스케일 아웃"이 아니라 일반적인 "스케일 업"입니다. 병합 복제에 대한 매우 구체적인 기준을 충족하지 않으면 확장 할 수 없습니다.
Mark Henderson

3
또는 솔루션을 여러 문제로 분해 할 수있는 경우. 예를 들어, 트랜잭션 데이터베이스에 대해보고를 실행하지 마십시오. 다른 하드웨어에서 실행되는 복제본을 누르십시오. \
mfinni

1
-1. 당신이 놓친 것 같아서 문제의 중심에 닿았습니다. 스케일 아웃 시스템을 위해 시스템을 다시 작성할 수 있으면 문제가 강제로 스케일 아웃되지 않습니다. 문제 도메인이 처음부터 설계된 경우에도 확장이 불가능한 시스템에 대한이 질문입니다.
Lie Ryan

1
@LieRyan 이해력. 아키텍처 제약 조건으로 인해 다시 디자인하더라도 지원하는 응용 프로그램을 확장 할 수 없다고 말합니다 (데이터베이스와 같은 시스템입니다).
ewwhite

8

개발자의 관점에서 볼 때, 거의 모든 기존의 주류 데이터베이스 엔진은 확장 만 가능하며 확장은 매우 사소한 생각이라고 말할 수 있습니다.

최근에는 더 큰 확장 성과 고 가용성 시스템이 필요하면서 기존 데이터베이스를 확장하려는 노력이있었습니다. 그러나 디자인은 레거시 코드에 의해 방해되기 때문에 디자인의 기본이 아니라 매우 중요합니다. 잘 알려진 대부분의 데이터베이스 엔진을 확장하려고하면이 문제가 발생합니다. 슬레이브 서버를 추가하는 것은 설정하기가 매우 어려울 수 있으며 상당한 제한이 있으며 일부는 데이터베이스 테이블을 재지 그해야 할 수도 있습니다.

예를 들어, 대부분은 다중 마스터 디자인이 아닌 마스터 / (멀티) 슬레이브입니다. 다시 말해 전체 서버를 그대로두고 쿼리를 처리하지 못할 수 있습니다. 일부는 제한이 있지만 예를 들어 다중 슬레이브 디자인 만 읽습니다. 따라서 쓰기를 수행하는 하나의 서버가 있고 다른 서버는 모두 읽기 전용 데이터를 제공 할 수 있습니다. 이러한 시스템을 설정할 때 항상 쉬운 프로세스는 아니며 잘 작동하기가 어렵다는 것을 알 수 있습니다. 많은 경우에 추가에 큰 영향을 미칩니다.

반면, 처음부터 동시성 및 다중 마스터 설계로 개발 된 일부 최신 데이터베이스 엔진이 있습니다. NOSQLNewSQL 은 새로운 디자인 클래스입니다.

따라서 기존 SQL Server에서 더 나은 성능을 얻는 가장 좋은 방법은 스케일 업입니다! NOSQL 및 NewSQL을 사용하면 확장 및 확장이 가능합니다.

기존의 RDBMS 시스템이 밀접하게 결합 된 이유는 모두 동일한 데이터에 대한 일관된보기가 필요하기 때문입니다. 여러 클라이언트가 서로 다른 클라이언트의 동일한 데이터에 대한 업데이트를 허용하는 경우 어느 서버를 신뢰합니까? 어떤 종류의 잠금 메커니즘을 통해 데이터의 일관성을 유지하려는 방법을 사용하려면 클라이언트에서 읽은 데이터가 오래되었을 수 있으므로 성능을 저하 시키거나 데이터 품질에 영향을주는 다른 서버와의 협력이 필요합니다. 또한 서버는 동일한 레코드에 쓸 때 가장 최근의 데이터를 결정해야합니다. 보시다시피, 데이터에 대한 액세스가 여전히 빠른 프로세스 또는 스레드뿐만 아니라 서버 전체에 워크로드가 분산되어 있기 때문에 더욱 복잡한 문제입니다.


Oracle RAC는 10g 이후로 스케일 아웃을 제공하지 않았습니까?
Dani_l

그렇습니다. 그러나 RAC를 보유하고 완벽하게 작동하는 RAC를 갖는 것은 서로 다른 두 가지입니다. 그래도 멋진 디자인입니다. 필요한 경우 가격을 기꺼이 지불 할 가능성이 있습니다.
TomTom

또한 Oracle RAC에 필요한 공유 스토리지 시스템에 주목하십시오. 구현 방법에 따라 스케일링 문제가 발생할 수 있습니다.
Matt

7

필자의 의견으로는 스케일 업 / 아웃 경계는 워크 플로의 병렬 처리 방법과 병렬 스레드가 서로 얼마나 밀접하게 조정되어야하는지에 따라 결정됩니다.

단일 스레드
어떤 이유로 든이 워크 플로는 단일 스레드에서만 작동 할 수 있습니다.

하나의 스레드 수단 하나의 시스템 수단은 규모 까지 더 빨리 갈 수 있도록.

밀접하게 결합 된 병렬성
스레드가 서로 밀접하게 결합되어야하는 다중 스레드 시스템입니다. 프로세스 간 통신 속도가 매우 빠르거나 단일 메모리 관리자를 통해 관리해야 할 수도 있습니다. 대부분의 RDBMS 시스템은 이러한 종류의 병렬 컴퓨팅입니다.

대부분의 경우, 이러한 시스템은 규모 것을 것들 까지 더 이상 밖으로 예외가 있기는하지만은. 예를 들어 단일 시스템 이미지 스타일 클러스터, 단일 메모리 공간이지만 스레드 간 대기 시간이 긴 워크 플로는 확장이 더 쉬워 질 수 있습니다. 그러나 이러한 SSI 시스템은 작업하기가 매우 까다롭기 때문에 대부분의 엔지니어는 더 큰 상자를 만듭니다.

느슨하게 연결된 병렬 처리이
스레드는 서로간에 높은 대기 시간으로 스레드가 정상인 다중 스레드 / 프로세스 시스템입니다. 아니면 전혀 대화 할 필요가 없습니다. 확장 된 웹 서비스 및 렌더 팜은 이러한 종류의 시스템의 전형적인 예입니다. 이와 같은 시스템은 밀접하게 결합 된 병렬 처리보다 크게 만드는 것이 훨씬 쉬우므로 이러한 유형의 시스템에 대해 많은 흥분이 있습니다.

이것은 스케일 아웃 이 훨씬 쉬운 스타일 입니다.


RDBMS가 밀접하게 결합되는 이유는 데이터와 밀접하게 결합되어 있기 때문입니다. 즉, 동일한 리소스에 액세스하는 여러 서버.
Matt
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.