AWS

WONNY_LOG·2023년 6월 7일

AWS 배포 방식

aws에서 배포방식은 크게 2가지 이다. s3 방식과 EC2 방식.
보편적으로 기존 회사들은 s3 방식보다 EC2 방식을 많이 사용한다.
필자는 S3방식을 사용한 배포를 경험했고, 보통 그렇듯 S3단독으로 사용하지않고 cloudfront와 함께 사용했다.

AWS S3, CloudFront 배포 순서

  • 1단계: IAM으로 권한설정
  • 2단계: S3 버킷 만들기 (1 서비스 1 S3버킷)
  • 3단계: 빌드된 프로젝트 S3 버킷에 업로드
  • 4단계: CloudFront 배포 생성
    (s3 버킷을 바라보며 http, https 인지 생성)
    CloudFront배포 생성시에 AWS에서 원본 도메인을 생성해줌
  • 5단계: Route 53 에서 CloudFront 주소와 Route53으로 생성한 도메인을 연결
    (Route53으로 커스텀 도메인을 설정)
  • 6단계: 캐시 Invalidation(Purge) 하기

클라우드서비스란?

타사 제공업체가 호스팅하여 인터넷을 통해 사용자에게 제공하는 인프라, 플랫폼 또는 소프트 웨어를 말한다.
추가로 소프트웨어를 다운로드 하지 않고도 인터넷을 통해 사용자가 엑세스하는 모든 인프라, 플랫폼, 소프트 웨어 또는 기술을 클라우드 서비스라고 볼 수 있다.

다시말해, 클라우드 컴퓨팅 기술을 사용하여 제공하는 서비스. 여기서 말하는 클라우드 컴퓨팅이란 인터넷 기반 컴퓨팅의 일종으로 정보를 자신의 컴퓨터가 아닌 클라우드에 연결된 다른 컴퓨터로 처리하는 기술을 의미한다.

AWS,마이크로소프트, 구글, 네이버 등등이 있다.

클라우드 서비스 종류(컴퓨팅 모델)

  • SaaS(Software as a Service): 기존 전통적인 IT 솔루션들(하드웨어 + 소프트웨어)을 모두 서비스한다
  • PaaS(Platform as a Service): 플랫폼까지만 빌려주고 앱과 데이터는 기업이 직접관리한다.
  • IaaS(Infrastructure as a Service): 가상화와 서버 등만을 제공한다.

클라우드 서비스와 웹 서비스의 차이점?

차이점

IAM, S3, EC2, CloudFront, Lambda@Edge, Serverless에 대해 각각 설명해주세요. 각 방식을 배포에 사용할 경우 어떻게 동작나요?

IAM(Identity and Access Management)란?

AWS리소스에 대한 엑세스를 안전하게 제어할 수 있는 웹서비스.
이를 사용하여 사용자가 AWS리소스를 사용하도록 인증 및 권한부여를 제어할 수 있다.
AWS사용에 있어 가장 기초적으로 세팅해야하는 서비스이고 유저 로그인, 유저 간 권한관리, 패스워드 설정, 리소스 간 연계시 권한 등 세밀한 설정이 가능하다.
(보안적인 요쇼, 방대한 사이즈와 서비스를 관리하는 데 필수적이다.)

처음 AWS 계정을 생성할 때는 AWS서비스 및 리소스에 대한 완전한 권한이 있는 단일 로그인ID로 시작된다. 이를 루트사용자라고한다. AWS는 해당 자격으로 서비스를 사용하지 않을 것을 권장하고 있다.

역할

  • AWS 어카운트 관리 및 리소스/유저/서비스의 권한제어
    • 임시 권한 부여
    • 서비스 사용을 위한 인증 정보 부여
  • 유저의 생성 및 관리 및 계정의 보안
    • Multi-factor Authentication(유저가 로그인 할 때 일반적으로 사용하는 id, - pwd 뿐만 아니라 디바이스로부터 토큰형식의 임시 pwd를 받아 로그인 하는 방식으로 은행에서 많이 사용)
    • 유저의 패스워드 정책 관리
  • 다른 계정과의 리소스 공유
  • Identity Federation(Facebook 로그인, 구글 로그인 등 다른 인증수단 설정)

