DevOps
오브젝트 스토리지 리전 간 컨테이너 복제 기능 소개
2022년 4월 29일
원문에서 보기 ↗단일 리전으로 오브젝트 스토리지(Object Storage)를 사용하고 있다면, 해당 리전 재해 발생에 취약할 수 있습니다. 이러한 취약점을 보완하려면 다른 리전으로 모든 오브젝트들을 똑같은 상태로 복제한 뒤 재해 복구(Disaster Recovery) 구성을 해야 합니다. 그러나 많은 양의 오브젝트들을 일일이 확인하여 동기화해주는 것은 굉장히 번거롭고 복잡한 작업입니다.
그렇다면 간단하게 오브젝트를 다른 리전으로 복제하는 방법은 없을까요?
NHN Cloud의 오브젝트 스토리지는 리전 간 컨테이너 복제 기능을 제공하고 있습니다. 리전 간 컨테이너 복제 기능을 사용하면 한 번의 설정을 통해 지리적으로 분리된 다른 리전으로 해당 컨테이너의 모든 오브젝트들을 주기적으로 복제할 수 있습니다.
각 리전마다 원본 컨테이너와 대상 컨테이너의 변동 사항을 감지하는 sync-daemon이 존재하며, 복제 조건(오브젝트 업로드, 삭제, 설정, 메타데이터 변경 등등)을 만족하게 되었을 때 대상 컨테이너에 반영됩니다. 따라서 컨테이너 복제 설정이 되어있다면 별도의 요청 없이 변경/추가된 오브젝트들도 자동으로 반영이 됩니다. 
정리하자면 리전 간 컨테이너 복제 기능을 사용하면 다음과 같은 이점이 있습니다.
- 콘솔을 통한 간편한 설정: 콘솔 UI를 통해 누구나 간편하게 복제 설정을 할 수 있습니다.
- 오브젝트의 메타 데이터 그대로 복제: 복제된 오브젝트의 메타 데이터는 원본과 똑같이 복제됩니다.
- 오브젝트 주기적으로 동기화: 원본 오브젝트 변경/삭제 시 복제된 오브젝트도 동일하게 반영됩니다.
리전 간 컨테이너 복제 설정하기
콘솔을 통해 한국(평촌)에서 한국(일본)으로 컨테이너 복제 설정을 해보겠습니다.
- 복제될 대상 리전에 컨테이너를 생성합니다.

- 복제할 원본 컨테이너를 선택하여 컨테이너 설정 팝업창을 띄웁니다.

- 대상 리전을 선택하고 대상 컨테이너 이름을 입력한 뒤 확인 버튼을 눌러 컨테이너 설정을 완료합니다.

- 원본 컨테이너와 대상 컨테이너의 상세 정보를 보면 컨테이너 복제 설정이 정상적으로 완료된 것을 확인할 수 있습니다.
- 원본 컨테이너

- 대상 컨테이너

- 잠시 후 컨테이너의 오브젝트가 그대로 복제된 것을 확인할 수 있습니다.
- 원본 컨테이너

- 복제 대상 컨테이너

주의 사항
컨테이너 복제 기능 사용 시 몇 가지 주의해야 할 점이 있습니다.
- 단방향 동기화만 지원하므로 복제 대상 컨테이너를 다시 다른 리전으로 복제 설정을 할 수 없습니다.

- 비동기로 복제가 진행되기 때문에 복제 설정 후 바로 복제가 되지 않을 수 있습니다.

- 복제 설정 시 대상 컨테이너에 복제할 동일한 이름의 오브젝트가 존재하면 복제되지 않습니다.

- 대상 컨테이너를 삭제하면 원본 컨테이너에서 복제 설정 해제 후 다시 복제 설정할 때까지 복제가 되지 않습니다.

- 대상 컨테이너에 복제된 오브젝트에 직접 접근하여 변경 또는 삭제할 경우 해당 오브젝트는 더 이상 동기화되지 않습니다.

- 대상 컨테이너는 원본 컨테이너와 동일한 이름으로 사용할 것을 권장합니다.

마치며
오브젝트 스토리지의 리전 간 컨테이너 복제 기능에 대해 간략하게 살펴보았습니다. 리전 간 컨테이너 복제 기능을 통해 좀 더 안전하게 데이터를 관리할 수 있습니다.
보다 자세한 내용은 Object storage 사용자 가이드를 참고해 주세요.