1P by GN⁺ 20일전 | ★ favorite | 댓글 1개

IO 장치와 지연 시간

  • 비휘발성 저장 장치는 현대 컴퓨터 시스템의 핵심 요소로, 전원이 꺼져도 데이터를 저장할 수 있음. CPU 레지스터, CPU 캐시, RAM과 같은 휘발성 저장 장치와 달리 지속적인 전원이 필요하지 않음.

테이프 저장 장치

  • 1950년대부터 컴퓨터는 비휘발성 디지털 저장을 위해 테이프 드라이브를 사용해 왔음. 테이프는 긴 시퀀스의 데이터를 저장하는 데 적합하며, 대량의 데이터를 안전하게 저장해야 하지만 자주 읽을 필요가 없는 상황에 적합함.
  • 테이프는 저렴한 비용과 긴 수명을 제공하며, CERN과 AWS와 같은 대규모 데이터 저장소에서 여전히 사용됨.

하드 디스크 드라이브 (HDD)

  • 하드 디스크 드라이브는 테이프에 비해 더 빠른 데이터 접근을 제공하며, 원형의 금속 디스크에 데이터를 저장함. 디스크의 모든 표면적이 항상 사용 가능하여 데이터 읽기 및 쓰기 지연 시간이 감소함.
  • HDD는 명령 큐잉을 지원하여 여러 명령을 병렬로 실행할 수 있음.

솔리드 스테이트 드라이브 (SSD)

  • 솔리드 스테이트 드라이브는 기계적 부품 없이 전자적으로 데이터를 읽고 쓰며, NAND 플래시를 사용하여 비휘발성 저장을 제공함.
  • SSD는 병렬 처리와 가비지 컬렉션을 통해 성능을 최적화할 수 있음. 데이터의 배열이 성능에 영향을 미칠 수 있음.

클라우드에서의 저장

  • 클라우드로의 이동은 IO 성능에 변화를 가져왔으며, 많은 기업들이 클라우드로 서버와 데이터베이스 시스템을 이전함.
  • 클라우드 환경에서는 스토리지와 컴퓨팅의 분리가 일반적이며, 이는 데이터의 안전성과 유연성을 제공하지만 성능 저하를 초래할 수 있음.

스토리지와 컴퓨팅의 분리

  • 전통적으로 서버는 비휘발성 저장 장치를 직접 연결하여 사용했으나, 클라우드에서는 네트워크를 통해 스토리지를 연결하는 방식이 일반적임.
  • 네트워크 연결 스토리지는 데이터의 안전성을 제공하지만, IO 성능에 부정적인 영향을 미칠 수 있음.

로컬 vs 네트워크 스토리지

  • 로컬 NVMe SSD는 매우 빠른 IO 속도를 제공하며, 네트워크 연결 스토리지에 비해 지연 시간이 적음.
  • 네트워크 연결 스토리지는 IO 작업에 제한이 있을 수 있으며, 이는 성능 저하로 이어질 수 있음.

해결책: Metal

  • Metal은 PlanetScale에서 제공하는 솔루션으로, 직접 연결된 NVMe SSD 드라이브를 사용하여 뛰어난 성능과 확장성을 제공함.
  • Metal 클러스터는 기본적으로 주 서버와 두 개의 복제본으로 구성되어 데이터의 내구성을 보장하며, 저장 용량을 쉽게 확장할 수 있음.
  • Metal 데이터베이스는 IO 작업에 인위적인 제한이 없으며, 최소한의 지연 시간으로 IO 작업을 수행할 수 있음.
