본문 바로가기

DevOps/AWS

(20)
AWS Lambda와 MediaConverter를 사용해 Vod 스트리밍 서비스 개발하기 AWS Lambda와 MediaConverter를 사용해 HLS Vod Steaming을 서비스를 개발해보겠습니다. 목차는 다음과 같습니다. 전체적인 구조 Adaptive Bitrate Streaming에 대해서 1. IAM 역할 만들기 2. S3 설정하기 3. Lambda 만들기 영상 업로드 및 변환 테스트 크롬에서 m3u8 파일 실행하기 전체적인 구조 클라이언트가 S3에 비디오 파일을 업로드합니다. 비디오가 입력 버킷에 업로드되는 즉시 Lambda 함수를 트리거합니다. 람다 함수는 인풋 파일, 설정, HLS 아웃풋 그룹 등의 설정을 토대로 Job을 생성하고 MediaConverter를 실행합니다. MediaConverter는 전달받은 Job을 토대로 HLS 파일로 트랜스 코딩을 진행합니다. 변환된 파..
[AWS] Spring Boot 와 멀티파트 업로드를 사용해 S3에 대용량 파일 업로드하기 이전 글에서 SpringBoot에서 S3로 파일(이미지, 동영상) 업로드하는 기능을 개발했습니다. [AWS] Springboot에 AWS S3 연동 (이미지, 동영상 업로드) 안녕하세요? 이번 시간엔 SpringBoot & AWS S3 연동하기를 진행해보려고 합니다. 따라 하시기만 해도 로컬에서 이미지, 동영상 파일 업로드가 가능하고, EC2에 배포한 환경에서도 파일 업로드가 가능 develop-writing.tistory.com 하지만 위 방식은 크게 두 가지 문제가 있습니다. 1. 대용량 파일을 업로드할 때 시간이 많이 걸립니다. 필자가 EC2 t2.small에서 S3로 업로드 테스트할 시 1.3GB 동영상은 무려 90초가 걸렸습니다. 동일 환경에서 멀티파트 업로드 방식을 테스트 시 해당 시간을 50..
[AWS] Springboot에 AWS S3 연동 (이미지, 동영상 업로드) 안녕하세요? 이번 시간엔 SpringBoot & AWS S3 연동하기를 진행해보려고 합니다. 따라 하시기만 해도 로컬에서 이미지, 동영상 파일 업로드가 가능하고, EC2에 배포한 환경에서도 파일 업로드가 가능합니다. 코드는 Github에 있고, 함께 보시면 더 이해하기 쉬우실 것 같습니다. 목차 1. AWS S3 버킷 설정 2. AWS IAM User 생성 3. 로컬 환경 개발 4. 이미지, 동영상 업로드 결과 확인 5. 배포 환경에서 업로드 확인 1. AWS S3 버킷 생성 S3 버킷을 생성할 때 원하는 이름을 기입합니다. 첫 번째새 ACL(액세스 제어 목록)을 통해 부여된 버킷 및 객체에 대한 퍼블릭 액세스 차단 을 해제해서 객체를(이미지 파일) 업로드할 수 있게 합니다. 두 번째 의의 ACL(액세스..
[AWS] AWS 인증서로(ACM) HTTPS 적용해보기 ACM이란 무엇일까요?? AWS Certificate Manager(ACM)은 SSL/TLS 인증서와 키를 만들고, 저장하고, 갱신하는 복잡성을 처리합니다. 비용은 무료이고 연마다 갱신할 필요가 없다는 게 가장 큰 장점입니다. AWS에서 제공하는 인증서를 적용하기 위해서는 몇 가지 조건이 있습니다. EC2 인스턴스를 1개 이상 구동 중이다. Route53을 이용 중이다. ELB(Elastic Load Balancer) 또는 CloudFront를 이용 중이다. 만약 도메인 주소가 없다면 이전 글에서 먼저 만들고 와야 합니다. 목차 ACM을 이용해 인증서 발급 로드밸런서 생성 Route53에서 생성한 도메인에 로드밸런서 등록 HTTPS 적용 확인 1. ACM을 이용해 인증서 발급 ACM 서비스 페이지에서 ’..
[AWS] Route 53으로 DNS 구매 및 도메인을 IP 주소 연결하는 법 목차 Route 53으로 도메인 구입하기 도메인 이름과 IP 주소 연결하기 Route 53으로 도메인 구입하기 AWS Route 53으로 접속한 후에 도메인 등록 버튼을 누르겠습니다. 위와 같이 원하는 도메인 이름을 적은 후에 장바구니 추가하고 도메인 기간, 가격을 확인한 후에 계속을 누르겠습니다. 그리고 아래 개인정보 보호 활성화도 체크되어 있는 대로 해놓고 계속을 누르겠습니다. 만약 도메인이 1년마다 자동갱신되는 것을 원치 않다면 비활성화를 클릭해야 합니다. 주문 완료를 클릭해 도메인을 주문합니다. 어느 정도 시간이 지나면 도메인이 등록됩니다. 등록된 이후에 호스팅 영역을 들어가면 Route 53에 의해서 도메인 이름이 자동으로 생긴 것을 볼 수 있습니다. 도메인 이름과 IP 주소 연결하기 호스팅 영..
[AWS] Jmeter를 사용해 서버 부하 테스트하기 JMeter를 설치해 EC2에 부하를 주도록 해보겠습니다. 서버에는 AWS EC2에 Apache 웹서버와 php가 설치되어 있습니다. Mac JMeter 설치하기 mac 환경을 기준으로 설치 방법입니다.. brew install jmeter 설치가 되었으면 아래 같이 터미널에서 입력하면 JMeter가 실행됩니다. jmeter JMeter 사용하는 법 Test plan을 클릭하고 오른쪽 마우스를 누른 후에 Add -> Threads -> Thread Group을 선택해서 들어가겠습니다. 그러면 아래와 같이 몇 명이 동시 접속할 것이며, 각각의 유저들이 몇 번 반복해서 접속할 것인가를 정할 수 있습니다. 제가 설정한 스레드 그룹은 다음과 같습니다. 그리고 이제 어떤 서버에 부하를 줄 것인지를 설정하기 위해서..
[AWS] Nginx, SpringBoot, CodeDeploy, Travis CI를 이용한 무중단 배포 시스템 만들기 이전 글에서 다음과 같은 구조로 자동 배포 시스템을 구축했습니다. Github에 push만 하면 자동으로 EC2에 새로운 버전의 jar가 배포되고 재 실행되어서 배포가 되었습니다. 하지만 위의 방식에는 단점이 존재합니다. 배포가 진행되는 도중에는 서버가 잠시 중단돼야 한다는 점입니다. CodeDeploy가 EC2에 새로운 버전의 jar를 배포할 때, 기존의 실행 중인 jar를 kill 한 후에 새로운 버전의 jar를 실행시킬 것입니다. 이 과정에서 서버가 잠시 중단되어 사용자들은 서비스에 접속할 수 없게 됩니다. 현재 우리가 많이 사용하고 있는 서비스들을 보면 새로운 버전의 업데이트가 일어나더라도 서비스가 중단되거나 하지 않고 무중단으로 배포가 이루어집니다. 이번 글에서는 Nginx를 이용해서 EC2 내..
[AWS] Travis CI와 AWS CodeDeploy를 사용한 자동배포 구축하기 #2 Spring Boot 기반의 서비스를 Travis CI와 AWS CodeDeploy를 사용해 자동 배포 시스템을 구축할 것입니다. 전체적인 구조는 다음과 같습니다. 전달 과정 1 Travis CI →AWS S3 jar 파일 전달 2 Travis CI → AWS CodeDeploy 배포 요청 3 AWS S3 → AWS CodeDeploy jar 파일 전달 4 AWS CodeDeploy → AWS EC2 배포 1편 안 보신 분들은 먼저 보고 오길 추천드립니다. 스프링 부트 서비스는 이전 글을 기반으로 하고 있습니다. 목차 1. CI & CD 소개 (#1) 2. Travis CI 연동하기 (#1) 3. Travis CI와 AWS S3 연동하기 (#1) 4. Travis CI와 AWS S3, CodeDeploy..