S3란(Simple Storage Service)?

객체스토리지 서비스이다.
파일서버의 역할을 하는 서비스이다.
트래픽이 증가함에 따라 장비를 증설해야하여 트래픽에 따른 시스템적인 문제는 걱정할 필요가 없다.
또한 파일에 대한 접근 권한을 지정할 수 있다.

특징

  • 많은 사용자가 접속을 해도(트래픽 증가) 이를 감당하기위한 시스템 작업을 별도로 하지 않아도 된다.
  • 무제한 사용량
    • 저장할 수 있는 파일 수의 제한이 없다.
  • 파일 인증을 붙여 무단으로 엑세스 하지 못하도록 할 수 있다.
  • HTTP와 BitTorrent 프로토콜을 지원한다.
  • 99.999999999% 내구성
    • 데이터를 여러 시설에서 중복으로 저장해 데이터의 손실이 발생할 경우 자동으로 복원한다.
    • 버전관리 기능을 통해서 사용자에 의한 실수도 복원이 가능하다.
  • 정보의 중요도에 따라서 보호 수준을 차등 할 수 있고, 이에 따라서 비용을 절감 할 수 있다. (RSS)

S3 기본 개념

  • 객체(Object)
    • S3에 데이터가 저장되는 기본 단위로써 파일과 메타데이터로 이루어져있다.
    • 객체 하나의 크기는 1Byte부터 5TB까지 허용되며 메타데이터는 MIME 형식으로 파일 확장자를 통해 자동으로 설정되며 사용자 임의로도 지정 가능하다.
  • 버킷(Bucket)
    • S3에서 생성할 수 있는 최상위 디렉토리의 개념으로 이름은 S3 리전 중에서 유일해야 한다.
    • 계정별로 100개까지 생성 가능하며 버킷에 저장할 수 있는 객체수와 용량은 무제한이다.
      (깃의 레퍼지토리 처럼 서비스별로 만들어지는 S3의 레퍼지토리라고 생각됨!)
  • 표준스토리지
    S3 서비스 수준 계약으로 객체에 대해 99.999999999%의 내구성을 보장하며 99.99%의 가용성을 제공한다. 하지만 높은 내구성을 보장해야 하는 만큼 비용이 높으므로 유실되면 안되는 원본 데이터, 민감정보, 개인정보 등의 중요한 데이터를 저장하는 것이 알맞다.
  • RRS(Reduced Redundancy Storage)
    표준 스토리지보다 저렴한 비용으로 데이터를 저장할 수 있다. RRS 옵션은 여러 시설 전반에 다양한 디바이스에 객체를 저장하며 일반 디스크 드라이브의 400배에 달하는 내구성을 제공하나 표준 스토리지 만큼 많이 객체를 복제하지는 않으므로 원본을 복제한 데이터나 가공한 데이터(예를 들어 썸네일 같은)의 저장에 알맞다.

CloudFront란?

.html, .css, .js 및 이미지 파일과 같은 정적 및 동적 웹 콘텐츠를 사용자에게 더 빨리 배포하도록 지원하는 웹 서비스이다.
엣지 로케이션이라고 하는 데이터 센터의 전 세계 네트워크를 통해 콘텐츠를 제공한다.
CloudFront를 통해 서비스하는 콘텐츠를 사용자가 요청하면 지연 시간이 가장 낮은 엣지 로케이션으로 요청이 라우팅되므로 가능한 최고의 성능으로 콘텐츠가 제공된다.
(콘텐츠가 엣지 로케이션에 없는 경우 CloudFront는 콘텐츠의 최종 버전에 대한 소스로 지정된 오리진(Amazon S3 버킷, MediaPackage 채널, HTTP 서버(예: 웹 서버) 등)에서 콘텐츠를 검색한다.)

구성

  • Origin Server

    • 원본 데이터를 가지고 있는 서버.
    • AWS에서는 S3, EC2 instance를 나타낸다.
  • Edge Server

    • AWS 에서 실질적으로 제공하는 전 세계에 퍼져있는 서버.
    • Edge Server에는 요청 받은 데이터에 대해서 빠르게 응답해주기 위해 캐싱 기능을 제공한다.

