1부와 2부에서는 디스크에 저장된 데이터의 레이아웃부터 결함이 있는 상황에서의 분산된 일관성의 한계까지, 분산 데이터베이스로 가기 위해 고려해야 할 모든 주요 사항들을 살펴봤다. 하지만 1, 2부에서는 애플리케이션이 단일 데이터베이스를 사용한다고 가정했다.
사실 데이터 시스템은 더 복잡하다. 큰 애플리케이션에서는 데이터를 접근하고 처리하는 데 다양한 종류의 데이터베이스 및 시스템이 필요하다. 하지만 모든 요구사항을 만족하는 하나의 데이터베이스는 없기 때문에, 대개 여라 다른 데이터스토어, 색인, 캐시, 분석 시스템 등 몇 가지를 조합해서 사용하고 한 저장소에서 다른 저장소로 데이터를 이동하는 메커니즘을 구현한다.
3부에서는 데이터 모델도 다르고 최적화도니 접근 양식도 다른 여러 데이터 시스템을, 일관성 있는 하나의 애플리케이션 아키텍처로 통합하는 문제에 대해 검토한다. 실제로 복잡한 시스템에서 수행해야 하는 가장 중요한 일 중 하나가 서로 다른 시스템을 통합하는 작업이다.
레코드 시스템과 파생 데이터 시스템
데이터를 저장하고 처리하는 시스템은 크게 두 분류로 나눌 수 있다.
- 레코드 시스템: 레코드 시스템은 믿을 수 있는 데이터 버전을 생성한다. 레코드 시스템은 source of truth(진실의 근원)이라고도 한다. 새로운 데이터가 들어오면 레코드 시스템에 먼저 저장되며, 일반적으로 정규화를 거쳐 정확하게 표현된다. 만약 레코드 시스템과 다른 시스템 간에 차이가 난다면 정의에 따라 레코드 시스템이 옳다.
- 파생 데이터 시스템: 파생 데이터 시스템에서 데이터는 다른 시스템에 존재하는 데이터를 가져와 특정 박식으로 변환하고 처리한 결과다. 파생 데이터는 잃게 되더라도 원천 데이터로부터 다시 생성할 수 있다. 기존 데이터를 복제한다는 의미에서 redundant(중복)이다. 하지만 파생 데이터는 읽기 질의 성능을 높이는 데 종종 필수적이다(대표적인 예가 캐시이다). 파생 데이터는 대개 비정규화 과정을 통해 생성한다. 단일 원천 데이터로 여러 데이터셋을 추출해 각 데이터셋마다 서로 다른 “관점”에서 데이터를 본다.
아키텍처 상 모든 시스템이 레코드 시스템과 파생 데이터 시스템을 명확히 구분하지는 않지만 구분을 해 놓으면 시스템 전체 데이터플로가 명확해진다.
레코드 시스템과 파생 데이터 시스템은 데이터베이스에서 결정하는 것이 아닌, 애플리케이션에서 어떻게 사용할지에 따라 결정되는 것들이다. 데이터베이스 또는 질의 언어들은 단순히 도구일 뿐이다.
시스템 아키텍처를 망치지 않고 명료성을 갖추기 위해서는 데이터가 어떤 데이터로부터 파생됐는지를 명확히 해야 한다. 이 부분이 바로 3부 전반에 걸쳐 다룰 주제다.
3부 개요
- 10장에서는 맵리듀스와 같은 일괄 처리 방식 데이터플로 시스템을 살펴보고 이와 관련된 좋은 도구가 어떤 것이 있는지, 그리고 대규모 데이터 시스템을 구축하기 위한 원리가 무엇인지 알아본다.
- 11장에서는 10장과 동일한 아이디어를 데이터 스트림에 적용해 본다. 이 방식을 사용하면 낮은 지연으로 일괄 처리와 동일한 작업을 수행할 수 있다.
- 12장에서는 이 책의 결론으로 미래에 신뢰할 수 있고 확장 가능하며 유지보수하기 쉬운 애플리케이션을 구축하기 위해 앞서 언급한 도구들을 어떻게 사용해야 하는지에 대한 아이디어를 모색한다.
Reference: http://www.yes24.com/Product/Goods/59566585
데이터 중심 애플리케이션 설계 - YES24
데이터는 오늘날 시스템을 설계할 때 마주치는 많은 도전 과제 중에서도 가장 중심에 있다. 확장성, 일관성, 신뢰성, 효율성, 유지보수성과 같은 해결하기 어려운 문제를 파악해야 할 뿐 아니라
www.yes24.com
'백엔드 > 분산 시스템' 카테고리의 다른 글
[데이터 중심 애플리케이션 설계] 09장. 정족수와 합의 (0) | 2023.02.19 |
---|---|
[데이터 중심 애플리케이션 설계] 08장. 분산 시스템의 골칫거리 (0) | 2023.02.12 |
[데이터 중심 애플리케이션 설계] 07장. 트랜잭션 (0) | 2023.02.05 |
[데이터 중심 애플리케이션 설계] 06장. 파티셔닝 (0) | 2023.01.29 |
[데이터 중심 애플리케이션 설계] Part 1. 데이터 시스템의 기초 (0) | 2023.01.22 |