'AWS' 카테고리의 다른 글

AWS Elastic Beanstalk  (0) 2020.06.24
IT 스타트업과 AWS  (0) 2020.06.15

'AWS' 카테고리의 다른 글

AWS autoscaling  (0) 2020.06.25
IT 스타트업과 AWS  (0) 2020.06.15

우리회사는 AWS를 사용해서 서비스 런칭을 준비하고있다.

 

우리는 스트리밍 서비스를 준비중인데, 크게 세가지 과정으로 분류할수 있다.

  1. 영상을 업로드 하는 순간의 클라이언트단에서의 처리과정

  2. 업로드 시켰을때 AWS S3에 담겨지기 전의 영상 처리과정

  3. 유저가 영상을 요청했을때 S3에 담긴 스트리밍 가능한 영상 파일의 호출 과정

그리고 위의 세가지 과정과 별개로 네트워크 통신 자체에 대한 문제도 하나의 고려요인으로 볼 수 있겠다.

(3G 쓰는사람 보다는 LTE 쓰는 사람이 더 빠르게 영상을 재생시킬수 있을테니까)

 

 얼마전에 다른 중견기업의 데이터팀에 자문을 받으러 간적이 있었다.

이 외부미팅이 아주 유익한 시간이었는데, 특히 지금의 우리회사처럼 영상을 다루는 서비스인 경우에는 생각해야 할 부분이 많이 있었다. 

첫째로 현재 우리 회사가 해결해야 할 문제는 영상을 올리고, 올린 그 영상을 내려받을수 있게 되는데까지 걸리는 시간이 너무 오래 걸린다는 것이다. (영상 자체의 재생시간보다 훨씬 더 긴 시간이 걸린다)

이 말은, 유저가 영상을 내려받기 위해 S3 저장소에 접근했을때 아직 S3에 그 영상이 담겨있지 않다는 말이다.

즉, 업로드한 영상이 스트리밍 가능한 파일 형태로 처리되기까지 시간이 너무 오래 걸린다는 것이다.

현재 우리 회사는 AWS에서 제공하는 영상 스트리밍 솔루션을 아키텍처로 사용중이다. 

 

 자문받은 바로는, 이 아키텍처가 우리 회사의 서비스가 사용하는 영상 크기에 비해 과하게 복잡해서 영상 처리에 시간이 많이 소요된다는 것이다. 사실 우리는 이 시간이 단순히 영상 용량때문이라고 생각을 해서 영상을 업로드하기 전에 한번 압축을 시켜서 올릴려고 생각중이었는데, 일단 우리가 다루는 영상의 재생시간이 기본적으로 짧기때문에 AWS로 업로드 하기 전에 한번 압축해서 용량을 더 줄인다고 해봤자 네트워크 통신 시간의 차이는 크게 체감하기 힘들것 같았다. 그리고 AWS솔루션의 아키텍처 내부에서 이미 인코딩 디코딩 과정이 들어있다면 이 압축과정으로 인해 오히려 화질은 더 안좋아지고(현재 화질도 개선해야 하는 상황임..ㅠ) 쓸데없이 한번의 연산을더 추가하게 되는 셈이 될 것 같았다.

즉  ( 네트워크 통신시간의 단축정도 + 총 연산량 + 화질의 개선정도 ) 를 계산하면 오히려 마이너스가 된다는 것. 

 

사실 스트리밍 서비스의 경우에는 이 영상처리에 대한 부분이 기술적으로는 핵심적인 부분이라서, 다른 업체의 솔루션을 사용하기 보다는 각자의 서비스에 적합한 영상 처리 로직을 직접 코딩하는게 맞다고 자문을 받았다. AWS의 인스턴스를 사용하면서 그 안에서 영상 처리에 대한 부분은 직접 코딩작업을 해야 한다는 것.(g-streamer 등의 영상 처리 프레임워크도 있다는 걸 알게 되었다)

 

 두번째로는, 스트리밍서비스의 경우 AWS를 사용할때, 비용에 대한 계산을 반드시 하고 계획을 세워둬야 하는데..

유튜브처럼 영상 하나마다 광고를 넣을 수도 없는 것이기 때문에, 자유롭게 사용자들이 이런 저런 영상을 재생시킬때마다 발생하는 스트리밍 비용을 어떻게 충당 할 것인지도 문제였다. 우리 서비스를 통해 얻는 수익으로 다 부담할 수 있는 범위인지도 계산을 해봐야 한다.

사실 처음에 회사에 들어와서 앱을 이리저리 살펴보면서 스트리밍 비용에 대한 부분이 얼마나 나올까 하는 생각을 하긴 했었는데, 반드시 실제 런칭 전에 비용 테스트를 하고 확실한 대책을 마련해 두어야 하는 부분이었다. 

 

어쨋든 지금 당장은 빨리 런칭을 해야 하는 시점이라서, 일단 AWS 스트리밍 솔루션과 AWS 저장소인 S3를 사용해서 빠르게 런칭을 하고

지속적인 비용과 속도 테스트를 통해 다음과 같은 과정으로 방향을 잡아야 할 것 같다.

 

1. aws 영상처리 솔루션 + aws 저장소 (런칭)

2. 영상처리 로직 개발에 대한 준비(aws 인스턴스만 사용) + aws 저장소

3. aws의 인스턴스에서 직접 개발한 영상처리로직 사용 + aws 저장소

4. aws의 인스턴스에서 직접 개발한 영상처리로직 사용 + 회사 자체 저장소

5. 회사가 보유한 인스턴스에서 직접 개발한 영상처리로직 사용 + 회사 자체 저장소

 

 마지막 부분인 자체 저장소, 자체 인스턴스보유 여부는 비용적인 측면과 편리성 측면을 잘 저울질 해서 판단해야 하고...

영상 처리단계의 인스턴스는 유입트래픽을 보면서, 자체적으로 스케일링을 해주는 AWS가 더 편리할지 그래도 회사 자체의 인스턴스를 구비하는게 더 편리할지 잘 판단해야 할 것이다. 마지막 단계에서 aws 인스턴스와 aws 저장소를 사용하는게 더 나을수도 있다.(비용적으로)

뭐..  지금 단계에서 내가 정리한 방향은 이렇다. 

 

 

벌써 12시가 지났네.

자러가야지!

 

 

 

 

'AWS' 카테고리의 다른 글

AWS autoscaling  (0) 2020.06.25
AWS Elastic Beanstalk  (0) 2020.06.24

+ Recent posts