본문 바로가기

아키텍처

[조대협 대용량 아키텍처]Persistent Layer - 파일 시스템

파일 시스템은 일반적인 파일 시스템이다.

 

파일 시스템의 구조 
  • SDK
  • 운영 체제 계층
  • 파일 시스템
  • 스토리지 하드웨어
SDK
  • 프로그래밍 언어에서 지원되는 파일 시스템 접근용 API
  • C의 fopen, JAVA의 java.io.*의 파일 시스템 관련 라이브러리 등

 

운영 체제 계층
  • 여러 종류의 다햐안 파일 시스템을 같은 형태의 스토리지로 추상화 해준다. ex)Linux의 VFS
  • 각 다양한 파일 시스템의 메타 정보를 inode에 저장하고 파일 자체를 블록 단위로 나눠서 저장하는 구조
  • 추상화된 파일은 System Call Interface로 추상화 돼서 접근 할 수 있게 된다.
  • inode는 파일이나 디렉터리에 대한 메타 정보를 저장하는 데이터 구조
파일 시스템
  • 디스크를 포맷 할때 어떤 파일 시스템으로 포맷할 것인가를 결정할 때 선택하는 부분 ex)FAT32, NTFS 등
  • 파일 시스템은 네이티브 파일 시스템과 이런 파일 시스템 위에 설정하는 파일 시스템이 있다.
  • 네이티브 파일 시스템(Native File System)은 FAT32, NTFS, ext3과 같이 OS에서 제공한다.
  • 다른 파일 시스템은 NFS, GFS(Gluster File System), HDFS(Hadoop Distributed File System) 등이 있다.
스토리지 하드웨어

파일 시스템을 구성하는 스토리지 하드웨어는 크게 3가지로 구분된다.

 

  • DAS(Direct Attached Stoage) : 서버 외부에 용량을 확장해서 그 서버에서만 사용하는 공간이다. 외장형 디스크라고 생각하면 된다.
  • SAN(Storage Area Network) : 하나의 SAN 스토리지를 여러개의 볼륨을 나눠서 다수의 서버가 각각 볼륨을 외장형 디스크처럼 마운트해서 사용 단, 마운트된 볼륨은 다른 서버에서 접근 할 수 없다.
  • NFS(Network File System) : 공유파일 시스템으로 하나의 스토리지를 여러 개의 서버가 공유해서 사용 한다.

아키텍처 설계에 영향을 주는 파일 시스템 옵션

  • 네이티브 파일 시스템(Native File System) : 일반적인 로컬 디스크로 디스크가 붙어 있는 서버에서만 읽고 쓸 수 있다.
  • NFS(Network File System) : 공유 디스크의 개념으로 다수의 서버에서 일고 쓸 수 있다. 

이미지 파일을 업로드해서 여러크기로 바꿔저 저장하는 시나리오를 구현 해보자

조대협의 서버사이드 대용량 아키텍처와 성능 튜닝 그림 6-34

 

  1.  Dispatcher는 파일을 업로드해서 작업 영역(Working Space)에 저장한다. 그리고 파일이 저장되었다는 메세지를 메시지 큐(Message Queue)에 저장한다
  2. Post Processor는 메시지 큐에서 순차적으로 메세지를 읽어서 작업 영역에서 파일을 읽어서 여러 해상도로 바꿔서 뒤에 Permannent Storage에 저장한다.

공유 스토리지는 아키텍처에 다양성을 제공 해줄 수 있기 때문에 사용 용도가 많지만 로컬 디스크에 비해서 IO 성능이 비교적 떨어진다.

 

Object Storage
  • Amazon S3 OpenStack SWIFT와 같은 Object Storage라는 형태의 새로운 파일 스토리지가 소개 되고 있다.
  • HTTP/REST와 같은 다른 파일 IO인터페이스를 사용한다
  • 다른 인터페이스를 사용하기 때문에 파일 시스템으로의 접근은 OS에 대한 제약을 받지 않는다.

이전글

Persistent Layer - RDBMS

 

Persistent Layer - RDBMS

RDBMS를 이용한 설계에 관해서 Query off Loading 과 샤딩에 대해서 이야기 해보겠다 Query off Loading Query off Loading는 DB의 성능 향상을 위한 기법 쓰기와 읽기 트랜잭션을 분리 하는 기법이다. 먼저 DB에..

alsyean.tistory.com

다음 글

 Persistent Layer - NoSQL

 

Persistent Layer - NoSQL

NoSQL 단순한 데이터를 대용량으로 저장 가능 빠른 성능을 제공한다 데이터 간의 관계를 지원 하지 않는다. 과연 NoSQL이 필요한가? RDBMS만으로도 충분하고 필요에 따라 Querry off Loading과 샤딩 조합으로 서비..

alsyean.tistory.com

 


더보기

이 글은 조대협의 서버사이드 대용량 아키텍처와 성능 튜닝 책을 참고하여 작성되었습니다.

이 글은 코드프레소 DevOps Roasting 코스를 수강하면서 작성한 글입니다.