forcemax's

 저는 2006년부터 (주)Embian에 근무하면서 eFolder라는 솔루션에 대해 큰 관심을 가지고 있었습니다.
 eFolder 솔루션은 대규모 웹하드 서비스를 위한 솔루션이기도 하지만, 중소규모에서도 사용할 수 있는 가벼운 솔루션입니다. 이러한 eFolder 솔루션이 외부에 알려지지 않은 상황을 안타깝게 생각하여 2010년 부터 eFolder 솔루션의 공개를 주장해 왔으며, 2011년 3월 드디어 오픈소스로 배포하게 되었습니다.

  eFolder 솔루션은 지난 10년간 FolderPlus, 소리바다, DayFolder등의 서비스에서 사용되었으며, FolderPlus에서는 지난 8년간 서비스에 사용되었습니다.
 이 경험을 바탕으로 '대규모 웹하드 솔루션'에서 eFolder의 활용 방법을 기록으로 남기기 위해 블로깅을 하기로 결정하였습니다.


 먼저, FolderPlus가 어떻게 운영되었으며, 어느 정도 규모의 서비스 였는지를 알아보겠습니다. FolderPlus는 2003년 (주)아이서브에서 런칭한 웹하드 서비스 입니다. 2010년 서비스가 중단되었지만, 웹하드 업계 5위의 서비스였습니다.

