샤딩 (Sharding)

Moon Blue의 IT 로그 📝·2023년 3월 21일
0
post-thumbnail
post-custom-banner

샤딩(Sharding)은 대규모 데이터 처리 시스템에서 사용되는 기술로, 데이터를 분산 저장하고 처리하는 것을 의미합니다.

✅ 특징

  • 데이터 분산 저장 : 데이터를 논리적으로 파티션으로 나누어 서로 다른 서버에 저장합니다.

  • 데이터 분산 처리 : 데이터 처리 작업을 각 파티션별로 분산하여 처리합니다.

  • 고가용성 : 각 샤드는 다른 서버에 저장되므로, 하나의 서버가 고장나도 다른 서버에서 처리를 계속할 수 있습니다.

  • 수평 확장성 : 데이터 처리량을 늘리기 위해 서버를 추가하여 확장할 수 있습니다.

✅ 장점

  • 대규모 데이터 처리 가능 : 샤딩을 사용하면 대규모 데이터 처리가 가능해집니다. 데이터를 여러 서버에 분산하여 처리하기 때문에, 단일 서버의 한계를 극복할 수 있습니다.

  • 고가용성 : 데이터를 여러 서버에 분산하여 저장하기 때문에, 하나의 서버에 장애가 발생하더라도 다른 서버에서 처리를 계속할 수 있습니다.

  • 수평 확장성 : 서버를 추가하여 처리량을 늘릴 수 있으므로, 시스템의 확장성이 좋습니다.

  • 분산 처리 : 데이터 처리 작업을 각 샤드별로 분산하여 처리하기 때문에, 전체 시스템의 처리량을 높일 수 있습니다.

✅ 단점

  • 데이터 일관성 관리 : 데이터를 여러 서버에 분산 저장하기 때문에, 일관성을 유지하는 것이 어렵습니다. 데이터 일관성을 유지하기 위해 추가적인 작업이 필요합니다.

  • 구현 복잡도 : 샤딩을 구현하기 위해서는 데이터베이스 스키마를 샤딩에 맞게 설계해야 하며, 샤딩 키를 선정하는 등의 작업이 필요합니다. 이에 따라 구현 복잡도가 높아집니다.

  • 조인 연산 : 여러 샤드에 걸쳐 있는 데이터를 합치는 조인 연산이 어렵습니다. 이에 대한 해결책으로는 분산 데이터베이스의 일부로 조인 작업을 수행하는 것이 있습니다.

  • 데이터 이전 : 샤딩된 데이터를 샤드 간 이전할 때는 복잡한 작업이 필요합니다. 이를 위해서는 데이터 이전을 위한 적절한 알고리즘이나 도구를 사용해야 하며, 이 과정에서는 일시적인 데이터 불일치가 발생할 수 있습니다.

  • 분산 환경에서의 보안 : 분산 환경에서는 데이터가 여러 서버에 저장되기 때문에, 보안 관리가 어려울 수 있습니다. 따라서 보안 관리가 중요한 시스템에서는 적절한 보안 대책이 필요합니다.

  • 비용 : 샤딩을 구현하려면 여러 대의 서버와 관리 인프라가 필요합니다. 이에 따라 시스템의 구현 비용이 증가할 수 있습니다.

  • 확장성 한계 : 샤딩을 사용하면 서버를 추가하여 시스템을 확장할 수 있지만, 서버의 수가 일정 이상 넘어가면 샤딩 자체가 병목이 될 수 있습니다. 이에 따라 적절한 샤딩 키를 선택하는 것이 중요합니다.

✅ 결론

샤딩은 대규모 데이터 처리 시스템에서 유용한 기술이지만, 구현하기 위해서는 일관성 유지, 조인 연산 등 여러 가지 문제를 해결해야 합니다. 또한 보안 관리, 비용, 확장성 등에도 주의해야 합니다. 따라서 적절한 상황에서 사용해야 하며, 구현하기 전에 장단점을 고려하여야 합니다.

profile
What a Beautiful World~ 🌏
post-custom-banner

0개의 댓글