사용 가능한 스토리지 솔루션 및 제공자를 검토한 후 인프라 팀에서 필요로 하는 스토리지를 계획하고 요청하십시오.
사용자에게 올바른 솔루션이 될 스토리지 유형을 결정하기 전에 애플리케이션 요구사항, 저장할 데이터 유형 및 이 데이터에 액세스하는 빈도를 파악해야 합니다.
-
데이터를 영구적으로 저장할지 또는 필요할 때 언제든 데이터를 제거할 수 있는지를 결정하십시오.
-
지속적 스토리지: 컨테이너, 작업자 노드 또는 클러스터가 제거된 경우에도 데이터가 여전히 사용 가능해야 합니다. 다음 시나리오에서 지속적 스토리지를 사용하십시오.
- Stateful 앱
- 코어 비즈니스 데이터
- 정의된 보존 기간과 같은 법적 요구사항으로 인해 사용 가능해야 하는 데이터
- 감사
- 앱 인스턴스에서 액세스하고 공유해야 하는 데이터
-
비지속적 스토리지: 컨테이너, 작업자 노드 또는 클러스터가 제거되었을 때 데이터를 제거할 수 있습니다. 비지속적 스토리지는 일반적으로 시스템 로그 또는 컨테이너 로그, 개발 테스트와 같은 로깅 정보에 또는 호스트의 파일 시스템에서 데이터에 액세스할 경우에 사용됩니다.
-
데이터를 유지해야 하는 경우 앱에 특정 유형의 스토리지가 필요한지 분석하십시오. 기존 앱을 사용하는 경우 다음 방법 중 하나로 데이터를 저장하도록 앱을 디자인할 수 있습니다.
- 파일 시스템에서: 데이터를 디렉토리에 파일로 저장할 수 있습니다. 예를 들어, 로컬 하드 디스크에 이 파일을 저장할 수 있습니다. 일부 앱에서는 데이터 저장소를 최적화하고 성능 목표를 달성하기 위해 특정 파일 시스템(예:
nfs 또는 ext4)에 데이터를 저장해야 합니다.
- 데이터베이스에서: 데이터는 특정 스키마 뒤에 오는 데이터베이스에 저장되어야 합니다. 일부 앱은 데이터를 저장하는 데 사용할 수 있는 데이터베이스 인터페이스와 함께 제공됩니다. 예를 들어, WordPress는 MySQL 데이터베이스에 데이터를 저장하도록 최적화됩니다. 이러한 경우 스토리지 유형이 사용자에 맞게 선택됩니다.
-
앱에 사용자가 사용해야 하는 스토리지 유형에 대한 제한사항이 없으면, 저장할 데이터 유형을 판별하십시오.
- 구조화된 데이터: 열과 행을 포함한 테이블이 있는 관계형 데이터베이스에 저장할 수 있는 데이터입니다. 테이블의 데이터는 키를 사용하여 연결 가능하며 사전 전의된 데이터 모델로 인해 대부분 쉽게 액세스할 수 있습니다. 예는 전화번호, 계정 번호, 주민등록번호 또는 우편번호입니다.
- 반구조화된 데이터: 관계형 데이터베이스에 맞지 않지만 이 데이터를 더 쉽게 읽고 분석하기 위해 사용할 수 있는 몇 가지 조직적 특성과 함께 제공되는 데이터입니다. 예는 CSV, XML 또는 JSON과 같은 마크업 언어 파일입니다.
- 비구조화된 데이터: 조직적 패턴을 따르지 않고 매우 복잡해서 사전 정의된 데이터 모델의 관계형 데이터베이스에 저장할 수 없는 데이터입니다. 이 데이터에 액세스하려면 고급 도구와 소프트웨어가 필요합니다. 예는 이메일 메시지, 비디오, 사진, 오디오 파일, 프리젠테이션, 소셜 미디어 데이터 또는 웹 페이지입니다.
구조화된 데이터와 비구조화된 데이터가 있는 경우, 이 데이터 유형에 맞게 디자인된 스토리지 솔루션에 각 데이터 유형을 개별적으로 저장하십시오. 데이터 유형에 맞는 스토리지 솔루션을 사용하면 데이터에 대한 액세스를 완화하고 성능, 확장성, 내구성 및 일관성이라는 이점을 제공할 수 있습니다.
-
데이터에 액세스하는 방법을 분석하십시오. 스토리지 솔루션은 대개 읽기 또는 쓰기 오퍼레이션을 지원하도록 디자인되고 최적화되어 있습니다.
- 읽기 전용: 데이터는 읽기 전용입니다. 데이터를 쓰거나 변경하려고 하지 않습니다.
- 읽기 및 쓰기: 데이터를 읽고 쓰고 변경하려고 합니다. 읽고 쓰는 데이터의 경우 오퍼레이션이 읽기 중심인지, 쓰기 중심인지 아니면 반반인지를 파악해야 합니다.
-
데이터에 액세스하는 빈도를 판별하십시오. 데이터 액세스의 빈도를 파악하면 스토리지에 필요한 성능을 이해하는 데 도움이 될 수 있습니다. 예를 들어, 자주 액세스하는 데이터는 대개 빠른 스토리지에 상주합니다.
- 호스트 데이터: 자주 액세스하는 데이터입니다. 공통 유스 케이스는 웹 또는 모바일 앱입니다.
- 쿨 데이터 또는 웜 데이터: 드물게(예: 한 달에 한 번 이하) 액세스하는 데이터입니다. 공통 유스 케이스는 아카이브, 단기 데이터 보존 또는 재해 복구입니다.
- 콜드 데이터: 액세스한다고 하더라도 드물게 액세스하는 데이터입니다. 공통 유스 케이스는 아카이브, 장기 백업 또는 히스토리 데이터입니다.
- 프로즌 데이터: 액세스되지 않지만 법적 이유로 인해 보관해야 하는 데이터입니다.
빈도를 예상할 수 없거나 빈도가 엄격한 패턴을 따르지 않는 경우, 워크로드가 읽기 중심인지, 쓰기 중심인지 아니면 반반인지를 판별하십시오. 그런 다음 워크로드에 맞는 스토리지 옵션을 보고 필요한 유연성을 제공하는 스토리지 티어를 조사하십시오.
-
여러 앱 인스턴스에서 데이터를 공유해야 하는지 조사하십시오.
Kubernetes 지속적 볼륨을 사용하여 스토리지에 액세스하는 경우 동시에 볼륨을 마운트할 수 있는 팟(Pod)의 수를 판별할 수 있습니다. 한 번에 하나의 팟(Pod)에서만 일부 스토리지 솔루션(예: Block Storage)에 액세스할 수 있습니다. 다른 스토리지 솔루션을 사용하는 경우 여러 팟(Pod)에서 볼륨을 공유할 수 있습니다.
-
선택사항에 영향을 주는 다른 스토리지 특성을 파악하십시오.
- 일관성: 읽기 오퍼레이션이 최신 파일 버전을 리턴하도록 합니다. 스토리지 솔루션은 항상 최신 버전의 파일을 수신하도록 보장하는 경우 강력한 일관성을 제공하고, 읽기 오퍼레이션이 최신 버전을 리턴할 수 없는 경우 최종 일관성을 제공할 수 있습니다. 모든 인스턴스에서 먼저 쓰기 오퍼레이션을 복제해야 하는 지리적으로 분산된 시스템에서 최종 일관성이 종종 발견됩니다.
- 성능: 읽기 또는 쓰기 오퍼레이션을 완료하는 데 걸리는 시간입니다.
- 지속성: 기가바이트 또는 테라바이트 단위의 데이터가 동시에 스토리지에 작성되는 경우에도 스토리지에 커미트된 쓰기 오퍼레이션이 영구적으로 지속되고 손상되거나 유실되지 않도록 합니다.
- 복원성: 하드웨어 또는 소프트웨어 컴포넌트에 장애가 발생한 경우에도 가동 중단으로부터 복구하고 오퍼레이션을 계속하는 기능입니다. 예를 들어, 물리적 스토리지에 정전이나 네트워크 가동 중단이 발생하거나 자연 재해 시 이 스토리지가 영구 삭제되는 경우입니다.
- 가용성: 데이터 센터 또는 지역이 사용 불가능한 경우에도 데이터에 대한 액세스를 제공하는 기능입니다. 데이터에 대한 가용성은 대개 중복성을 추가하고 장애 복구 메커니즘을 설정하여 달성됩니다.
- 확장성: 필요에 따라 용량을 확장하고 성능을 사용자 정의하는 기능입니다.
- 암호화: 권한 없는 사용자가 데이터에 액세스할 때 표시되지 않도록 하는 데이터 마스킹입니다.
-
사용 가능한 지속적 스토리지 솔루션을 검토하고 앱 및 데이터 요구사항에 가장 적합한 솔루션을 선택하십시오. 사용 가능한 솔루션은 스토리지 안내서를 참조하십시오.