서비스에서 Storage 요구사항
- 동영상, 사진 등 비정형 데이터들이 많이 저장되어야한다.
- 자주 불러올 수 있어야 한다.
Storage 발전
1차 스토리지 : RAM과 같이 내부장치로 쓰이는 스토리지
2차 스토리지 : 하드디스크, 테이프 등과 같이 외부장치로 쓰이는 스토리지
3차 스토리지 : Cloud Storage
먼저 Storage는 Cloud Storage나 자체 데이터 스토리지 인프라 둘 중 하나를 사용해야하는데 Cloud Storage를 사용하는 것을 가정하고 시작했다 .
선택한 이유는 간단하다.
Cloud Storage의 기본적인 보안이나 확장성, 유지보수,백업등이 자체로 데이터 스토리지 인프라를 구성하여 데이터를 관리하는 것보다 편하기 때문이다.
* 보안적인 이슈가 있다고 하지만 일단은 넘어간다.
그에따라 Cloud Storage에는 어떤 종류가 있는지 알아봤다.
Cloud Storage 종류
1. 블록 스토리지
2. 파일 스토리지
3. 객체 스토리지
Cloud Storage 종류별 특징
1. 블록 스토리지
데이터를 일정한 크기의 덩어리(블록)으로 나누어 저장하는 방식
블록은 파일보다는 작은 단위로서 조각으로 나누어 저장한다고 이해하면 쉽다.
각각의 데이터 블록은 고유 식별자를 부여받는다.
DAS(Direct Attached Storage) 또는 SAN(Storage Area Network) 와 유사하다
*DAS(외장하드와 비슷한 것)
- PC나 서버에 다이렉트로 꽂아서(usb처럼) 사용하는 스토리지
- 서버와 하드웨어를 1:1로 연결
- 속도가 빠르고 확장이 쉽지만 연결 수에 한계가 있다.
*SAN
- Fiber channel(광 채널) switch로 연결한 고속데이터 네트워크를 사용한다 - 그림에서 SAN 스위치(일반적인 네트워크 스위치랑 다르다)
- 별도의 SAN 스위치가 필요하다
- 블록단위의 I/O 를 기본으로 한다
- DAS와 NAS의 단점 보완
장점
- DAS와 SAN과 유사하기 때문에 속도가 빠르다.
- 서로 다른 운영체제에서 액세스 할 수 있다.
ex) 900Gib짜리 동영상이 있으면 블록 9개(개당 100Gib)로 나누어 저장한다. Linux 3개, Windows 6개 이런식으로 저장할 수도 있다. 각각의 블록은 고유한 액세스 주소를 가지고 있고, 그 주소를 통해 블록을 재구성하여 데이터를 불러온다. 서로 다른 운영체제에 액세스해도 병렬처리가 가능하기 때문에 속도가 빠르다 .
단점
- 메타데이터 부족: 블록 스토리지에는 메타데이터가 포함되어 있지 않으므로 비정형 데이터 스토리지에 사용하기 어렵습니다.
- 검색 불가능: 대량의 블록 데이터는 제한된 검색 기능으로 인해 빠르게 관리할 수 없게 됩니다.
- 높은 비용: 추가 블록 스토리지를 구입하는 것은 비용이 많이 들고 대규모로 비용이 많이 드는 경우가 많습니다.
2. 파일 스토리지
파일과 폴더의 계층구조로 이루어진 방식
우리가 흔히 아는 폴더의 계층구조를 말하는게 맞다.
그렇게 되면 파일을 찾기 위해서는 경로를 알아야한다.
따라서 파일이 많아질수록 데이터도 늘어나고, 파일을 찾는 것도 그만큼 힘들어진다.
일반적으로 NAS(Network Attached Storage)에 사용된다.
*NAS
쉽게말해서 DAS에 네트워크 기능이 탑재된 것이다.
서버와 저장장치가 이더넷 등의 LAN방식의 네트워크에 연결되어있다.
중계역할을 하는 파일서버가 필요하다.
DAS 는 연결 수 제한이 있었지만 LAN으로 중계를 하기 때문에 연결 수 제한이 없어진다.
하지만 접속 증가 시 스위치를 거치기 때문에 전송속도가 당연히 DAS보다 느리고 파일시스템을 공유하기 때문에 보안이 비교적 취약하고 백업이 어렵다.
파일이 가지고 있는 것 예시
- 이름
- 위치
- 생성일
- 수정일
- 크기
장점
- 소규모로 접근 용이성: 적은 수의 파일로 사용자가 원하는 파일을 쉽게 찾아 클릭할 수 있으며, 데이터가 포함된 파일이 열립니다. 그런 다음 사용자는 작업이 끝나면 파일을 동일하거나 다른 위치에 저장합니다.
- 대부분의 사용자에게 친숙함: 최종 사용자를 위한 가장 일반적인 저장소 유형으로, 기본적인 컴퓨터 기술을 가진 대부분의 사람들은 약간의 도움이나 추가 교육 없이 파일 저장소를 쉽게 탐색할 수 있습니다.
- 사용자는 자신의 파일을 관리할 수 있습니다. 간단한 인터페이스를 사용하여 최종 사용자는 파일을 생성, 이동 및 삭제할 수 있습니다.
- 액세스 권한/파일 공유/파일 잠금을 사용자 수준에서 설정할 수 있습니다. 사용자와 관리자는 파일을 쓰기(사용자가 파일을 변경할 수 있음), 읽기 전용(사용자가 데이터 보기만 가능) 또는 잠금( 특정 사용자는 읽기 전용으로라도 파일에 액세스할 수 없습니다). 파일을 암호로 보호할 수도 있습니다.
단점
- 많은 수의 파일을 관리하고 검색하는 어려움: 계층적 스토리지는 예를 들어 각각 10개의 하위 폴더가 있는 20개의 폴더에 적합하지만 폴더, 하위 폴더 및 파일의 수가 증가함에 따라 파일 관리가 점점 더 복잡해집니다. 볼륨이 커질수록 검색 기능이 원하는 파일을 찾는 시간이 늘어나고 조직 전체의 직원들에게 상당한 시간 낭비가 됩니다.
- 비정형 데이터로 작업하기 어려움: 텍스트, 모바일 활동, 소셜 미디어 게시물 및 사물 인터넷(IoT) 센서 데이터와 같은 비정형데이터를 파일 스토리지에 저장할 수 있지만 일반적으로 비정형 데이터 스토리지, 특히 많은 양의 데이터에서는 느리다.
- 대규모로 고가가 됨: 장치 및 네트워크의 저장 공간이 용량에 도달하면 추가 하드웨어 장치를 구입해야 합니다.
3. 오브젝트 스토리지
오브젝트라는 개별 데이터 단위로 데이터를 저장하는 유형이다.
파일 스토리지와는 다르게 계층구조 없이 평면(flat) 구조로 데이터를 저장한다.
그만큼 접근이 쉽고 빠르며 확장성이 높다.
파일 스토리지는 메타데이터가 제한적이지만 오브젝트의 메타데이터는 원하면 추가할 수 있기 때문에, 데이터 검색이 용이하다.
특징
오브젝트 스토리지 내 오브젝트는 HTTP API를 통해 접근이 가능하다. - GET,PUT,DELETE 사용 가능
장점
- 대량의 비정형 데이터 처리: 객체 스토리지 형식을 사용하면 대량의 비정형 데이터를 쉽게 저장하고 관리할 수 있으며, 이는 인공 지능 , 머신 러닝 및 빅 데이터 분석과 함께 점점 더 중요해지고 있습니다.
- 합리적인 소비 모델: 파일 스토리지와 같이 정해진 양의 스토리지 공간을 선불로 지불하는 대신 필요한 오브젝트 스토리지에 대해서만 구매합니다.
- 무제한 확장성: 개체 스토리지는 소비 모델을 사용하기 때문에 필요한 만큼(페타바이트 이상) 스토리지를 추가할 수 있습니다.
- 메타데이터 사용: 메타데이터가 개체와 함께 저장되기 때문에 사용자는 데이터에서 빠르게 가치를 얻고 필요한 개체를 더 쉽게 검색할 수 있습니다.
- 고급 검색 기능: 개체 스토리지를 통해 사용자는 메타데이터, 개체 콘텐츠 및 기타 속성을 검색할 수 있습니다.
단점
- 파일을 잠글 수 없음: 클라우드, 네트워크 또는 하드웨어 장치에 대한 액세스 권한이 있는 모든 사용자는 거기에 저장된 개체에 액세스할 수 있습니다.
- 다른 저장소 유형보다 느린 성능: 파일 형식은 파일 저장소 및 블록 저장소보다 더 많은 처리 시간이 필요합니다.
- 파일의 한 부분을 수정할 수 없음: 개체가 생성되면 개체를 변경할 수 없습니다. 새 개체만 다시 만들 수 있습니다.
개념을 비교할 때 좋은 사진이 있어서 가져와 봤다.
비용
AWS의 오브젝트, 파일, 블록 스토리지에서 500Gib 를 빌리는데 한달에 얼마가 드는지 계산해봤다. 요청 수는 동일하게 측정하겠다.
1)Amazon S3 - 객체 스토리지
2) Amazon Elastic File System - 파일 스토리지
3) Amazon Elastic Block Store(EBS) - 블록 스토리지
비용은 예상한대로 block storage가 제일 높았다.
최종
우리 서비스는 Object Storage를 사용하기로 결정했다.
결정요인
1. 비용적으로 다른 클라우드 스토리지보다 저렴
2. 데이터 볼륨이 빠르게 늘어도 메타데이터를 활용해 데이터를 빠르게 찾아올 수 있다. 서비스에 동영상 재생이 포함되어 있기 때문에 데이터를 빠르게 찾아와야 한다. (블록 스토리지가 빠르긴 하지만 메타데이터가 포함되어 있지 않아 검색이 안된다. 비용도 훨씬 비싸기도 하고)
3. 스토리지 사용사례들을 봤을 때 비정형데이터는 오브젝트 스토리지에 많이 저장 한다.
누군가 나에게 비정형데이터를 저장하는데 왜 오브젝트 스토리지를 사용했냐고 물어본다면?
클라우드 스토리지의 종류에는 file,block,object storage가 있다.
block은 object와 file보다 빠르지만 메타데이터를 처리하는 기능이 제한적이라 애플리케이션 또는 데이터베이스 수준에서 해당 블록들을 관리해야해서 http api로 CRUD를 할 수 있는 object storage와 달리 데이터를 관리하는데 조금 더 복잡한 구조를 가지고 있다. 또한 추가로 블록 스토리지를 구입하는 것은 비용 차이가 심하다. file storage는 우리에게 친숙하고 사용하기 쉽지만, 계층구조를 가지고 있기 때문에 일정 수준 이상으로 데이터가 많아질 수록 검색하는데 시간이 오래걸린다. 동영상이나 이미지를 빠르게 반환해야하고, 동영상 데이터가 빠르게 늘어날 가능성이 있는 우리 서비스의 특성상 file storage는 검색속도가 점점 느려지기 때문에 사용하기 어렵겠다고 생각했다. object storage는 메타데이터를 추가해 저장할 수 있기 때문에 데이터가 어디에 있는지 찾는 속도에서 유리하다. 또한 데이터가 급격하게 늘어나도 추가해서 사용한 만큼만 비용을 지불하기때문에 확장성에도 용이하다. object storage의 단점은 수정은 할 수 없다. 하지만 우리는 정형데이터는 저장하지 않고 비정형 데이터를 넣을 Storage를 선택한다는 목적을 가지고 있기 때문에 수정이 필요 없다. 따라서 object storage로 선택했다.
최종 결정 object storage - Amazon S3
- 한국 Region을 지원해준다 (데이터를 반환하는 속도가 빠르다)
- 여러가지 SDK 및 API를 잘 지원해주고 설명이 잘 되어있어 사용이 편리하고, Reference가 많다.(러닝커브)
- 다른 object service 와 비교해도 가격차이가 얼마 없다.
- 여러가지 AWS의 다른 서비스들과 결합하기 쉽다.
참조
https://aws.amazon.com/ko/what-is-cloud-file-storage/
https://www.ibm.com/cloud/blog/object-vs-file-vs-block-storage
'Server' 카테고리의 다른 글
EC2 프리티어 인스턴스 시작 - Ubuntu (0) | 2022.06.13 |
---|---|
라이브 스트리밍 서버 설정 nginx-rtmp (0) | 2022.06.13 |
apache2와 nginx 둘 다 설치되어있을 때 원하는 웹서버 따로 사용하는 법 (0) | 2022.04.05 |
docker 명령어 정리 - 내가 자주 사용하는 것들 (0) | 2022.04.03 |
mkdir (make directory) 옵션 정리 - 폴더생성 (0) | 2022.04.03 |
댓글