Terraform 활용하여 AWS Media컨텐츠 제공하는 인프라 구성 - 소개

empty·2020년 9월 24일
0
post-thumbnail

서론

Lambda를 사용하여 Media 컨텐츠 제공하는 인프라를 Terraform으로 작성하였다.
인프라 구성은 우선 사용자가 Route53에 접근하면 CNAME으로 ELB에 접근된다. 이 ELB는 EC2 웹서버(Autoscaling Group)를 가르키고 있고 EC2 웹서버에서 CloudFront의 미디어를 사용자에게 제공하게 된다.
이를 관리자는 모니터링 서비스로 관제를 하게 된다.

인프라 구성을 크게 3가지 구성으로 나누었는데
1. 백엔드 인프라
2. 프론트엔드 인프라
3. 모니터링 인프라
으로 나누었다.

이 인프라에는 Lambda함수로 원본미디어를 Transcode하는데 Lambda에 대해서는 아무것도 모름으로
Lambda 사용부분은 메가존블로그, 구글검색을 보고 작성하였다. 레퍼런스는 맨 아래에 작성해놓았다.

Lambda의 필수 구성요소는 아래와 같다.

AWS Lambda 함수의 필수 구성 요소

  1. 테스트
  2. 3rd-파티 패키지
  3. 모듈 번들러
    • ex) Node.js에서의 Guip, Webpack같은 모듈 번들러 사용
  4. AWS 리소스 지원
    • 최소한의 AWS IAM 역할 및 정책
    • ex) KMS, Cloudwatch, Logs
  5. 다중환경
    • 테스트 환경 및 스테이징 환경에서 코드를 검증
  6. 모니터링
    • Lambda 함수의 성공 or 실패의 여부를 모니터링 해야 함.

Architecture

구성순서

백엔드 인프라

  • 1. IAM
    • MediaConvert를 사용할 seunghyeon-mediaconvert
    • Lambda를 사용할 seunghyeon-lambda
      • MediaConvert의 권한 즉, seunghyeon-mediaconvert의 role을 얻어야 한다.
  • 2. S3
    • 원본 미디어가 저장될 seunghyeon-project-originalmedia
    • 변환된 미디어가 저장될 seunghyeon-project-transcodedmedia
  • 3. Lambda
    • MediaConvert 서비스 트리거하여 Transcode

프론트엔드 인프라

  • 0. Key-Pair
    • 인스턴스에 접속하기 위한 'Key-Pair' 생성
  • 1. VPC (모듈사용)
    • 기타 서브넷, Nat GW, SG 등등
  • 2. Security Group
  • 3. EC2
    • Bastion Host
    • Autoscaling Group
      • CloudFront 미디어 컨텐츠를 제공하는 웹 인스턴스 그룹
  • 4. ALB
    • Autoscaling Group
  • 5. Route53
    • 사설 도메인과 네임서버 동기화
  • 6. CloudFront
    • S3 transcoded 버킷과 연결 후 웹 EC2에서 동영상 제공

모니터링 인프라

  • 1. Cloud Watch
  • 2. SNS (모듈사용)

Reference

0개의 댓글