<< 재미있는 기업의 인재들 | Home | MVC의 시대는 가고 MOVE의 시대가 온다. >>

클라우드 환경에서 새로운 ACID, BASE 그리고 CAP

클라우드 환경에서 아키텍처와 프로그래밍 모델이 변화하고 또 진화하고 있는데 대해서 제가 이해를 하고자 메모했던 내용을 좀 더 구체화해서 부족하나마 정리해 봅니다.

새로운 ACID 모델들

ACID는 RDBMS의 설계 사상과 관련하여 NoSQL이나 NwqSQL이 출현되면서 자주 회자되었던 용어이다. 기존의 관점에서 ACID의 기본 개념은 아래와 같다.
  • Atomic(원자성)은 트랜잭션과 관련된 작업들이 모두 수행되었는지 아니면 모두 실행이 안되었는지를 보장하는 능력이다. 자금 이체는 성공할 수도 실패할 수도 있지만 원자성은 중간 단계까지 실행되고 실패하는 일은 없도록 하는 것이다.
  • Consistent(일관성)은 트랜잭션이 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 유지하는 것을 의미한다. 무결성 제약이 모든 계좌는 잔고가 있어야 한다면 이를 위반하는 트랜잭션은 중단된다.
  • Isolated(고립성)은 트랜잭션을 수행 시 다른 트랜잭션의 연산 작업이 끼어들지 못하도록 보장하는 것을 의미한다. 이것은 트랜잭션 밖에 있는 어떤 연산도 중간 단계의 데이터를 볼 수 없음을 의미한다. 은행 관리자는 이체 작업을 하는 도중에 쿼리를 실행하더라도 특정 계좌간 이체하는 양 쪽을 볼 수 없다. 공식적으로 고립성은 트랜잭션 실행내역은 연속적이어야 함을 의미한다.
  • Durable(영속성)은 성공적으로 수행된 트랜잭션은 영원히 반영되어야 함을 의미한다. 시스템 문제, DB 일관성 체크 등을 하더라도 유지되어야 함을 의미한다. 전형적으로 모드 트랜잭션은 로그로 남고 시스템 장애 발생 전 상태로 되돌릴 수 있다. 트랜잭션은 로그에 모든 것이 저장된 후에만 commit 상태로 간주될 수 있다.
QCon에서 Google의 Gregor Hohpe는 클라우드에서 ACID는 다음과 같은 의미가 될수도 있다고 했다.



Google에서 발표한 ACID는 아래와 같다.
  • Associative(결합)은 결합 법칙이 적용되어야 한다. A + B + C = (A + B) + C = A + (B + C)로 결합이 가능하다. 순서도 상관없이.
  • Commutative(교환)는 교환 법칙이 적용 되어야 한다. 교환이 가능하여 유연성 확보 된다.
  • Idempotent(멱등성)은 반복 작업을 해도 결과는 변화하지 않아야 하고 작업이 잘 되지 않았을 경우 2회 반속해서 동일한 결과를 얻을 수 있어야 한다.
  • Distributed(분산)은 분산 기능이 지원되어야 한다.
Eric Brewer(UC Berkeley 교수)는 ACID와 대조적으로 가용성과 성능을 중시하는 특성을 가진 분산 시스템의 특성을 'BASE'라는 용어로 표현했다.



아래는 BASE 트랜잭션에 대해서는 아래 단락에서 좀 더 자세히 설명한다.

BASE 트랜잭션에 대해

클라우드에서 핵심적인 개념이되는 것이 BASE 트랜잭션과 CAP 이론이다.
클라우드는 기존 ACID를 실현하는 것은 곤란하다. 왜냐하면 분산되어 있기 때문에, 일관성을 유지하려면 그야말로 2 단계 커밋 같은 헤비한 구조가 되어야 한다.
그래서 출현한 것이 BASE 라는 개념이다.

BASE는 내용은 다음과 같다.
  • Basically Available
  • Soft-State
  • Eventual Consistency
참고로 ACID가 개별 데이터 베이스 트랜잭션의 특성인데 반해, BASE는 시스템 전체에 대한 특성임을 알아야 한다.

Basically Available
분산 시스템이기 때문에 항상 가용성을 중시한다. 반대로 말하면, 클라우드에서 분산되어있는 것은 필수이다.
클라우드의 Basically Availability의 실현은 친숙한 것들은 Optimistic Locking 및 큐 등이 있다.

Soft-State
Soft-State는 '노드의 상태는 내부에 포함된 정보에 의해 결정되는 것이 아니라 외부에서 전송된 정보를 통해 결정된다는 상태의 사고 방식'이다.
중요한 것은 외부에서 보내진 정보에 의해 결정된다는 것이다. 즉, 떨어진 노드 간의 데이터 업데이트는 데이터가 노드에 도달한 시점에서 갱신된다.
밖에서 받은 정보로 상태를 업데이트하므로 Soft-State하다고 생각한다는 사상이다.

