요즘 고성능 데이터베이스(Snowflake, BigQuery)들 그리고 RDB(Aurora)들을 보면 컴퓨팅과 스토리지를 분리한 아키텍쳐들이 많이 보인다. 이는 데이터는 공유하면서 컴퓨터 리소스만 따로 늘릴 수 있기 때문에 자원을 효율적으로 쓸 수 있는 아키텍쳐이다. 그리고 Storage간에 sync가 필요하지 않기 때문에 이를 위해 필요한 비용을 아낄 수 있다라는 아주 큰 장정을 가지고 있다. 작은 클러스터에서는 상관없겠지만 클러스터가 10개 이상 이라고 생각하면...... 어마어마한 비용이다. 스토리지를 분리하기 위해서는 NAS, SAN을 사용해야 될 것인데, 성능 문제로 SAN을 사용할 것 이다.
종류
- 내장 디스크 (Internal Disk)
- DAS (Direct Attached Storage)
- NAS (Network Attached Storage)
- SAN (Storage Area Network)
내장 디스크 (Internal Disk)
- HDD (기계식)
- SSD (전자식, random io가 훨씬 빠름)
컴퓨터 본체 내에 장착된 디스크와 같은 매체. 서버용으로 사용되는 디스크는 개인 PC에 장착되는 디스크보다 빠르고 안정적이긴 하다. 하지만 컴퓨터의 본체 내부 공간은 제한적이어서 장착할 수 있는 디스크의 개수가 적고 용량도 부족할 수 있다.
내장 디스크 용량 문제를 해결하기 위해 주로 사용하는 것이 DAS
DAS (Direct Attached Storage)
컴퓨터 본체와 분리된 디스크로 독자적으로 사용할 수 없음.. DAS 역시 내장 디스크와 같이 SATA나 SAS와 같은 케이블로 연결되기 때문 실제 사용자에게는 거의 같은 속도 및 방식으로 사용된다. 대용량의 디스크가 필요한 경우에는 DAS가 적합하다. 하지만 DAS는 하나의 컴퓨터 본체에만 연결해서 사용할 수 있기 때문에 디스크의 정보를 여러 컴퓨터가 동시에 공유하는 것이 불가능하다. 이 점을 해결하기 위해서 사용하는 것이 NAS, SAN.
NAS (Network Attached Storage)
NAS는 네트워크로 연결하기 때문에 여러 컴퓨터에서 동시에 사용할 수 있다. 하지만, TCP/IP를 통해 연결하기 때문에 고성능을 원하는 조건에서 사용할 수 없고, 일반 클라우드나 데이터를 저장하기 위해서 사용하기에 적합하다.
SAN (Storage Area Network)
SAN은 DAS로는 구축할 수 없는 아주 대용량의 스토리지 공간을 제공하면서 여러 컴퓨터에서 동시에 사용할 수 있다. 그리고 컴퓨터 본체와 광케이블로 연결되기 떼문에 상당히 빠르고 안정적인 데이터 처리를 보장해준다.
구축 비용이 많이 든다는 단점이 있다.
어떤 프로그램을 개선하기 위한 방법은 정말 여러가지이다. 단순히 코드를 개선하는 것 부터 사용하는 프로그램의 파라미터를 변경하거나 프로그램 자체를 바꾸거나 그 끝에는 하드웨어가 있다.
Reference
- Real MySQL5.6
'Computer Engineering > OS & Hardware' 카테고리의 다른 글
Mac OS Vagrant 설치 (0) | 2020.12.24 |
---|