Hacker News 의견
  • 블로그 작성자가 이 글을 쓰면서 매우 즐거웠음을 언급함. 수천 줄의 자바스크립트를 사용하여 인터랙티브한 비주얼을 만들었음
  • SQLite+NVMe를 오랫동안 지지해왔음을 밝힘. 이는 새로운 패턴으로, 수평 확장 없이도 문제를 해결할 수 있는 가능성을 제공함
    • 성능 문제에서는 지연 시간이 가장 중요함
    • 특히 순차적으로 처리해야 하는 경우에 더욱 중요함
    • NVMe에서 SQLite를 실행하면 다른 제공자가 제공할 수 없는 지연 시간 이점을 얻을 수 있음
    • 대부분의 실제 사용 사례에서 메모리 실행이 NVMe 지속성보다 큰 이점을 제공하지 않음
  • 제품 홍보라는 것을 잊을 정도로 정보가 풍부했음을 칭찬함. 훌륭한 비주얼과 상호작용성을 언급함
  • 디스크 IO 애니메이션을 보면서 Melvin Kaye를 떠올림
    • Mel은 시간 지연 루프를 작성하지 않았음
    • Flexowriter가 출력 문자 사이에 지연이 필요할 때도 마찬가지였음
    • 드럼에 명령어를 배치하여 필요할 때마다 읽기 헤드 바로 뒤에 위치하도록 했음
    • 드럼은 다음 명령어를 찾기 위해 완전한 회전을 수행해야 했음
  • 블로그가 좋음을 언급함. 일반적으로 클라우드 스토리지가 "비정상적으로 느림"을 지적함
    • 최근 S3/오브젝트 스토리지에 증분 인덱스를 저장하는 지원을 추가했음을 언급함
    • NVMe를 더 오래 사용한 이유는 이전 기사에서 언급한 성능상의 이점 때문임
    • 더 나은 제공으로 이 분야를 혁신할 누군가가 있으면 좋겠다고 밝힘
  • 분산 스토리지에 대해 이 기사에서 충분히 다루지 않은 점을 지적함
    • 일부 시스템은 기본적으로 복제를 지원하지 않음
    • Cassandra 클러스터와 MySQL은 마스터 슬레이브 복제를 할 수 있지만, 많은 시스템은 그렇지 않음
    • 클라우드에서 NVMe 스토리지를 사용할 때 유지보수 간격과 클라우드에서 시작된 드레인을 존중해야 함
    • 스토리지를 컴퓨팅과 분리하면 클라우드 운영자가 필요에 따라 컴퓨팅을 이동할 수 있음
    • 데이터가 컴퓨팅과 독립적이므로 클라우드 운영자가 데이터 시스템과 드레인을 관리할 수 있음
  • Metal이 매우 멋져 보임. 이전 직장에서 GCP의 인스턴스 로컬 SSD를 사용하려 했을 때 심각한 신뢰성 문제가 있었음을 언급함
    • 장치의 블록이 데이터를 잃는 문제가 있었음
    • 이 상황이 개선되었는지 궁금해함
    • 사용 중인 머신 타입을 묻고 있음
    • 해결책으로 Discord의 네트워크 디스크를 사용하는 방법을 언급함
  • PlanetScale Metal이 매우 견고해 보임. 릴리스에서 지연 시간이 크게 감소하는 것을 보는 것이 항상 흥미로움
  • 매우 훌륭한 기사임. 랜덤 쓰기의 시각화가 매우 잘 되어 있음
    • 클라우드에서 네트워크 연결 스토리지의 또 다른 문제는 IOPS 제한임
    • AWS와 Google Cloud를 포함한 많은 클라우드 제공자가 이 모델을 사용하며, 전송할 수 있는 IO 작업의 양을 제한함
    • 스토리지가 컴퓨팅 인스턴스에 직접 연결되어 있으면 IO 작업에 인위적인 제한이 없음
    • 하드웨어가 허용하는 한 빠르게 읽고 쓸 수 있음
    • "IOPS" 제한이 특정 네트워크 트래픽에 대한 제한인지 궁금해함
    • EBS 볼륨 네트워크 트래픽을 의미하는지 묻고 있음
    • 비용 절감이 가능한지, AWS의 이상한 차익 거래 때문인지, 아니면 EBS 네트워킹을 덜 함으로써 효율성을 얻는 것인지 궁금해함
    • 스토리지와 컴퓨팅을 같은 머신에 두는 것이 지연 시간 측면에서 이점이 있음을 명확히 봄
    • 비용 대비 처리량 측면에서도 이점이 있는지 궁금해함
  • "서버리스" 데이터베이스 제공자가 어떻게 "저지연" 액세스를 광고하는지 궁금해함
    • S3와 같은 오브젝트 스토리지를 사용하며, 이는 네트워크 스토리지보다 지연 시간이 훨씬 나쁠 것으로 예상됨
    • 캐싱 레이어를 구축했음을 언급하며, 로컬에 연결된 NVMe에 데이터를 유지하겠다고 밝힘