프로젝트/Hongflix 3

[Hongflix] AWS 인프라 구조

* Hongflix의 배포 환경, 인프라에 대한 정리글입니다. 24시간 돌릴 서버로 사용할 PM도 없었고, 다양한 AWS 리소스와 연동하고 테스트해보고 싶어서 모든 서버 및 리소스를 AWS EC2로 생성했다. 아키텍처를 아래 사진과 같이 구성한 이유에 대해 하나씩 정리해보고자 한다. - 개발환경 Java : 11 SpringBoot : 2.7.XX Build : Gradle DB : MySQL - 최종 AWS 아키텍처 - Web Server / WAS VPC를 분리한 이유 AWS에서 제공하는 고정 IP주소인 탄력적 IP를 프론트, 백엔드 서버에 각각 연결할 계획이었다. 하지만 하나의 계정에서 오직 하나의 탄력적 IP만 무료였다. 과금을 방지하기 위해서는 여러 개의 계정에서 리소스를 나눠서 관리하는 방식이..

[Hongflix] CDN을 활용한 성능 최적화

S3 버킷에 스트리밍 파일을 보관해 클라이언트에게 전달할 수 있게 되었지만 몇 가지 생각해볼 점이 남아있었다. 동영상 저장소인 S3에 직접적으로 접근해 스트리밍 파일 및 썸네일 이미지를 받아온다 -> 원본 서버에 대한 보안이 취약해질 수 있다. 매번 오리진 서버에서 파일을 받아오므로, 고용량의 데이터가 오고가는 상황에서 비용을 무시할 수 없다. 오리진 서버와 지리적인 거리가 멀다면 데이터 전송시간이 길어져 클라이언트 측의 불만이 생길 수 있을 것이다. 위 고민들을 해결할 솔루션으로 CDN 서비스를 사용하기로 결정했다. AWS CloudFront는 전 세계 곳곳에 엣지 로케이션(캐시 서버)을 배치해, 클라이언트가 어디에 있던 상관없이 정말 빠른 속도로 데이터를 받아볼 수 있도록 한다. CloudFront를..

[Hongflix] 원본 비디오 업로드 --> 스트리밍 파일, 썸네일 생성

OTT 서비스를 만드는 것이 목적이기 때문에 관리자 페이지에서 서비스할 동영상을 업로드하면 외부 저장소로 비디오가 업로드되는 기능을 만들어야한다. 비디오를 외부 저장소에 성공적으로 저장했다 해도, 비디오의 용량이 커질수록 클라이언트 입장에서 응답받는 시간이 길어져 서비스에 불편 함이 있을 것이라 판단했다. 따라서 클라이언트의 요청에는 원본 비디오가 아닌 스트리밍 파일을 전송하도록 그림을 그려봤다. 서비스의 흐름은 크게 두 가지 경우로 생각해봤다. 관리자 페이지에서 비디오 업로드 -> 파일 변환 라이브러리를 사용해 스트리밍 파일 생성 -> 프로젝트 디렉토리에 비디오 저장 관리자 페이지에서 비디오 업로드 -> AWS S3 버킷(클라우드 저장소)에 동영상 업로드 -> AWS Lambda를 통해 MediaCon..