- eFolder 솔루션으로 운영
- 총 사용자 : 600 만명
- 총 저장공간 : 1.5 PB ( 1.5 PB = 1,500 TB = 1,500,000 GB )
- 총 네트워크 대역폭 : 60 Gb/s
- 총 사용서버 : 약 500 ea
- 스토리지 서버 : 약 300 ea
- 웹 서버 : 약 200 ea
- 기타 서버 : 약 30 ea 


 위와 같은 대규모 서비스에서 eFolder 솔루션을 지속적으로 발전시켜 왔으며, 오픈소스로 배포된 eFolder 솔루션은 지난 10년간의 경험이 모두 담겨있습니다.


 이 글은 FolderPlus에서 eFolder 솔루션이 어떠한 모습으로 사용되었는지, eFolder 솔루션외에 어떠한 기술들이 사용되었는지를 정리하는 차원에서 기술하도록 하겠습니다.

 FolderPlus에서 사용된 주요 기술은 다음과 같습니다.

  • OpenAFS : 대용량 서비스를 위한 FileSystem 
        - Uniform namespace 지원 (한 공간을 동시에 Read/Write 가능)
        - Quota 및 NSS 지원

  • UAS : 600만 사용자 처리를 위한 인증 시스템
        - 자체 개발한 인증 시스템
        - NSS 모듈 제작 & MySQL을 사용하여 데이터 저장

  • Cache 시스템 : 트래픽 분산을 위한 시스템
        - 웹하드 서비스 특성상 트래픽이 한 곳에 몰리는 현상이 발생
        - 고성능 SSD 스토리지를 사용하여 고속 I/O를 처리하는 시스템 구성
        - 요청 빈도가 높은 파일을 선택하는 알고리즘 구축

  • eFolder 솔루션 : 고속 파일 전송 및 고성능 Application Server
        - Apache에 mod_perl2를 사용하여 작성
        - I/O 처리에 특화된 CGI를 작성하여 웹하드 솔루션에 특화
        - Server Side 데이터 처리를 바탕으로 높은 데이터 안정성 제공



  • 1. OpenAFS (대용량 지원을 위한 FileSystem)
    http://www.openafs.org/

     Carnegie Mellon 대학에서 개발된 AFS(Andrew File System) 에서 부터 시작되었으며,  분산 컴퓨팅 환경을 위한 FileSystem입니다. 
     기본적으로 CS(Client-Server) 구조로 구성되며, File Server 를 관장하는 DB Server가 존재합니다. 이 구조를 FolderPlus에서 사용한 방식으로 예를 들어 설명하겠습니다.

    (아쉽게도, 이미지 캡춰를 하면서 마우스 포인터가 들어갔네요;;)

     위 이미지는 FolderPlus의 CS(Client-Server) 구조를 매우 간략화한 구조도 입니다. 각 구성요소에 대해서 하나씩 설명하면 다음과 같습니다. (Client는 생략)

    1. Upload Server : 파일 업로드에 사용
    2. Download Server : 파일 다운로드에 사용
    3. Folder Server : 파일 업로드/다운로드 외의 모든 작업에 사용
    4. File Server : 실제 파일이 저장
    5. DB Server : File Server에 대한 정보가 저장

    - Client는 Server 1,2,3으로만 연결되며, Server 4,5로는 연결되지 않습니다.

     Upload/Download/Folder Server는 OpenAFS Client로 동작하며, File/DB Server는 OpenAFS Server로 동작합니다. 사용자가 연결하는 서버는 실제 파일이 존재하는 서버가 아니라 파일에 접근할 수 있는 OpenAFS Client인 것입니다.

      위의 구조가 보기에는 약간 복잡해 보이는데, 이는 OpenAFS가 가진 문제점 때문입니다. OpenAFS Client는 kernel level의 driver이기 때문에 문제가 발생하면 OS가 Kernel panic을 일으키며 정지하게 됩니다. 이는 전체 서비스에 영향을 줄 수 있기때문에, 하나의 서버에 장애가 발생하여도 서비스에 영향을 주지 않도록 하기 위해서 약간 복잡하기는 하지만 위와 같은 구성을 하게 되었습니다.

     OpenAFS가 위와 같은 문제점을 가지고 있긴 하지만, 이는 장점에 비하면 아주 간단한 문제입니다. 위에도 설명했지만 Uniform namespace를 사용한다는 것, 그리고 QuotaNSS(Name Service Switch)를 지원한다는 점입니다. 대용량 웹하드 서비스를 구성하기 위해서 가장 필요한 요소입니다.

    1. Uniform namespace : 간단하게 설명하면, 모든 OpenAFS Client가 하나의 공간을 공유한다고 생각하면 됩니다. 동일한 공간을 보고있기 때문에 어느 서버에 요청을 하더라도 동일한 자원에 접근할 수 있다는 장점이 있습니다.
    2. Quota 및 NSS 지원 : Quota는 간단하게 최대 디스크 사용량을 제한하는 기능입니다. POSIX 표준에도 있는 기능이니, 이 기능이 지원되면 사용자별 디스크 사용량 관리가 쉬워집니다. NSS는 사용자 인증, 즉 사용자별 Home Directory, ID, Password등의 인증 및 사용자 정보를 확인하고 받아올 수 있는 기능입니다. 이 역시 대부분의 UNIX 시스템에서 사용되고 있기 때문에, NSS가 지원되면 적은 노력으로 여러 시스템에서 운영할 수 서비스를 구축할 수 있습니다.

     위 이미지에서는 간략화되어 있지만, 실제 FolderPlus에서는 다음의 규모로 운영되었습니다.
    - Upload Server : 약 20 ea
    - Download Server : 약 100 ea
    - Folder Server : 약 50 ea
    - File Server : 약 300 ea
    - DB Server : 약 10 ea

      하나의 C Class 대역에서 사용할 수 있는 서버의 대수를 넘어서기 때문에, 3개의 C Class 대역을 사용하였으며, 각 C Class 대역에 각 Server들이 고루 분배되어서 운영되었습니다.

     OpenAFS에 대해서 더 알고 싶으신 분은 다음 링크를 참고하세요.
    http://www.ibm.com/developerworks/kr/library/os-openafs/index.html


    2. UAS (자체 개발한 인증 시스템)
    http://www.embian.com/Embian_eAccount.phtml

     UAS는 (주)엠비안에서 자체 제작한 인증 시스템입니다. 사용자 인증을 가장 빠르게 처리하기 위해서 개발되었으며, FolderPlus에서는 600만명의 사용자를 대상으로 사용되었던 경험이 있습니다. 위 링크는 UAS에 대한 설명은 아니지만, UAS의 전신인 Embian eAccount에 대한 설명이 있는 링크이니, 참고하시면 좋을 것이라 생각됩니다.

     UAS의 가장 큰 장점은 NSS를 사용한다는 것입니다. 위 OpenAFS에서도 설명되었지만 NSS를 지원하면 적은 노력으로 여러 시스템에서 운영할 수 있습니다. 즉, 플랫폼 독립적인 서비스를 구축할 수 있다는 것입니다.
     더불어 과거 (주)엠비안 기술연구소 소장으로 재직하였던, 전성진님의 기술이 녹아들어가서 상당히 빠른 응답을 동작속도가 보장됩니다.






    == 작성중입니다. ==
    == 문의사항 알려주시면 해당 부분에 대해서도 글에 포함하도록 하겠습니다. ==