데이터 중심 애플리케이션 설계10
일괄 처리 개요 10장에서는 요청-응답 방식의 온라인 시스템과 대비되는 배치 처리 시스템에 대해 다룹니다. 배치 처리는 대규모 데이터를 처리하여 파생 데이터를 생성하는 핵심 구성 요소입니다. 1. 배치 처리의 정의와 특징 핵심 개념 고정된(bounded) 크기의 대량 데이터를 입력으로 처리 입력 데이터를 수정하지 않고 새로운 데이터...
일괄 처리 개요 10장에서는 요청-응답 방식의 온라인 시스템과 대비되는 배치 처리 시스템에 대해 다룹니다. 배치 처리는 대규모 데이터를 처리하여 파생 데이터를 생성하는 핵심 구성 요소입니다. 1. 배치 처리의 정의와 특징 핵심 개념 고정된(bounded) 크기의 대량 데이터를 입력으로 처리 입력 데이터를 수정하지 않고 새로운 데이터...
일관성과 협의 분산 시스템에서 가장 어려운 문제 중 하나는 여러 노드에 걸쳐 있는 데이터를 일관성 있게 유지하는 것입니다. 네트워크 지연, 노드 장애, 메시지 손실 등의 문제가 언제든 발생할 수 있는 환경에서 모든 노드가 동일한 상태를 유지하기 위해서는 많은 사항을 고려해야합니다. 최종 일관성의 함정 대부분의 복제된 데이터베이스는 최종 일관성...
분산 시스템의 골칫거리 분산 시스템에서는 언제나 문제가 일어날 수 있다. 분산 시스템을 다루는 것은 한 컴퓨터에서 실행되는 소프트웨어를 작성하는 일과는 근본적으로 다르다. 서버 개발자가 분산 환경에서 마주하게 되는 가장 큰 도전은 부분 실패의 비결정적 특성을 다루는 것이다. 분산 시스템에서 시스템이 커질수록 구성 요소 중 하나가 고장날 가능성도...
트랜잭션 트랜잭션이란 무엇인가 트랜잭션은 여러 데이터베이스 작업을 하나의 논리적 단위로 묶어서 처리하는 메커니즘이다. 시스템에 오류가 발생하더라도 데이터베이스가 일관된 상태를 유지할 수 있도록 보장한다. ACID 속성 트랜잭션의 안전 보장은 ACID라는 네 가지 속성으로 설명된다: 원자성 (Atomicity) 트랜잭션 내의 모든 작업이 전...
파티셔닝 파티셔닝 개요 파티셔닝의 정의와 목적 파티셔닝(Partitioning)은 대규모 데이터셋을 여러 작은 부분집합으로 나누어 여러 노드에 분산 저장하는 기술입니다. 이는 단일 머신으로는 처리하기 어려운 대규모 데이터나 높은 쿼리 처리량을 효과적으로 관리하기 위한 핵심 전략입니다. 주요 목적: 확장성: 데이터와 쿼리 부하를 여러 노...
Simple Design 기반 강의: 인프런 Simple Design 강좌 Simple Design 이란? Simple Design은 최소한의 구성요소로 중복 없는 코드를 작성하는 설계 철학입니다. 복잡함을 줄여 더 빠른 개발과 유지보수성 향상을 목표로 합니다. 좋은 코드의 기준 1. 테스트 통과 자동화된 테스트를 만드는 팀에...
복제 데이터 복제란? 데이터 복제는 네트워크로 연결된 여러 머신에 동일한 데이터의 복사본을 유지하는 것을 의미합니다. 복제의 목적 데이터 복제를 사용하는 주요 이유는 다음과 같습니다: 신뢰성 향상: 하드웨어 장애나 소프트웨어 오류로 인한 데이터 유실을 방지합니다. 여러 복제본을 유지함으로써 단일 장애점을 제거할 수 있습니다. 가용성 증대...
테스트 주도 개발 후기 배경 TDD(Test-Driven Development)라는 개념은 알고 있었지만, 실제로 어떻게 적용해야 하는지 막막했습니다. 특히 “테스트를 먼저 작성한다”는 것이 현실적으로 가능한지, 정말 효과적인지에 대한 의문이 있었습니다. 그러던 중 TDD의 창시자인 켄트 백의 원서를 읽어보게 되었습니다. 핵심 메시지 TDD는 ...
부호화와 발전 데이터 구조가 메모리 표현에서 바이트 시퀀스로 변환되는 방법과 그 역변환 방법을 다룸 인코딩과 디코딩 인코딩: 인메모리 데이터를 바이트 시퀀스로 변환하는 과정. 직렬화(serialization) 또는 마셜링(marshalling)이라고 부릅니다. 디코딩: 바이트 시퀀스를 다시 인메모리 표현으로 변환하는 과정으로 파싱...
저장소와 검색 데이터베이스의 기본적인 역할 데이터 저장 요청 시, 저장된 데이터 돌려주기 저장 엔진 아키텍처 해시 인덱스 : 키-값 쌍을 파일에 추가하고, 인메모리 해시 맵으로 각 키의 데이터 오프셋을 저장 컴팩션 : 로그에서 중복된 키를 버리고 각 키에 대한 최신 업데이만 유지해서 디스크 공간 회수 SS Table ...