본문 바로가기

분류 전체보기

(11)
Centralized vs Distributed Centralized 경제적으로 확장하는 데 성공적 가용영역 장애로 인해 서비스를 복제하지 못하는 경우 서비스 중단이 발생할 수 있음 개인정보 보호 및 컴플라이언스 측면에서 문제가 될 수 있음 Distributed ex) block chain 큰 데이터로 확장할 수 있음 실시간 서비스가 가능해짐 ( 장애가 있어도 다른 곳에서 서비스를 하면 되기 때문) 엣지 컴퓨팅 작업으로 과부화를 줄일 수 있음 BFT(Byzantine Fault Tolerance)? 비잔틴의 장군들이 흩어져서 성을 공격할 때, 장군들이 동시에 공격해야만 승리할 수 있다. 흩어져있기 때문에 공격 시간을 정하기 위해선 메세지를 주고 받아야함 이 때 배신자가 있어서 정확한 시간을 공유할 수 없는 경우, 누가 첩자인지 찾아낼 방법이 없음 어떻..
CAP / PACELC 이론 CAP Consistency Availability Partition tolerance Consistency : 같은 시간에 조회하는 데이터는 항상 동일한 데이터임을 보증하는 것을 의미 Availability : 몇 개의 노드가 망가지더라도 정상적인 서비스가 가능하는 것을 의미 Partition tolerance : 분할된 네트워크 환경에서 동작하는 시스템에서 네트워크 데이터의 유실이 일어나도 각 지역내의 시스템은 정상적으로 동작해야하는 것을 의미 데이터 관리 시스템일 수록 3가지를 모두 수용할 수는 없고 그 중 2개를 만족하는 것을 목표로 함 CP : 하나의 노드가 문제가 있다면 트랜직션은 실패함 AP : Consistency가 깨지게됨 CA : 네트워크 장애가 절대 일어나지 않는 구조는 불가능함 ->..
Redis에서 Replica가 느려도 되는 이유 master가 하는 일이 replica가 데이터를 처리하는 단계보다 많기 때문에
좋은 샤딩 키란? 메타 데이터를 분산 데이터 베이스에 샤딩하여 저장하는데 샤딩을 하기위해 좋은 키란 무엇일까? -> 분산 불균형을 막도록 하는 키 Cardinality : shard key의 범위가 충분히 넓은가 특정 스토리지를 제외하고 나머지 스토리지는 놀고 있음 Frequency : shard key가 특정 값에 치중되어 있지 않은가? 특정 스토리지에만 데이터가 많이 쌓임 Monotonically changing key : shard key가 특정 방향으로 커지는 값은 아닌가? 가장 마지막 스토리지에 최신 데이터가 쌓이게 됨 dir 을 기준으로 샤딩할 경우 file을 기준으로 샤딩할 경우 dir/file을 기준으로 샤딩할 경우 단점 : Listing에 대한 부담이 존재하게됨 -> 전체 디비를 조회하는것을 제외하고는 답..
Erasure coding Fault tolerance를 보장함과 동시에 스토리지의 저장 공간 효율성을 높이기 위해 설계된 데이터 복제 방식 데이터를 사용되는 알고르짐에 따라 n개의 block들로 나눈다 Erasure code 코덱을 사용하여 K개의 Parity block을 생성 사용가능한 알고리즘 Reed Solomon (RS) : 최대 손실 허용 갯수가 n개와 k개에 따라 달라짐 -> RAID에서 사용중인 기법 XOR : 손실을 허용하는 갯수 1개의 블록이기 때문에 제한적임 기본적으로 데이터를 저장할 경우 3 copy를 두는 데 (ex : master - slave - slave) 이럴경우 데이터가 쌓이면 쌓일 수록 급격하게 커지기 때문에 많은 곳에서 사용중 단점 EC를 사용하면 복잡성이 추가되고 장애 복구 비용이 많이 들게됨..
Block Storage 정의 : 데이터를 별도의 조각으로 분리해 저장하는 방식 단일 데이터 경로에 의존하지않음 각 블록은 독립적으로 존재하며 파티션으로 분할될 수 있음 장점 : 데이터 관리에 용이, 데이터를 서로 다른 운영체제에 액세스할 수 있음 단점 : 비용이 많아질 수 있음, 메타 데이터를 처리하는 기능이 제한적이여서, 애플리케이션 수준이나 데이터베이스 수준에서 취급해야함 각 블록은 블록이 저장된 위치를 가르키는 고유의 주소를 갖고있어서 주소만 알고 있다면 분산 저장된 데이터를 찾아 하나의 데이터로 재구성 할 수 있음
Object Storage 정의 : 오브젝트 기반의 스토리지 flat 구조 object 단위로 나뉘며 단일 repository에 보관 애플리케이션에서 고유한 주소를 기준으로 개별 데이터 오브젝트를 식별 장점 : 단순한 HTTP API 필요 , 확장에 유리, 퍼블릭 클라우드 스토리지 적합, 빠른 데이터 검색 단점 : 오브젝트는 수정이 불가능, 오브젝트가 작성되는 데 시간이 오래 걸림, 자주 바뀌는 데이터의 경우 적합하지 않음 오브젝트 스토리지의 활용 대규모 비정형 데이터에 낮은 빈도로 접근하는 환경 HDFS(Hadoop Distributed File System Ceph
Redis - Master / Replica 통신 과정 저번 글에서는 Master와 Replica에 대해서 어떻게 fsync와 psync가 일어나는 지 알아보았으니 이번에는 Master과 Replica가 서로 어떻게 통신하는 과정을 그림으로 설명하려고 한다. 일단 Redis의 기본 배경부터 설명하고 가면 기본적으로 redis는 총 4개의 노드로 구성된다 . 1개의 Master, 2개의 Replica를 가지고 1개의 Sentinel으로 구성되는 데 아래 그림에서는 Master와 Replica의 통신과정을 설명하기위해서 Sentienl은 생략했다. Master를 기준으로 봤을 때 Server와 client를 구분해야한다. 기본적으로 server에게 명령어를 던져주는 존재를 Redis에서는 Client라고 보고 있어서 만약 Server-Replica가 기준이 된다..