CloudFront를 구성하는 방법

  1. S3버킷 또는 고유 HTTP서버와 같은 오리진 서버를 지정하고,CloudFront는 이로부터 파일을 가져온 다음 전세계 CDN에 배포한다.
  2. 오리진 서버(s3)에 파일을 업로드한다. 이 파일은 일반적으로 웹페이지, 이미지 및 미디어이며 http를 통해 제공될 수 있는 모든 항목이다.
    (*s3버킷을 오리진 서버로 사용할 경우 버킷에 있는 객체를 공개적으로 읽을 수 있다. 이를 비공개하고 엑세스 사용을 제어할 수 있는 옵션도 있음)
  3. 사용자가 웹사이트나 애플리케이션을 통해 파일을 요청할 경우 CloudFront에 어떤 오리진 서버에서 파일을 가져올지 알려주는 CloudFront 배포를 만든다. 동시에 CloudFront에서 모든 요청을 기록할지, 배포를 만들자마자 활성화할지 여부와 같은 세부사항을 지정함.
  4. CloudFront는 새 배포에 도메인 이름을 할당한다. (CloudFront콘솔에서 확인가능)
    *CloudFront가 URL을 제공하지만, 대체 도메인 이름 추가 가능
    또는 api요청등과 같은 프로그램 요청에 대한 응답으로 반환된다.
  5. CloudFront에서 배포 구성을 모든 해당 CDN 혹은 CloudFront가 파일의 사본을 캐싱하는 지리적으로 분산된 데이터센터의 POP(Point of Presence) 서버 모음으로 보낸다.
    *캐싱의 최소 만료 시간은 0초이며, 최대 만료 시간은 없다.
*요약
사용자로부터 요청이 발생 > 요청이 발생한 Edge Server는 요청이 발생한 데이터에 대하여 캐싱 여부를 확인 > 캐싱 데이터가 존재하면 사용자에 요청에 맞게 응답하고 존재하지 않으면 Origin Server로 요청 >요청 받은 데이터에 대해 Origin Server로부터 전달 받은 Edge Server는 캐싱 데이터를 생성하고 사용자에게 응답

주의할점은

정해둔 캐시 정책 일정 전에 업데이트한 내용이 CloudFront CDN에 반영되길 원한다면 직접 무효화 기능(invalidation)을 이용해서 CloudFront CDN파일 내용을 무효화 시킨 후 수정된 파일이 캐시로 바로 반영될 수 있도록 설정해야한다.

CloudFront의 배포모델을 선택하고 > 직접 무효화기능을 사용하여 무효화 시켜줘야함

또한 CloudFront는 전세계에서 배포되는 서비스이기 때문에 바로 삭제가 불가능하다.
우선 비활성화 한뒤 삭제를 진행해야된다. 이 역시 시간이 오래 걸린다.

CDN(Content Delivery Network)엣지 로케이션

aws의 CDN제품으로 CloudFront만을 위한 캐시 서버(Cache Server)들의 모음이 위치하는 곳이다.
인터넷상에 콘텐츠를 캐싱하여 사용자에게 빠르게 전달 할 수 있도록 전세계 곳곳에 위치해 있다.
콘텐츠를 빠르게 받기 위해 물리적으로 멀리 떨어진 서버에서 다운로드하는 것보다, 가까운 서버에 접속하여 다운로드 받는 것이 속도가 훨씬 빠르기 때문에 CDN서비스는 전세계 주요 도시에 캐시 서버를 구축해 놓는다.
cdn이 주기적으로 각자의bucket에 올려진 내 소스코드를 다운받아서 업로드시킨다.
(=> 속도와 안정화를 위한 역할을함)

Lambda@Edge란

