MBC 사례의 경우 예능 연구소
와 touch MBC
두 가지 서비스에 대해 AWS 환경을 도입해 개선을 이루냈습니다. 그 중 우선 예능 연구소의 경우에 대해 분석하겠습니다.
1. MBC 예능 연구소란?
- 인터넷 상에 영상을 올려 시청자들이 볼 수 있도록 제공되는 동영상 기반의 서비스
- 주로 불특정 다수에게 영상 위주의 서비를 제공하는 비가입 서비스
2. 당면 과제
- 만약 인기 있는 아이돌이 컴백을 하거나 네이버 메인에 영상이 올라올 경우, 해당 콘텐츠에 대해 트래픽이 증가할 것. 기존의 사내 프라이빗 클라우드를 사용해서는 트래픽 급증과 같은 탄력적인 트래픽 예측 불가 & 추가적 비용 부담
- 사용자들은 다양한 종류의 모바일 디바이스로 콘텐츠에 접근 따라서 단말에 따른 서비스 포맷이 달라 각 단말에 따른 파일별 트랜스 코딩의 수동적 작업 시행됨
3. 해결 방법
![](https://velog.velcdn.com/images/juyoung810/post/24ee4964-108e-4f41-b144-fa493e172071/image.png)
3-1. cloudfront 활용 탄력적인 트래픽 대비해 영상 소스 제공
https://docs.aws.amazon.com/ko_kr/AmazonCloudFront/latest/DeveloperGuide/Introduction.html
[cloudfront] 란
- 정적 & 동적 웹 컨텐츠 예를 들어 .html, .css, .js 그리고 이미지 파일과 같은 것들의 배포를 빠르게 하는 웹 서비스
- 콘텐츠가 이미 지연 시간이 가장 낮은 엣지 로케이션에 있는 경우 CloudFront가 콘텐츠를 즉시 제공
- 콘텐츠가 엣지 로케이션에 없는 경우 CloudFront는 콘텐츠의 최종 버전에 대한 소스로 지정된 오리진(Amazon S3 버킷, MediaPackage 채널, HTTP 서버(예: 웹 서버) 등)에서 콘텐츠를 검색
- cloudfront를 사용하지 않을 경우 사용자의 요청은 컨텐츠를 찾기 위해 많은 network를 이동하며 지연 시간이 길어긴다. 그러나 cloudfront 를 활용할 경우 가까운 에지 로케이션으로 요청이 라우팅되어 컨텐츠 제공 시간을 최적으로 줄일 수 있다.
- 또한 컨텐츠의 복사본이 다양한 에지 로케이션에 저장되므로 컨텐츠에 안정성과 가용성을 높일 수 있다.
cloudfront set up 방법
cloudfront distribution을 생성해 cloudfront 에 어떤 경로로 컨텐츠가 제공되길 원하는지, 컨텐츠 전달을 track 하고 , manage 하는 방법 설계할 수 있다
![](https://velog.velcdn.com/images/juyoung810/post/20f3d169-62f2-4182-99e5-4663e5c398aa/image.png)
1. 아마존 S3 버킷 또는 HTTP server 와 같은 origin server 에서 부터 파일이 전세계 cloudfront edge location 으로 분배된다.
2. orgin server에 파일을 올리면 cloudfront url 을 알고 있는 사용자가 해당 object 에 접근 가능하다. object 에 접근 허용을 제어 가능
3. cloudfront distribution 을 생성해 파일에 접근할 때 어떤 origin 에 접근해야하는지 설정, 접근에 대한 Log 기록등을 설정 가능하고, 그 distribution은 edge location에 전달된다.
탄력적인 트래픽에 대처하기 위해 cloudfront 도입 이유
https://goddaehee.tistory.com/173
- origin 서버에 모든 사용자가 몰릴 경우 origin 서버가 모든 사용자에 응답 해야한다. 이럴 경우 트래픽 부하가 높아지고, 장애 가능성 또한 높아진다.
- origin 서버를 늘릴 경우 시간 & 비용에 대한 부담이 높아지고, 이미 서버를 늘려놓았는데 사용하지 않는다면 낭비
- CDN 을 통해 cache 서버 (edge location) 로 가까운 사용자의 요청을 따로 처리할 경우 트래픽이 급증하더라도 탄력적으로 대응 가능 & 빠르게 영상 제공 가능
3-2. S3, Lambda, ETS 활용해 자동화된 트랜스 코딩 환경 구축
S3 객체 Lambda를 사용하여 객체 변환
https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/transforming-objects.html
- S3 객체 Lambda를 통해 Amazon S3 GET 요청이 올 경우 자체 코드를 추가해 사용자에게 데이터가 반환될 때 데이터를 수정 및 처리할 수 있다.
- AWS Lambda는 컴퓨팅 리소스를 관리할 필요 없이 고객 정의 코드를 실행하느느 서버리스 컴퓨팅 서비스
- 사용자가 지정한 Lamdba 함수를 작성 & 실행하여 특정 사용에 맞게 데이터 변환 가능
- Lambda 함수를 구성하고 s3 객체 Lambda 서비스 앤드포인트에 연결하면 s3 가 자동으로 함수 호출
![](https://velog.velcdn.com/images/juyoung810/post/10e540c1-23a1-4e87-97c6-e9e8ce58d7e7/image.png)
Amazon Elastic Transcoder
https://docs.aws.amazon.com/ko_kr/elastictranscoder/latest/developerguide/introduction.html
- S3 에 저장된 미디어 파일을 소비자 재생 디바이스에 필요한 형식의 미디어 파일로 변환 가능
Elastic Transcoder에는 4가지 구성
1. 작업 : 트랜스 코딩 수행. 하나의 파일을 최대 30가지 형식으로 . 트랜스 코딩하려는 각 형식에 대해 트렌스 코딩된 파일에 사용할려는 오디오 & 비디오 설정을 포함하는 프리셋이라 하는 템플릿 지정 필요
2. 파이프라인 : 트랜스 코딩 작업 관리 대기열, 작업 생성시 작업을 추가하고자 하는 파이프라인 지정
3. 사전 설정 : 한가지 형식의 미디어 파일 다른 형식으로 트랜스 코딩 하기 위한 대부분의 설정 포함하는 템플릿
4. 알림: 작업 처리 시작, 완료 시간, 경고 오류 상태 알려줌
s3 + lambda + ETS 통한 대략적 트랜스 코딩 자동화 과정
https://jeongchul.tistory.com/582
![](https://velog.velcdn.com/images/juyoung810/post/5b780b54-0d44-40a7-92e9-ba63bb5cafff/image.png)
- 기존에 각 단말에 따른 파일별 트랜스 코딩 작업을 수동으로 했던 것을 s3에 파일이 저장될 경우 lambda 함수를 통해 transcoder가 작업을 하도록 하는 일련의 과정 이뤄질 수 있다.
느낀점
첫 사례 분석이고 , aws에 대한 지식이 부족해 시작에 어려움을 겪었다. 비교적 많이 들어보았던 cloudfront, s3 와 관련된 사례를 분석해보며 각각 어떤 역할을 수행하는지 , 그 역할이 이 사례에서 왜 필요했는지 생각해 볼 수 있는 시간이였다.