Eventually Consistent
하지만 Soft-State 예제에서, 데이터를 해당 노드에 도달할 때까지는 데이터에 일관성이 없는 상태이다.
그러나 데이터가 도착하기만 하면 또한 무결성을 보장 수 있으므로, 그 상황은 일시적이다. 그래서 일정 시간이 지나면, 다시 Consistency를 충족시킬 것이다.
이것을 Eventually Consistent한다.
시스템상에서 일시적으로 Consistent하지 않은 상태가 되어도 일정 시간 후에는 Consistent 상태가 되는 성질을 우리는 Eventually Consistency한다.

참고로 DNS와 Active Directory에 BASE 사상이 반영되었다고 한다.

클라우드 관점에서 CAP 변화

분산 환경에서 Eventually Consistent 예제에서도 보듯이 분산 및 가용성과 무결성 세 가지를 동시에 실현할 수 없다는 것을 알 수 있다.
기존에 생각하는 CAP 이론의 의미는 아래와 같다.



  • Consistency(데이터 무결성)는 일관성이라고도 한다. 트랜잭션 시작 및 종료 시에 미리 주어진 무결성을 충족시킨다고 보장하는 특성을 말한다. 즉, 데이터베이스의 규칙, 즉 무결성 조건을 충족하지 않는 상태를 일으키는 트랜잭션은 실행이 중단된다.
  • Availability(시스템 가용성)는 분산 시스템의 데이터 수급자(브라우저 같은 클라이언트)는 서비스에서 항상 데이터 액세스(읽기도 쓰기도)가 보장된다는 것을 의미한다. 서버 측의 사정으로 데이터에 액세스하지 못할 수 있을 때, 그 시스템은 Availability 하지 않게 된다.
  • Partition tolerance(네트워크 분단에 대한 지속성)는 분산 시스템을 구성하는 노드(간단하게 말하면 물리 가상 서버)가 하나 고장으로 전체 시스템이 문제가 없이 지속됨을 보장하는 것을 의미한다. 시스템의 데이터를 보유하고있는 서버 중 하나가 물리적으로 충돌 때 데이터를 읽거나 쓸 수 없게되면, 시스템은 Partition tolerance 하지 않게 된다.
Eric Brewer씨가 분산 시스템의 'CAP 이론'을 만들었다. CAP 이론에 따르면 3개중 2개까지만 동시에 만족한다고 말한다. 그래서 클라우드에서는 분산(P)는 필수이기 때문에, 어느 하나를 선택하게 된다.
그렇다면 결국, 클라우드는 결국 AP가 필수가 되기 때문에 C에 대한 대비책을 보완해야 한다.
그래서 C는 어떻게 해야 할까? Consistency 관점을 완화해서 Eventually Consistent 개념을 적용한 것이다.

클라우드 시스템 Consistency 관점에서 보면 기본적으로 Availability를 지원하는 몇몇 복제 노드에 동일한 데이터를 보내려고 할 때 발생 노드에서는 쓰기에 성공해도 다른 노드에서 어떤 사정으로 쓰기에 실패하면 경우 시스템에서는 서로 다른 데이터 상태가 공존하여 Consistent하지 않은 상태가 된다
이 때 정확한 무거운 Consistent 정책 대신 Eventually Consistent로 한다면 실현될 수 있다는 생각을 한 것이다. 결국 C를 풀고 Eventually Consistent를 채택한 것이 중요 포인트다.
그리고 강력한 Consistent도 좀 더 깊이 생각해 보면 작은 지연이 발생하듯이 결국 Eventually Consistent가 최선의 방법일 수도 있다.
결국, 클라우드 환경에서는 두 노드의 Consistency라는 개념을 적용할려면 원리적으로, Soft-State를 기반으로 Eventually Consistency 밖에 있을 수 없다. 그래서 CAP이론도 클라우드 환경에서는 Consistent가 합리적 필요에 의해 Eventually Consistency를 선택할 수밖에 없는 상황에 놓이게 된 것이다.

[참조 사이트]
Tags : , , ,


Avatar: jingood2

Re: 클라우드 환경에서 새로운 ACID, BASE 그리고 CAP

미물님. 안녕하세요? 전에 서버사이드 뒷풀이때 옆에서 인사드렸었는데...^^

발표를 준비할게 있어서 CAP Theory 관련 자료 찾아 보는중에 온라인 상에서 뵙게 되네요. ^^ 좋은 자료 잘 참고 하고 갑니다. 좋은 하루 보내세요 

Avatar: 미물

Re: 클라우드 환경에서 새로운 ACID, BASE 그리고 CAP

발표내용 공유 좀 해줘요, ㅋㅋㅋ


Add a comment Send a TrackBack