[aws kr ug 1회 세미나] cloudfront와 s3 사용기 @ 박현우
DESCRIPTION
AWS 한국사용자모임 1회 세미나(2013-02-16) 스마트스터디의 CloudFront와 S3 사용기TRANSCRIPT
S3 와 Cloudfront
● S3 : Simple Storage Service○ 무식하게 안전하다.○ 한 지역(region)에 여러 사본이 존재.
■ vs EBS : 한 존(zone)에 여러 사본이 존재.
● CF : CloudFront○ 콘텐츠 전송 서비스 (CDN).○ 원본(origin)으로부터 AWS 엣지(Edge)로 전송.
■ http://aws.amazon.com/cloudfront/#details■ 전세계 약 30 개의 엣지. (아직 까지는 지구만)
왜 이걸 골랐나?
● 대용량 멀티미디어 콘텐츠를 전 세계 모바일 시장에 배포해야 해서.
● 안정적으로, 빠르게, 적당한 가격으로 전 세계에 배포해야 하므로.
● 다양한 시스템을 운영하기 위한 인력이 충분하지 않다.
플래시 동영상
S3 Bucket( tokyo )
s3cmd
Package( encrypted )
Thumbnails
Video
npk
Transcoder
Gnash
FFmpeg
qtfaststart
Flash
Movie
CloudFront{
Edge Edge Edge Edge Edge
S3 Bucket( tokyo )
s3cmd
Package( encrypted )
Thumbnails
Video
Transcoder
Gnash
FFmpeg
qtfaststart
Flash
Movie
npk
어떻게 동작하는가?
● S3 로 복사○ 파일이 100개 정도면, GUI 도구를 사용한다.○ 그 이상이면 반드시 s3fs 나 s3cmd 를 사용.○ sync 기능이나 invalidation 이 필요하면, 역시 s3cmd.○ 약 3만 개 정도의 파일이 있어서, s3cmd 를 선택.
● s3cmd○ 엄청 좋음!○ S3 와 CloudFront 위에서 동작함.
어떻게 동작하는가? (계속)
● s3cmd○ AWS 콘솔에서 할 수 있는 대부분의 일이 가능.○ INI 형식의 설정 파일.○ 마법같은 'sync' 명령이 제공됨
● s3cmd sync○ Glob 문법으로 특정 파일 지정 / 제외가 가능.○ ... 정규 표현식으로도 가능함.○ 자동으로 invalidatoin 요청을 보낼 수 있음.○ 어떤 파일이 변경될 지 '미리 해보기' 가능. (-n, --dry-
run)
● s3cmd sync○ 파일의 MD5 해시 정보로 달라진 여부를 검사.○ (!) 파일 크기가 15MB 이상이면, 파일 크기로만 비교.○ 약 60GB, 3만개 파일에 대해 = 검사에 8분 소요.
(i7 2500K + SATA HDD 에서 tokyo 버킷과 비교)
● s3cmd sync --cf-invalidate○ Invalidation 요청을 자동으로 보내줌.○ (!) 동시 요청은 3개 까지 가능. (파일 3개가 아님)○ (!) 한 달에 1천 개 파일까지 무료.○ s3cmd cfinvalinfo 명령으로 진행 상황 확인 가능.
어떻게 동작하는가? (계속)
빠른지
안전한지
비싸진 않은지?
그래서 정말
{
충분히 빠릅니다.
8.0MB/s
매우 안전합니다.
적어도 직접운영하는
서버들 보단
그리고
별로
안 비싸요
* 버킷에서 각 엣지로의 복사 비용은 제외한 요금
국내 CDN피크 트래픽 기준
● 350Mbps/피크시
● $6.00/Mbps
= $2,100
CloudFront총 전송량 기준
● 10TB/한 달
● $0.209/GB
= $2,090*
그래도
비싸다구요?
* Photo from Linkedin page of Lee, Jung-in / Amazon Korea
10TB 이상이면
약정하고
할인 받으세요
● 더 작게○ 최적의 옵션으로 미디어를 가공.○ 각 플랫폼에 맞게 별도의 파일을 준비.○ 저장 비용은 전송 비용보다 싸다!
● 정적으로○ 자주 바뀌는 파일은 CloudFront 에 어울리지 않음.○ Invalidation 요청이 때로는 10분 정도 걸림.○ 정적이지 않은 파일들은 아직도 웹 서버를 사용 중.
● 스트리밍 가능하게○ 모바일 네트워크는 아직 느리므로.○ 다운로드 끝날 때까지 사용자를 기다리게 하지 말자.
팁
● Gnash○ http://www.gnu.org/software/gnash/
● FFmpeg○ http://www.ffmpeg.org/
● qtfaststart○ https://github.com/danielgtaylor/qtfaststart
● npk○ https://github.com/lqez/npk
● s3cmd○ http://s3tools.org/
링크