(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 로케이션에서 코드를 실행하여 성능을 개선하고 지연시간을 단축시킴
  • 비용절감 : 사용한 컴퓨팅시간만큼만 비용을 지불하고, 코드전체가 실행되지 않았을때는 요금이 부과되지 않는다.
    CloudFront CDN에 의해 생성된 이벤트에 대한 응답으로 코드를 실행한다.
  • 서버 관리 불필요 : 서버 관리 부담 없이 웹 애플리케이션을 전 세계로 배포하여 성능개선을 함.
  • 콘텐츠 전송 사용자 지정 :

EC2란(Elastic Compute Cloud)?

AWS에서 확장 가능한 컴퓨터를 제공하는 클라우드 컴퓨팅 서비스.
사용자의 입맛에 맞는 가상의 컴퓨터를 제공해주는 서비스라고 할 수있다.
클라우드 컴퓨팅은 인터넷(클라우드)을 통해 서버, 스토리지, 데이터베이스 등의 컴퓨팅 서비스이다.
즉, AWS에서 원격으로 제어할 수 있는 가상의 컴퓨터를 한 대 빌리는 셈.
성능, 용량을 사용한 만큼 비용을 지불하기 때문에 유연하게 사용할 수 있다. 그래서 탄력적이라는 의미의 단어(Elastic)가 붙어있다.

EC2는 다양한 요금옵션과 성능옵션 (인스턴스)들이 준비되어있다.
(*AWS에서 사용하는 EC2를 instance(인스턴스)라고 부름 -> 그리고 EC2사용을 인스턴트 생성이라고한다.)

AMI(Amazon Machine Images)

소프트웨어 구성이 기재된 템플릿이다.
AMI를 토대로 사용용도에 맞게 운영체제와 런타임등이 미리 세팅되어 있는 EC2 인스턴스를 생성할 수 있다.
(ex. 운영 체제, 애플리케이션 서버, 애플리케이션, CPU, RAM과 용량 등)
EC2 인스턴스를 시작하는 데 필요한 정보가 들어있는 이미지로, 인스턴스를 시작할 때 AMI를 지정해야한다.
동일한 구성의 인스턴스가 여러개 필요할 때는 한AMI에서 여러 인스턴스를 시작할 수 있다.

IMA(Identity and Access Management )

사용자와 그룹의 권한을 부여하고 관리할 수 있도록 해주는 AWS의 서비스이다.
AWS 계정에 대한 공유 접근 권한을 세분화하여 부여할 수 있다. (=> 자격 증명과 연동할 수 있다.)
또한, AWS의 서비스들과 연동하여 사용할 수 있으며, 무료이다.
멀티 팩터 인증또한 지원한다.

Serverless란?

서버를 관리할 필요 없이 애플리케이션을 구축하고 실행할 수 있도록 하는 아키텍처(모델)다.
서버리스는 동적으로 서버의 자원을 할당한다.

장점

  • 시간단축: 아이디어에서 출시까지 걸리는 시간 단축
  • 비용 절감: 효율적인 자원활용이 가능하다. 사용자가 없다면 자원을 할당하지 않고 대기하다 요청이 들어오면 그 때 자원을 할당해서 요청을 처리하고 다시 대기 상태로 들어가게 된다.
    대기상태를 제외한 실제 사용 자원에 대해서만 청구된다.
  • 대규모 조정: 고객의 니즈에 따라 간편하고 빠르게 대규모 조정이 이뤄질 수 있다.

버킷 bucket : 객체가 파일이라면 버킷은 연관된 객체들을 그룹핑한 최상위 디렉토리라고 할 수 있다. 버킷 단위로 지역(region)을 지정 할 수 있고, 또 버킷에 포함된 모든 객체에 대해서 일괄적으로 인증과 접속 제한을 걸 수 있다.
S3리전 : AWS의 서비스가 제공되는 서버의 물리적 위치로, 아마존에서 제공하는 국가별 지역이며 하나의 리전은 최소 2개 이상의 가용영역을 갖는다. 각 리전은 고튜의 코드가 부여된다. 리전별로 가능한 서비스가 다른다.
인스턴스 : 한 대의 가상 컴퓨터 환경 말한다. 사용자가 구현하는 것에 따라 웹서버, 빅데이터 처리, DB등등 여러가지 서비스를 구현 할 수있도록 제공해주는 컴퓨터이다.

클라우드 컴퓨팅 유형
IAM
IAM
S3
S3
CloudFront 와 CDN
CloudFront 와 CDN
EC2
Lambda
Lambda 아마자 리사이징

0개의 댓글