본문 바로가기

데이터 중심 애플리케이션 설계12

[데이터 중심 애플리케이션 설계] 12. 데이터 시스템의 미래 [데이터 중심 애플리케이션 설계] 12. 데이터 시스템의 미래 데이터 시스템은 미래에 어떻게 되어야 할까? 신뢰할 수 있고 확장 가능하며 유지보수하기 쉽게 만드는 데이터 시스템의 미래를 고찰해보자. 1. 데이터 통합 1.1 파생 데이터에 특화된 도구의 결합 1.1.1 데이터플로에 대한 추론 같은 데이터의 사본을 여러 저장소 시스템에 유지해야 할 때 입력과 출력을 분명히 해야한다. 어디서 데이터를 처음으로 기록하는지, 어떤 표현형이 어떤 원본에서 파생되는지, 데이터를 모두 올바른 장소로 올바른 형식으로 어떻게 넣는지 등에 대해 충분히 고려해야 한다. 파생 데이터 시스템은 이벤트 로그를 기반으로 갱신하면 결정적이고 멱등성을 지녀 결함에서 복구하기가 상당히 쉬워진다. 1.1.2 파생 데이터 대 분산 트랜잭션 .. 2023. 2. 15.
[데이터 중심 애플리케이션 설계] 11. 스트림 처리 [데이터 중심 애플리케이션 설계] 11. 스트림 처리 1. 이벤트 스트림 전송 이벤트 특정 시점에 일어난 사건에 대한 세부 사항을 포함 일반적으로 일기준 시계를 따르는 타임스탬프 포함 이벤트의 부호화, 저장, 전송 텍스트 문자열이나 JSON 또는 이진 형태 등으로 부호화 가능 파일 및 관계형 테이블에 삽입 및 문서 데이터베이스로 기록하거나 저장 가능 다른 노드에서 처리하게끔 네트워트를 통해 전송 가능 생산자와 소비자 생산자(producer = publisher) : 이벤트를 만든다. 소비자(consumer = subscriber) : 이벤트를 처리한다. 스트림 시스템에서는 토픽(topic)이나 스트림으로 관련 이벤트를 묶는다. 1.1 메시징 시스템 메시징 시스템은 새로운 이벤트에 대해 소비자에게 알려준다.. 2023. 2. 11.
[데이터 중심 애플리케이션 설계] 10. 일괄 처리 [데이터 중심 애플리케이션 설계] 10. 일괄 처리 1. 시스템의 세가지 종류 1.1 서비스(온라인 시스템) 클라이언트의 요청이나 지시를 기다렸다가 요청이 들어오면 가능한 빨리 처리 후 응답을 되돌려보낸다. 응답시간과 가용성은 서비스 성능의 중요한 지표다. 1.2 일괄 처리 시스템(오프라인 시스템) 매우 큰 입력 데이터를 받아서 데이터를 처리하는 작업을 수행하고, 결과 데이터를 생산한다. 일괄 처리 작업은 수 분에서 수 일이 걸리므로 사용자가 응답을 기다리지 않고, 반복적으로 일정한 시간에 수행한다. 처리량은 중요한 성능 지표다. 1.3 스트림 처리(준실시간 시스템) 온라인과 오프라인 사이 어딘가에 있기 때문에 준실시간 처리이다. 일괄 처리 시스템처럼 요청에 대해 응답하지 않으며, 입력 데이터로부터 출력.. 2023. 2. 1.
[데이터 중심 애플리케이션 설계] 09. 일관성과 합의 [데이터 중심 애플리케이션 설계] 09. 일관성과 합의 1. 일관성 보장 동시에 데이터베이스 두 대를 본다면, 복제 방법에 상관 없이 서로 다른 데이터를 볼 가능성이 크다. 약한보장 복제 데이터 베이스는 대부분 최소한 최종적 일관성을 제공하나, 언제 수렴될지 모른다. 버그는 시스템 결함이 있거나 동시성이 높을 때만 명확하기 때문에 테스트로 발견하기 어렵다. 강한보장 데이터 시스템이 선택적으로 제공 올바르게 사용하기 쉬우나 시스템 성능이 나쁘거나 내결함성이 약할수도 있다. 2. 선형성 공통적으로 사용되는 가장 강한 일관성 모델 중 하나 시스템에 복사본이 하나만 있고 그 데이터를 대상으로 수행하는 모든 연산은 원자적인 것처럼 보이게 하는 것 원자적 일관성 (atomic consistency), 강한 일관성(.. 2023. 1. 18.
[데이터 중심 애플리케이션 설계] 08. 분산 시스템의 골칫거리 [데이터 중심 애플리케이션 설계] 08. 분산 시스템의 골칫거리 1. 결함과 부분 장애 수천 개의 노드가 있는 분산 시스템은 항상 뭔가 고장난 상태라고 가정하는게 합리적이다. 분산 시스템이 동작하게 만드려면 부분 장애 가능성을 항상 받아들이고 내결함성 메커니즘을 넣어야 한다. 즉, 신뢰성 없는 구성 요소를 사용해 신뢰성 있는 시스템을 구축해야 한다. 신뢰성 없는 IP(Internet Protocol)위에 신뢰성 높은 TCP(Transimission Control Protocal)를 두어 패킷 손실 시 재전송하고 순서에 맞춰 재조립되도록 보장해준다. 2. 신뢰성 없는 네트워크 어떤 분산 시스템은 비공유 시스템, 네트워크가 유일한 통신 수단인 다수의 장비들이다. 인터넷과 데이터센터 내부 이더넷은 비동기 패킷.. 2023. 1. 15.
[데이터 중심 애플리케이션 설계] 07. 트랜잭션 [데이터 중심 애플리케이션 설계] 07. 트랜잭션 1. 애매모호한 트랜잭션의 개념 1.1 ACID ACID는 데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질을 가리키는 약어이다. 1.1.1 원자성(Atomicity) 원자적이란 더 작은 부분으로 쪼갤 수 없는 것을 가리킨다. 시스템은 연산을 실행하기 전이나 실행한 후의 상태에만 있을 수 있으며 그 중간 상태에는 머물 수 없다. 원자성 덕분에 실패한 트랜잭션은 어떤 것도 변경하지 않았음을 알 수 있으므로 안전하게 재시도 할 수 있다. 1.1.2 일관성(Consistency) 트랜잭션이 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 유지하는 것을 말한다. 일관성(C)은 실제로는 ACID에 속하지 않고 애플리케이션의 속성.. 2023. 1. 2.
728x90
반응형