aws에서 배포방식은 크게 2가지 이다. s3 방식과 EC2 방식.
보편적으로 기존 회사들은 s3 방식보다 EC2 방식을 많이 사용한다.
필자는 S3방식을 사용한 배포를 경험했고, 보통 그렇듯 S3단독으로 사용하지않고 cloudfront와 함께 사용했다.
타사 제공업체가 호스팅하여 인터넷을 통해 사용자에게 제공하는 인프라, 플랫폼 또는 소프트 웨어를 말한다.
추가로 소프트웨어를 다운로드 하지 않고도 인터넷을 통해 사용자가 엑세스하는 모든 인프라, 플랫폼, 소프트 웨어 또는 기술을 클라우드 서비스라고 볼 수 있다.
다시말해, 클라우드 컴퓨팅 기술을 사용하여 제공하는 서비스. 여기서 말하는 클라우드 컴퓨팅이란 인터넷 기반 컴퓨팅의 일종으로 정보를 자신의 컴퓨터가 아닌 클라우드에 연결된 다른 컴퓨터로 처리하는 기술을 의미한다.
AWS,마이크로소프트, 구글, 네이버 등등이 있다.
IAM, S3, EC2, CloudFront, Lambda@Edge, Serverless에 대해 각각 설명해주세요. 각 방식을 배포에 사용할 경우 어떻게 동작나요?
AWS리소스에 대한 엑세스를 안전하게 제어할 수 있는 웹서비스.
이를 사용하여 사용자가 AWS리소스를 사용하도록 인증 및 권한부여를 제어할 수 있다.
AWS사용에 있어 가장 기초적으로 세팅해야하는 서비스이고 유저 로그인, 유저 간 권한관리, 패스워드 설정, 리소스 간 연계시 권한 등 세밀한 설정이 가능하다.
(보안적인 요쇼, 방대한 사이즈와 서비스를 관리하는 데 필수적이다.)
처음 AWS 계정을 생성할 때는 AWS서비스 및 리소스에 대한 완전한 권한이 있는 단일 로그인ID로 시작된다. 이를 루트사용자라고한다. AWS는 해당 자격으로 서비스를 사용하지 않을 것을 권장하고 있다.
객체스토리지 서비스이다.
파일서버의 역할을 하는 서비스이다.
트래픽이 증가함에 따라 장비를 증설해야하여 트래픽에 따른 시스템적인 문제는 걱정할 필요가 없다.
또한 파일에 대한 접근 권한을 지정할 수 있다.
.html, .css, .js 및 이미지 파일과 같은 정적 및 동적 웹 콘텐츠를 사용자에게 더 빨리 배포하도록 지원하는 웹 서비스이다.
엣지 로케이션이라고 하는 데이터 센터의 전 세계 네트워크를 통해 콘텐츠를 제공한다.
CloudFront를 통해 서비스하는 콘텐츠를 사용자가 요청하면 지연 시간이 가장 낮은 엣지 로케이션으로 요청이 라우팅되므로 가능한 최고의 성능으로 콘텐츠가 제공된다.
(콘텐츠가 엣지 로케이션에 없는 경우 CloudFront는 콘텐츠의 최종 버전에 대한 소스로 지정된 오리진(Amazon S3 버킷, MediaPackage 채널, HTTP 서버(예: 웹 서버) 등)에서 콘텐츠를 검색한다.)
Origin Server
Edge Server
*요약
사용자로부터 요청이 발생 > 요청이 발생한 Edge Server는 요청이 발생한 데이터에 대하여 캐싱 여부를 확인 > 캐싱 데이터가 존재하면 사용자에 요청에 맞게 응답하고 존재하지 않으면 Origin Server로 요청 >요청 받은 데이터에 대해 Origin Server로부터 전달 받은 Edge Server는 캐싱 데이터를 생성하고 사용자에게 응답
정해둔 캐시 정책 일정 전에 업데이트한 내용이 CloudFront CDN에 반영되길 원한다면 직접 무효화 기능(invalidation)을 이용해서 CloudFront CDN파일 내용을 무효화 시킨 후 수정된 파일이 캐시로 바로 반영될 수 있도록 설정해야한다.
CloudFront의 배포모델을 선택하고 > 직접 무효화기능을 사용하여 무효화 시켜줘야함
또한 CloudFront는 전세계에서 배포되는 서비스이기 때문에 바로 삭제가 불가능하다.
우선 비활성화 한뒤 삭제를 진행해야된다. 이 역시 시간이 오래 걸린다.
aws의 CDN제품으로 CloudFront만을 위한 캐시 서버(Cache Server)들의 모음이 위치하는 곳이다.
인터넷상에 콘텐츠를 캐싱하여 사용자에게 빠르게 전달 할 수 있도록 전세계 곳곳에 위치해 있다.
콘텐츠를 빠르게 받기 위해 물리적으로 멀리 떨어진 서버에서 다운로드하는 것보다, 가까운 서버에 접속하여 다운로드 받는 것이 속도가 훨씬 빠르기 때문에 CDN서비스는 전세계 주요 도시에 캐시 서버를 구축해 놓는다.
cdn이 주기적으로 각자의bucket에 올려진 내 소스코드를 다운받아서 업로드시킨다.
(=> 속도와 안정화를 위한 역할을함)
(ex.피드이미지 리사이징.. 사진 업로드 -> 원본이 S3에 저장 -> cloudfront가 이미지 리사이징 (람다 함수) -> 캐싱 후 응답)
사용자에게 더 가까운 위치에서 코드 실행
CloudFront의 기능 중 하나로서,
CloudFront는 Edge Location(데이터 센터의 전 세계 네트워크)를 통해 콘텐츠를 제공하는데,
Lambda는 지역(리전)별로 생성할 수 있게 되어있다.
이때, 전 세계 Region에 똑같은 Lambda를 만들어주어야할까?
이럴 때 사용하는 것이 Lambda@Edge이다.
버지니아 북부(us-east-1)에 Lambda@Edge를 만들어두면 AWS가 알아서 해당 람다를 Edge Location으로 복제해준다. 따라서 사용자에게 가까운 람다가 실행되어 지연시간을 단축할 수 있고, 성능을 개선할 수 있다.
(코드를 업로드하기만 하면 AWS Lambda가 최종 사용자와 가장 가까운 AWS 로케이션에서 뛰어난 가용성으로 코드를 실행하고 확장하는 데 필요한 모든 작업을 처리한다.)
( Lambda@Edge 가 버지니아 북부에서만 지원! )
Lambda@Edge 작동방식
AWS에서 확장 가능한 컴퓨터를 제공하는 클라우드 컴퓨팅 서비스.
사용자의 입맛에 맞는 가상의 컴퓨터를 제공해주는 서비스라고 할 수있다.
클라우드 컴퓨팅은 인터넷(클라우드)을 통해 서버, 스토리지, 데이터베이스 등의 컴퓨팅 서비스이다.
즉, AWS에서 원격으로 제어할 수 있는 가상의 컴퓨터를 한 대 빌리는 셈.
성능, 용량을 사용한 만큼 비용을 지불하기 때문에 유연하게 사용할 수 있다. 그래서 탄력적이라는 의미의 단어(Elastic)가 붙어있다.
EC2는 다양한 요금옵션과 성능옵션 (인스턴스)들이 준비되어있다.
(*AWS에서 사용하는 EC2를 instance(인스턴스)라고 부름 -> 그리고 EC2사용을 인스턴트 생성이라고한다.)
소프트웨어 구성이 기재된 템플릿이다.
AMI를 토대로 사용용도에 맞게 운영체제와 런타임등이 미리 세팅되어 있는 EC2 인스턴스를 생성할 수 있다.
(ex. 운영 체제, 애플리케이션 서버, 애플리케이션, CPU, RAM과 용량 등)
EC2 인스턴스를 시작하는 데 필요한 정보가 들어있는 이미지로, 인스턴스를 시작할 때 AMI를 지정해야한다.
동일한 구성의 인스턴스가 여러개 필요할 때는 한AMI에서 여러 인스턴스를 시작할 수 있다.
사용자와 그룹의 권한을 부여하고 관리할 수 있도록 해주는 AWS의 서비스이다.
AWS 계정에 대한 공유 접근 권한을 세분화하여 부여할 수 있다. (=> 자격 증명과 연동할 수 있다.)
또한, AWS의 서비스들과 연동하여 사용할 수 있으며, 무료이다.
멀티 팩터 인증또한 지원한다.
서버를 관리할 필요 없이 애플리케이션을 구축하고 실행할 수 있도록 하는 아키텍처(모델)다.
서버리스는 동적으로 서버의 자원을 할당한다.
버킷 bucket: 객체가 파일이라면 버킷은 연관된 객체들을 그룹핑한 최상위 디렉토리라고 할 수 있다. 버킷 단위로 지역(region)을 지정 할 수 있고, 또 버킷에 포함된 모든 객체에 대해서 일괄적으로 인증과 접속 제한을 걸 수 있다.
S3리전: AWS의 서비스가 제공되는 서버의 물리적 위치로, 아마존에서 제공하는 국가별 지역이며 하나의 리전은 최소 2개 이상의 가용영역을 갖는다. 각 리전은 고튜의 코드가 부여된다. 리전별로 가능한 서비스가 다른다.
인스턴스: 한 대의 가상 컴퓨터 환경 말한다. 사용자가 구현하는 것에 따라 웹서버, 빅데이터 처리, DB등등 여러가지 서비스를 구현 할 수있도록 제공해주는 컴퓨터이다.
클라우드 컴퓨팅 유형
IAM
IAM
S3
S3
CloudFront 와 CDN
CloudFront 와 CDN
EC2
Lambda
Lambda 아마자 리사이징