{{위키데이터 속성 추적}}
'''레플리케이션'''(Replication)은 [[데이터 저장]]과 [[백업]]하는 방법과 관련이 있는 [[데이터]]를 [[호스트 컴퓨터]]에서 다른 [[컴퓨터]]로 복사하는 것인데 이때 다른 컴퓨터가 반드시 떨어진 지역에 있어야 하는 것은 아니다. [[컴퓨터 네트워크]] 상태에서는 [[데이터 저장]]을 할 수 있게 하는데 로컬 데이터 물리적 기억 장치와는 완전하게 구분된다. 레플리케이션은 유명한 [[데이터베이스 관리 시스템]]([[RDBMS]], Relational DataBase Management Systems)에서 추가적으로 제공하거나 여러 대의 데이터베이스 서버의 부하를 맞추어 줄 용도로 제공한다.

레플리케이션은 남아 있는 리소스와 관련이 있는데 [[소프트웨어]] 요소나 [[컴퓨터 하드웨어|하드웨어]] 부품이 말해 주며, 이는 신뢰성, [[허용 오차]], 그리고 성능을 개선한다. 전형적으로 '레플리케이션 인 스페이스'(replication in space)와 관련이 있는데 이것은 동일한 데이터를 다수의 [[저장 장치]]에 저장하거나 동일한 계산 업무를 다수 장치에서 수행하는 것이다. 또한 '레플리케이션 인 타임'(replication in time)는 컴퓨터 계산 수행이 반복적으로 한 개의 장치에서 일어나는 것이다.

== 온라인 데이터 레플리케이션(Online data replication) ==
네트워크에서 데이터 레플리케이션, 인터넷 같은 데이터 백업이 실시간으로 일어나는 곳에서는 호스트 서버로부터 데이터를 원격 위치로 복사하는데 데이터가 변하는 순간마다 수행한다.

== 오프라인 데이터 레플리케이션(Offline data replication) ==
오프라인 데이터 레플리케이션, 데이터 파일을 백업이 원격지역에서 오프라인 상태에서 일어나는데 예를 들어 하루에 한 번 정도 주기로 실시한다. 이것은 환경에 더 우선시하며 전달량이 많고, 실시간 수행시 시스템의 성능에 영향이 미치는 경우이다.

== 분산 시스템에서 레플리케이션(Replication in distributed systems) ==
두 가지 분산 시스템에서 레플리케이션이 존재하는데 능동(active)과 수동(passive) 레플리케이션이 있다. 능동 레플리케이션은 또한 상태 머신 레플리케이션(state machine replication)이라고 알려져 있는데 수행하는 것이 동일한 요구를 매 복사 시점에서 처리하는 것이다. 반면 수동 레플리케이션은 주기적으로 요구에 의해서 한 번 복사가 이루어지고 상태가 변하여 다른 복사로 이동한다. 유일한 머신이 요구된다면 그것은 '''primary-backup''' 개념이라고 불리는 것이다. 다른 한편으로 어떤 머신이 요구에 의해 수행하면 이 때는 멀티 프라이머리(multi-primary) 개념이라고 한다. 멀티 프라이머리 개념에서 분산 동시 제어(distributed concurrency control)가 반드시 사용된다.

== 데이터베이스 레플리케이션(Database replication) ==
[[데이터베이스]] 레플리케이션 사용되는 것은 대부분 데이터베이스 관리 영역인데 보통 마스터/슬레이브 관계를 갖는 원본과 복사본 사이를 다룬다. 마스터는 변경 사항을 기록하고 그 결과는 슬레이브에게 전달된다. 슬레이브가 제공하는 메시지는 변경이 성공할 때 받는 것으로 일련의 변경 사항을 보내도록 한다. [[코다]](Coda)와 [[레이드]]의 갱신의 정보는 데이터베이스 노드에 제공되고 이어서 다른 서버에게 전달된다. 그러나 상당한 비용 증가와 복잡도 때문에 어떤 상황에서는 실용적이지 않다.

가장 직면한 문제는 다수 마스터 레플리케이션(multi-master replication)에서 충돌 방지 해결 방안이다. 예를 들어 기록의 변경이 두 개 시스템에 동시에 일어나면, 해결 방안은 많은 방법이 존재한다. 한 가지 간단한 방법은 타이밍인데 처음 얻은 데이터 반대로 나중에 얻은 데이터를 저장함으로써 해결하는 것이다. 다른 방법은 계층적 규칙을 따르는 것인데 계층이 낮은데서 변화보다 높은 곳의 변화를 우선시하는 것이다. 마지막으로 로직 설정에 따른 방법인데 설정 변경이 가능하지만 복잡하게 된다.

== 파일시스템 레플리케이션(Filesystem replication) ==
능동(실시간) [[파일 시스템]] 레플리케이션은 보통 구현이 가상 [[블록 장치]]의 업데이트 내용을 물리적 [[하드 디스크]]에 분배하는 것이다. 이런 방법으로 파일 시스템의 지원은 [[운영 체계]]가 레플리케이션을 할 수 있는데 변경이 필요 없다. 따라서 파일 시스템 코드 작업은 [[블록 장치]] 레이어 위에서 이루어진다. 가장 일반적인 방법은 [[레이드]]이고 제한적으로 로컬에 연결된 디스크만 가능하다.

대안으로 [[블록 장치]]에 업데이트가 [[컴퓨터 네트워크]]에서 레플리케이션할 수 있다. 이것의 이점은 레플리케이션 슬레이브가 위치하게 되는 물리적 원격 위치에 있어서 파괴되는 것을 피하고 유용성을 증가하는데 로컬 고장이나 재난 수준의 경우에 있어서이다. 이 같은 레플리케이션의 예는 [[리눅스]]를 위한 [[DRBD]] 모듈이 있다.

== 분산 공유 메모리 레플리케이션(Distributed shared memory replication) ==
또다른 예는 [[분산 공유 메모리]]에서 사용되는 레플리케이션인데 이것은 시스템의 많은 [[노드]]를 같은 메모리 페이지에서 공유하여 각 노드에서는 별도의 복사된 페이지를 가지고 있다.

== 레플리케이션 투명성(Replication transparency) ==
리소스가 몇 개의 위치에 레플리케이션되면 단일 리소스 사용자에게 보인다.

== 같이 보기 ==
* [[허용 오차]](Fault tolerant system)
* [[데이터 레플리케이션]]
* [[클러스터]]

== 외부 링크 ==
* 논문 {{언어링크|en}} "[http://citeseer.csail.mit.edu/677518.html Practical Considerations in Making CORBA Services Fault-Tolerant]{{깨진 링크|url=http://citeseer.csail.mit.edu/677518.html }}" by Priya Narasimhan
* 논문 {{언어링크|en}} "[http://doi.ieeecomputersociety.org/10.1109/TC.2004.1275293 Experiences, Strategies and Challenges in Building Fault-Tolerant CORBA Systems]" by Pascal Felber and Priya Narasimhan

{{전거 통제}}

[[분류:데이터 관리]]
[[분류:기억 장치]]
[[분류:데이터 동기화]]
[[분류:장애 허용 컴퓨터 시스템]]