본문 바로가기

좋아하는 것_매직IT/9.redis

5.Redis, 꼭 알아야할 CAP 이론에 대해서 정리해 볼께요.

반응형

CAP 이론이란?

  • 컴퓨터과학 분야에서 분산 컴퓨터 시스템을 설명하는데 사용되는 이론.
    • Consistency, Availability, Partition Tolerance 을 동시에 지원하는 분산 컴퓨터 시스템은 없다. 라고 정의됨.
      • 2000년에 전산학자 에릭 브루어가 가설을 제시하였고, 2002년에 세스 길버트와 낸시 린치가 증명함.
      • 참고페이지
      • http://en.wikipedia.org/wiki/CAP_theorem
      • https://blog.nahurst.com/visual-guide-to-nosql-systems

        • As you can see, there are three primary concerns you must balance when choosing a data management system: consistency, availability, and partition tolerance.

          • Consistency means that each client always has the same view of the data.
          • Availability means that all clients can always read and write.
          • Partition tolerance means that the system works well across physical network partitions.
            • According to the CAP Theorem, you can only pick two.

               

      • Consistency
        • 일관성 or 동시성 or 동일성
          • Every read receives the most recent write or an error
          • 다중 클러스터에서 같은 시간에 조회하는 데이터는 항상 동일한 데이터임을 보증하는 것을 의미함.
          • 관계형 데이터베이스가 지원하는 가장 기본적인 기능이기도하나, NoSQL에서는 빠른 분산처리를 위하여 해당 일관성을 희생할 수 도 있음.
          • 대부분 시간이 지남에 따라 수정된 내용이 다른 노드로 전파되어 반영됨.
            • 이를 최종일관성(Eventual Consistency) or 궁극적인 일관성이라고 부름
          • NoSQL 솔루션
            • 많은 NoSQL 솔루션은 읽기와 쓰기의 성능 향상을 위해 데이터를 메모리에 임시로 기록후 클라이언트에 응답
              • 백그라운드 스레드 or 프로세스로 해당 데이터를 디스크에 기록함.
            • 장점
              • 빠른 응답속도 및 데이터변경에따른 수정비용이 적게듬.
            • 단점
              • 정전과 같은 하드웨어 장애발생 시 데이터 유실이 발생됨.
              • 잠깐!, 여기서 Redis의 대응책에 대해서 알아볼께요..^^;
              • Redis 는 AOF를 사용하여 데이터 유실을 방지함.
                • AOF(Append Only File)
                  • Redis가 변경 커맨드를 받을 때마다, AOF 파일에 커맨드를 추가(append)함.
                  • Redis에서 AOF를 사용하는 것으로 변경한 후, Redis를 재시작하면, Redis는 AOF의 나열된 모든 커맨드를 순서대로 실행하여 복구할 수 있음.
      • Availability
        • 가용성 or 내고장성
          • Every request receives a (non-error) response, without the guarantee that it contains the most recent write
          • 모든 클라이언트의 읽기와쓰기 요청에 대해서 항상 응답이 가능해야 함을 보증하는 것.
          • 내고장성을 가진 NoSQL은 클러스터 내에서 몇개의 노드가 망가지더라도 정상적인 서비스가 가능함.
            • 시스템 아키텍처 설계에서 말하는 고가용성(High Availability)과 유사한 개념.
          • NoSQL 솔루션
            • 가용성을 보장하기 위해 데이터 복제를 사용함.
              • 동일한 데이터를 다중 노드에 중복 저장하고, 그 중 몇대의 노드가 고장 나도 데이터가 유실되지 않도록 하는 방법임.
            • 가용성을 위한 데이터 중복 저장 방법
              • master-slave
                • 동일한 데이터를 가진 저장소를 하나 더 생성하는 방법
                • 보통, 관계형 데이터베이스 시스템에서 고가용성을 지원하기위한 솔루션.
              • Peer to Peer
                • 데이터 단위로 중복 저장하는 방법.
      • Partition Tolerance
        • 분할 허용성
          • The system continues to operate despite an arbitrary number of messages being dropped (or delayed) by the network between nodes
          • 지역적으로 분할된 네트워크 환경에서 동작하는 시스템에서 두 지역 간의 네트워크가 단절되거나 네트워크 데이터의 유실이 일어나더라도 각 지역 내의 시스템은 정상적으로 동작해야함을 의미함.
    • 대부분의 NoSQL은 기본적으로 분산환경에서 잘 동작하도록 설계됨.
      • NoSQL은 일관성, 가용성, 분할허용성가운데 두가지 속성만 을 지원하고, 나머지 한 속성은 특정 조건에만 만족하게됨.
        • 바로 이것이 CAP 정리의 핵심 중 핵심임.
          • NoSQL의 특징에 따라 달라짐.

분산시스템이란?

  • 분산시스템을 구성하는 각각의 하드웨어 or 소프트웨어를 노드(Node)라도 부름.
  • 분산시스템은 하나 or 그 이상의 다중 클러스터로 구성될 수 있음.
    • 클러스터 란?
      • 동일한 기능을 수행하는 노드들의 모음.
    • 다중 클러스터는 동일 지역 or 지역적으로 떨어진 위치에 존재가능함.
      • 클러스터간 연결은 네트워크를 기반으로 함.

결론

  • CAP 이론이란, 분산 컴퓨터 시스템을 설명하는데 사용되는 이론임.
  • NoSQL은 기본적으로 분산환경에서 잘동작하도록 설계되었으며, 일관성, 가용성, 분할허용성 가운데 2가지 속성만 지원하고 나머지 한 속성은 특정 조건에 만족하게 되어있음.
  • 신규 시스템 구현 시 NoSQL을 선택하고자 할때, 선택하려는 NoSQL에  대해서 충분히 공부 및 이해하고 시스템에 적용해야 문제가 없을듯...
728x90
300x250