Skip to Content
데이터 집약적 애플리케이션 설계
book

데이터 집약적 애플리케이션 설계

by Martin Kleppmann
May 2025
Beginner to intermediate
616 pages
10h 32m
Korean
O'Reilly Media, Inc.
Book available
Content preview from 데이터 집약적 애플리케이션 설계

7장. 거래

이 작품은 AI를 사용하여 번역되었습니다. 여러분의 피드백과 의견을 환영합니다: translation-feedback@oreilly.com

일부 작성자는 일반적인 2단계 커밋은 성능 또는 가용성 문제로 인해 지원하기에는 너무 비싸다고 주장했습니다. 저희는 애플리케이션 프로그래머가 항상 트랜잭션 부족을 염두에 두고 코딩하는 것보다 병목 현상이 발생할 때 트랜잭션 남용으로 인한 성능 문제를 처리하는 것이 더 낫다고 생각합니다.

제임스 코벳 외., 스패너: 구글의 전 세계 분산 데이터베이스 (2012)

데이터 시스템의 가혹한 현실에서는 많은 일이 잘못될 수 있습니다:

  • 데이터베이스 소프트웨어 또는 하드웨어는 언제든지(쓰기 작업 중에도 포함) 오류가 발생할 수 있습니다.

  • 애플리케이션은 언제든지(일련의 작업 도중에 포함) 충돌할 수 있습니다.

  • 네트워크가 중단되면 예기치 않게 애플리케이션이 데이터베이스에서 차단되거나 한 데이터베이스 노드가 다른 데이터베이스 노드에서 차단될 수 있습니다.

  • 여러 클라이언트가 동시에 데이터베이스에 글을 쓰면서 서로의 변경 내용을 덮어쓸 수 있습니다.

  • 클라이언트는 부분적으로만 업데이트되어 의미가 없는 데이터를 읽을 수 있습니다.

  • 클라이언트 간 경쟁 조건으로 인해 예상치 못한 버그가 발생할 수 있습니다.

시스템이 안정적이려면 이러한 결함을 처리하고 전체 시스템에 치명적인 장애를 일으키지 않도록 해야 합니다. 그러나 내결함성 메커니즘을 구현하는 것은 많은 작업이 필요합니다. 잘못될 수 있는 모든 것에 대해 신중하게 생각하고 솔루션이 실제로 작동하는지 확인하기 위해 많은 테스트가 필요합니다.

수십 년 동안 트랜잭션은 이러한 문제를 단순화하기 위해 선택된 메커니즘이었습니다. 트랜잭션은 애플리케이션이 여러 읽기 및 쓰기를 하나의 논리적 단위로 그룹화하는 방법입니다. 개념적으로 트랜잭션의 모든 읽기와 쓰기는 하나의 작업으로 실행되며, 전체 트랜잭션이 성공(커밋)하거나 실패(중단, 롤백)합니다. 실패하면 애플리케이션은 안전하게 재시도할 수 있습니다. 트랜잭션을 사용하면 부분적인 실패, 즉 어떤 이유로든 일부 작업이 성공하고 일부 작업이 실패하는 경우를 걱정할 필요가 없으므로 애플리케이션의 오류 처리가 훨씬 더 간단해집니다.

수년간 트랜잭션 작업을 해왔다면 트랜잭션이 당연한 것처럼 보일 수 있지만, 당연하게 생각해서는 안 됩니다. 트랜잭션은 자연의 법칙이 아니라 데이터베이스에 액세스하는 애플리케이션의프로그래밍 모델을 단순화하기 위한 목적으로 만들어졌습니다. 트랜잭션을 사용하면 데이터베이스가 대신 처리하기 때문에 애플리케이션은 특정 잠재적 오류 시나리오와 동시성 문제를 무시할 수 있습니다(이를 안전 보장이라고 부릅니다).

모든 애플리케이션에 트랜잭션이 필요한 것은 아니며, 때로는 트랜잭션 보장을 약화하거나 ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

머신러닝 시스템 설계

머신러닝 시스템 설계

칩 후옌
견고한 데이터 엔지니어링

견고한 데이터 엔지니어링

조 라이스, 맷 하우슬리

Publisher Resources

ISBN: 9798341653504Supplemental Content