[블록체인 용어 사전] 샤딩(Sharding)이란?
1. 샤딩(Sharding)이란?
어원이 되는 샤드(shard)의 뜻을 먼저 살펴보면, 조각, 파편이라는 의미를 가지고 있습니다.
그래서 샤딩(Sharding)은 조각내다, 파편화하다라는 뜻을 가집니다.
샤딩이라는 용어가 조각내다라는 뜻에서 파생되어 기술 용어로 사용될 때, IT업계에서 사용하던 용어였습니다.
주로 데이터베이스 분야에서 사용하던 기술이죠.
바로 데이터를 조각내 분산 저장하는 데이터 처리 기법입니다.
조금 더 자세히 설명하자면, 샤딩은 일괄적 관리가 힘든 거대 데이터베이스나 네트워크를 작게 나눠서 저장하고 관리하는 방법입니다.
샤딩을 통해 데이터를 분산 저장하면 노드의 무게를 줄여 데이터 처리 속도를 향상시킬 수 있습니다.
샤드는 샤딩을 통해 분할된 데이터 조각으로, 분산 데이터의 저장 공간을 의미하기도 합니다.
샤드 서버에는 샤드 각각에게 일을 분배하는 라우팅 기능을 가진 몽고가 존재합니다.
이와 동일한 메커니즘을 지닌 샤딩은 DB사업과 네트워크 기반 플랫폼 사업 등에서 유용하게 활용되고 있습니다.
활용되는 분야에 따라서 데이터베이스 샤딩, 네트워크 샤딩, 연산 샤딩 등 다양한 종류로 분류할 수 있습니다.
2. 샤딩 장점
샤딩의 장점을 크게 두가지로 정리해보면 아래와 같습니다.
▶ 데이터 처리 속도
샤딩의 가장 큰 장점은 데이터 처리 속도를 월등히 향상시키는 것입니다.
만약 100만큼의 데이터가 존재하고 100개의 노드가 있다면, 기존 블록체인 방식에서는 100개의 노드가 100만큼의 데이터를 모두 공유하여 처리합니다.
하지만 샤딩을 활용할 경우 데이터 100을 100개로 쪼개어 노드 1개당 1만큼의 데이터만 처리합니다.
이로 인해 노드에 가해지는 데이터 부하는 작아지고 데이터 처리 속도는 향상됩니다.
▶ 탈중앙화 및 보안성 확보
샤딩의 두번째 장점은 탈중앙화 및 보안성 확보입니다.
샤딩을 사용하면 노드가 많아지며 여러 저장소에 데이터가 나뉘어 저장됩니다.
중앙 데이터 저장소가 없는 탈중앙화 저장방식은 해킹 취약점을 낮춥니다.
그로 인해 바이러스 침투 및 해킹으로부터 보안성을 확보할 수 있습니다.
3. 샤딩의 문제점
샤딩은 다양한 장점도 존재하지만 몇가지 문제점도 존재합니다.
▶ 복잡성
샤딩은 데이터 처리 속도를 빨라 효율성이 높지만, 여러 곳에 데이터가 분산되어 있기 때문에 데이터를 조합하고 찾는 과정은 복잡합니다.
데이터 하나를 출력하기 위해서는 여러 노드가 서로 정보를 전송하고 참조하는 과정이 필요합니다.
▶ 데이터 처리 지연
샤드 간의 커뮤니케이션이 너무 빈번하게 일어나면 오히려 데이터 처리가 지연되기도 합니다.
시스템 전체적인 안정성은 샤딩을 통해 강화할 수 있지만, 샤드 간 불균형이 일어나 저장한 데이터 비율이 변화한다면 재배치가 필요한 상황이 발생할 수 있습니다.
이 과정에서 트래픽까지 높아진다면 샤딩 최적화는 더욱 어려워집니다.
위와 같은 샤딩 문제점들을 해결하기 위해서는 샤드의 수를 늘리는 스케일업이 필요합니다.
다만 서비스 정지없이 진행하는 스케일업은 시스템 전체가 망가질 수 있는 리스크가 존재합니다.
4. 샤딩을 사용하는 가상화폐
샤딩을 사용하는 대표적인 가상화폐는 총 4개입니다.
알트코인의 대장으로 불리는 이더리움 뿐만 아니라 니어 프로토콜, 폴카닷, 질리카가 있습니다.
이외에도 여러 가상화폐가 샤딩 기술을 활용하고 있습니다.
블록체인 트릴레마에 의하면, 완벽한 이론은 아직 나타나지 않은 것 같습니다.
상용화했을 때 문제없을 정도의 보안과 상용화했을 때 의미가 훼손되지 않을 정도의 탈중앙화, 상용화에서 무리 없는 속도와 모든 사람이 이용할 수 있을 정도의 확장성으로 균형을 맞춘 프로젝트가 가장 좋은 블록체인 프로젝트가 아닐까 생각이 되네요.
감사합니다.