백업과 이중화의 차이
세계 백업의 날은 보통 만우절 전날, 모두가 백업을 한 번 씩은 하자라는 의미를 가지고 기념일로 제정한 것이라고 합니다. 보통 우리는 백업이라는 것이 동일한 데이터를 중복 저장해 놓는 것이기 때문에 "비효율 적이다."라는 생각을 하기 쉽지만, 사실 공식적인 통계 이외에도 정말 많은 기업들이 백업의 부재로 인해 데이터가 소실되는 경우가 많습니다.
이번에는 제가 다른 사이트에 기고했던 글을 업로드 하였으니 한번 확인해 보시고 데이터 안전을 고려할 때 어떤 방식이 좋을 지를 고민해 보시는 것도 좋을 것 같습니다.
IT에서는 꽤 많은 사건 사고가 일어납니다. 중단, 화재, 먹통 등등..
특히 최근 특정 업체의 서비스가 중단되어 이슈가 된 이후, 많은 분들이 백업에 대한 관심을 보였습니다.
이로인해 기업의 담당자분들이 이중화와 백업에 대해서 많은 관심을 가지게 되었습니다.
물론 전문적으로 들어가면 많은 단어들과 정의 들에 헷갈려 하시겠지만, 이번 글에서는 이중화와 백업에 대한 가장 기초적인 의미들을 다루어 보고, 백업에 대한 설명을 하려고 합니다.
처음 접해보시거나 관심이 없으셨던 분들은 이중화와 백업이 동일하다고 생각하시는 분들이 있습니다.
심지어, 현업에 계시는 분들도 혼동하시는 분들이 있습니다만, 사실 이중화와 백업은 장애 극복이라는 개념에서는 동일한 목적을 가지고 있습니다.
이중화는 동일한 서버 두 개를 서로 다른 위치에 놓고 동기화(Sync)하면서,
무중단 서비스 또는 부하를 분산하는 등의 목적으로 구성 됩니다. 서버 이중화는 구성하는 방식에 따라 두 개의 방식으로 나눌 수 있습니다.
장애극복은 Active(활성화)와 Standby(대기중)인 두 개의 서버를 두고, 한 개의 서버에서 서비스를 하면서 Standby인 서버에 데이터를 동기화 합니다. Active인 서버가 fail(장애발생)되면, 헬스체크를 하던 컨트롤러 (또는 네트워크)가 다른쪽 서버에 정보를 이관하면서 Active로 전환 시킵니다. 보통 장애 극복은 무중단 서비스를 하기 위해 구성되며, 이중화 구성의 가장 일반적인 방식 입니다.
부하분산은 말 그대로 유입되는 트래픽을 효과적으로 분산하기 위해 두 개 이상의 서버를 동기화 시키고 고르게 분산합니다. 서버의 상태는 모두가 Active 상태이며, Load Balancer가 가장 핵심적인 역할을 합니다.
※ Load Balancer (로드 밸런서)는 부하를 분산시켜주는 장치로서, L4 스위치와 같은 물리적 장비들이 역할을 하기도 하지만 프로그램이나 솔루션으로 기능이 제공 되기도 합니다.
이중화 서비스는 서버 외에 서버에 들어가는 컨트롤러나 PSU(전원공급장치)에도 적용할 수 있습니다.
백업은 데이터를 다른 공간에 중복 보관하도록 구성하는 서비스입니다.
가장 간단하게는, 우리가 가지고 있는 휴대폰에 있는 사진들을 잃어버리지 않기 위해 구글 드라이브 같은 곳에 복사해 놓는 것도 백업이라고 부릅니다. 기업에서의 백업도 단어들이 어려울 뿐이지 목적은 비슷합니다. 데이터를 잃지 않기 위해 구성하는 장애 조치 중에 하나이죠.
백업은 장애 극복 조치 중에 하나이기는 하지만, 이중화와는 조금 다른 목적을 가지고 있습니다. 중단된 시간이 몇시간이든 장애가 발생하기 직전까지의 데이터가 소실되지 않았다면 백업을 성공적으로 한 것이라고 할 수 있습니다.
백업은 보통 현재 사용중인 데이터를 모두 복제하여 가지고 있는것부터, 이미 지워진 이전 데이터들도 보유하고 있습니다. 이미 지워졌거나 실수로 지워진 데이터를 복구하기 위하여 전문 복구업체를 찾지 않아도, 백업된 공간(스토리지) 내에서 원하는 데이터를 찾을 수 있게 되지요. 결국, 실시간으로 고객이 원하는 데이터를 제공해야 하는 무중단 서비스와는 다르게, 서비스에서 생산된 데이터가 온전히 보관되어 있어야 하는 (심지어 삭제된 파일까지) 것이 백업과 이중화의 차이라고 볼 수 있을 것 같습니다.
※DR(Disaster Recovery)의 관점에서 보면 RTO나 RPO에 따라 백업이 이중화와 비슷한 개념이 될 수도 있습니다.
위에서 보듯, 이중화는 서버의 무중단 서비스 혹은 트래픽 분산을 위해 구성하는 일반적인 구성 방식이며, 백업은 스토리지 카테고리에서 데이터가 소실되지 않고 이전 데이터를 보존하기 위해 구성 됩니다. 무중단 서비스를 하려면 서버의 이중화 중에 Failover 방식을 고려해 보시고, 데이터를 보존하려면 그림 상의 아래 부분 처럼 2차,3차 백업을 통해 데이터를 보존하는 방식을 고려해 보아야 합니다. 중요한 데이터를 다루면서 무중단이어야 하는 서비스를 할 경우, 이중화와 백업을 모두 구성하는 방식을 사용합니다.
트래픽이 많이 필요한 대규모 서비스라면 부하분산으로 구성한 서버를 failover로 구성하고, 데이터는 2중 3중으로 백업을 구성하게 됩니다. 이렇게 되면 필요한 서버와 스토리지가 굉장히 많아지기 때문에 엄청난 비용을 부담해야 합니다. 그렇기 때문에 대규모 서비스를 하는 것이 아니라면 보통은 간단한 백업 구조를 구성하거나, 클라우드를 이용합니다.
먼저, 이중화는 서비스의 무중단이 목적이기 때문에 서비스를 지속적으로 해야 하는 목적의 인프라가 아니라면 이중화는 필수가 아닐 수도 있습니다. 상황에 따라서는 데이터 저장만을 필요로 하는 경우도 있지요.
하지만, 기업의 중요한 데이터를손실 없이 보관하려면 백업은 필수입니다. 특히나, 용량이 적은 초기에 백업을 도입해 놓는 것이 결국 데이터를 안전하게 보관할 수 있는 최고의 방법 입니다.
데이터를 보관하는 스토리지 장비는 디스크의 수명이 데이터와 가장 밀접하게 연관되어 있기 때문에, 읽기 쓰기를 많이 하면 할수록 디스크의 수명이 줄어들게 됩니다. 백업은 디스크의 읽기와 쓰기를 가장 많이 하는 작업 중에 하나이기 때문에, 수명을 연장시키기 위해서는 다양한 방식의 기술이 존재합니다. 백업 뿐만 아니라 반도체의 특성 상 수명이 다하면 하드에 비해 복구가 훨씬 어려운 SSD를 사용하는 올플래시 스토리지의 경우에도 수명을 늘리기 위해 이런 기능들을 사용 합니다.
중복제거는 동일한 바이너리 값들을 그룹으로 묶어 하나의 공간만 차지하도록 하여 데이터의 용량을 줄입니다. 이를 통해 용량을 많이 사용할 수 있을 뿐만 아니라 읽기쓰기도 줄일 수 있어 스토리지 디스크 관리에 효과적입니다.
압축은 우리가 아는 대로 ZIP으로 압축하는 것처럼 파일을 압축시켜 보관 합니다. 데이터를 꺼낼 때는 다시 압축을 풀어 live 하게 됩니다. 속도가 느려진다고는 하나, 최근의 압축 방식은 속도에 거의 차이가 없을 정도 입니다.
위 두가지 모두 효과적으로 디스크를 관리할 수 있는 방법 중에 하나이나, 원본 데이터를 변조시키기 때문에 원본에 대한 정합성을 필수로 요구하는 곳에서는 기능 사용에 대해 신중할 필요가 있습니다.
지금까지 백업과 이중화에 대해 알아보았는데요,
사실 장비 도입 시에 백업과 이중화에 대해 잘 모르시거나 아니면 필요성을 못 느껴서 고려하지 않으시는 분들이 많습니다. 물론, 비용적으로 부담이 되시는 부분이 가장 크기는 하겠지만, 위에서도 언급 하였듯이 초기부터 고려하지 않았다면 장애가 발생했을 때 발생하는 시간과 비용이 더 크게 될 수 있다는 것을 염두에 두시는 것이 좋을 것 같습니다.