데이터 저장소를 선택하는 기준

이 문서에서는 데이터 저장소를 평가할 때 사용할 비교 조건에 대해 설명합니다. 이 문서의 목표는 사용자의 솔루션 요구 사항을 충족하는 데이터 스토리지 유형을 판단할 수 있도록 지원하는 것입니다.

일반적인 고려 사항

선택할 때 다음 고려 사항을 염두에 두어야 합니다.

기능적인 요구 사항

  • 데이터 형식: 저장하려는 데이터 형식은 무엇인가요? 일반적인 유형에는 트랜잭션 데이터, JSON 개체, 원격 분석, 검색 인덱스, 플랫 파일 등이 있습니다.
  • 데이터 크기: 저장해야 하는 엔터티의 크기는 얼마인가요? 이러한 엔터티는 단일 문서로 유지 관리해야 하나요, 아니면 여러 문서, 테이블 및 컬렉션 간에 분할할 수 있나요?
  • 크기 조정 및 구조: 필요한 스토리지 용량의 전체 크기는 어떻게 됩니까? 데이터를 분할할 예정인가요?
  • 데이터 관계: 데이터가 일대다 또는 다대다 관계를 지원해야 하나요? 관계가 데이터의 중요한 부분인가요? 동일한 데이터 세트 내에서 또는 외부 데이터 세트에서 데이터를 조인하거나 결합해야 하나요?
  • 일관성 모델: 추가 변경이 이루어지기 전에 한 노드에서 수행된 업데이트가 다른 노드에 표시되는 것이 얼마나 중요합니까? 최종 일관성으로 만족할 수 있나요? 트랜잭션에서 ACID가 보장되어야 하나요?
  • 스키마 유연성: 데이터에 적용할 스키마 종류는 무엇인가요? 고정된 스키마, 쓰기 시 스키마 방식, 읽기 시 스키마 방식 중 어느 것을 사용할 예정인가요?
  • 동시성: 데이터를 업데이트하고 동기화할 때 어떤 종류의 동시성 메커니즘을 사용하시겠습니까? 애플리케이션이 충돌할 수 있는 많은 업데이트를 수행합니까? 그렇다면 레코드 잠금 및 비관적 동시성 제어가 필요할 수 있습니다. 비관적 동시성 제어 대신 낙관적 동시성 제어를 지원할 수 있나요? 그렇다면 간단한 타임스탬프 기반 동시성 제어가 충분합니까, 아니면 다중 변환 동시성 제어의 추가 기능이 필요한가요?
  • 데이터 이동: 솔루션이 ETL 작업을 수행하여 데이터를 다른 저장소 또는 데이터 웨어하우스로 이동해야 합니까?
  • 데이터 수명 주기: 데이터가 한 번, 읽기 전용인가요? 데이터를 쿨 또는 콜드 스토리지로 이동할 수 있나요?
  • 기타 지원되는 기능: 스키마 유효성 검사, 집계, 인덱싱, 전체 텍스트 검색, MapReduce 또는 기타 쿼리 기능과 같은 다른 특정 기능이 필요한가요?

비기능 요구 사항

  • 성능 및 확장성: 데이터 성능 요구 사항은 무엇인가요? 데이터 수집률과 데이터 처리율에 대한 구체적인 요구 사항이 있나요? 수집 후 데이터 쿼리 및 집계에 허용되는 응답 시간은 어떻게 됩니까? 데이터 저장소가 얼마만큼 확장되어야 하나요? 워크로드가 읽기 집약적인가요 아니면 쓰기 집약적인가요?
  • 안정성: 지원해야 하는 전체 서비스 수준 계약은 무엇인가요? 데이터 소비자에게 어떤 수준의 내결함성을 제공해야 합니까? 어떤 백업 및 복원 기능이 필요하나요?
  • 복제: 데이터를 여러 복제본 또는 지역에 분산해야 하나요? 어떤 종류의 데이터 복제 기능이 필요하나요?
  • 제한: 특정 데이터 저장소의 제한은 규모, 연결 수 및 처리량에 대한 요구 사항을 지원합니까?

관리 및 비용

  • 관리되는 서비스: 가능한 경우 IaaS(Infrastructure as a Service) 호스팅 데이터 저장소에서만 찾을 수 있는 특정 기능이 필요하지 않은 경우 관리되는 데이터 서비스를 사용합니다.
  • 지역 가용성: 관리되는 서비스의 경우 모든 Azure 지역에서 서비스를 사용할 수 있나요? 솔루션이 특정 Azure 지역에서 호스팅되어야 하나요?
  • 이식성: 데이터를 온-프레미스, 외부 데이터 센터 또는 기타 클라우드 호스팅 환경으로 마이그레이션해야 합니까?
  • 라이선싱: 독점 라이선스 유형과 OSS 라이선스 유형을 선호하고 있나요? 사용 가능한 라이선스 유형에 대한 그 밖의 외부 제한 사항이 존재하나요?
  • 전체 비용: 솔루션 내에서 서비스를 사용하는 데 드는 전체 비용은 어떻게 됩니까? 가동 시간 및 처리량 요구 사항을 지원하기 위해 실행해야 하는 인스턴스는 몇 개인가요? 이 계산에서 운영 비용을 고려합니다. 운영 비용 절감은 관리되는 서비스가 선호되는 이유 중 하나입니다.
  • 비용 효율성: 데이터를 분할하여 더 비용 효율적으로 저장할 수 있나요? 예를 들어 값비싼 관계형 데이터베이스에서 개체 저장소로 대용량 개체를 이동할 수 있나요?

보안

  • 보안: 어떤 유형의 암호화가 필요한가요? 저장 시 암호화가 필요하나요? 데이터를 연결하는 데 어떤 인증 메커니즘을 사용할 예정인가요?
  • 감사: 어떤 종류의 감사 로그를 생성해야 합니까?
  • 네트워킹 요구 사항: 다른 네트워크 리소스에서 데이터에 대한 액세스를 제한하거나 관리해야 합니까? Azure 환경 내부에서만 데이터를 액세스할 수 있어야 하나요? 특정 IP 주소 또는 서브넷에서 데이터를 액세스할 수 있어야 하나요? 온-프레미스 또는 기타 외부 데이터 센터에 호스팅된 애플리케이션 또는 서비스에서 데이터를 액세스할 수 있어야 하나요?

DevOps

  • 기술 세트: 팀이 사용하는 데 능숙한 프로그래밍 언어, 운영 체제 또는 기타 기술이 있나요? 팀원들이 사용에 어려움을 느낄 프로그래밍 언어, 운영 체제 또는 기타 기술이 있나요?
  • 클라이언트: 개발 언어에 대한 좋은 클라이언트 지원이 있나요?

다음 단계