왜 CloudFormation 인가

AWS 클라우드(Cloud) 환경에서 리소스를 정의, 배포, 관리하는 서비스의 기능을 반영하여, 사용자가 클라우드 리소스를 형성(Formation)하고 관리하도록 하는 서비스이기 때문이다. 쉽게 말해, AWS 리소스를 자동으로 생성, 삭제, 변경하며, 이 인프라를 코드로 관리할 수 있는 IaC(Infrastructure as Code) 서비스 이다.

 

특징

  • 리소스를 한 번에 관리할 수 있다. 이때 리소스란, AWS의 모든 서비스들을 말한다.
  • 여러 환경(개발, 테스트, 운영 등)에서 재사용할 수 있다.
  • 자동화가 가능하다.
  • 수명 주기 관리(추가, 삭제, 변경)가 가능하다.

 

CloudFormation의 핵심 개념

  1. CloudFormation 템플릿
    • JSON 또는 YAML 형식으로 작성된 파일로, AWS 리소스의 구성, 속성, 그리고 리소스 간 종속성을 정의하는 것.
    • 예시: EC2 인스턴스, S3 버킷, 보안 그룹, RDS 데이터베이스 간의 의존성을 설정.
    • 이 템플릿은 반복적으로 재사용 가능하며, 동일한 인프라를 여러 환경(개발, 테스트, 운영)에 쉽게 배포할 수 있다.
      Resources:
        MyEC2Instance:
          Type: "AWS::EC2::Instance"
          Properties:
            InstanceType: "t2.micro"
       
    • CloudFormation 템플릿 파일의 예시.
  2. 스택(Stack)
    • CloudFormation 템플릿이 실행되면서 생성된 리소스들의 논리적 그룹
    • 리소스 묶음으로, 템플릿에 정의된 모든 리소스를 하나의 단위로 관리하고, 생성/업데이트/삭제 작업을 일괄적으로 수행할 수 있다.
    • 예시: EC2 인스턴스와 그에 연결된 보안 그룹, S3 버킷 등을 하나의 스택으로 관리.

    • 스택 세트 (Stack Set): 여러 AWS 계정 또는 리전에 동일한 스택을 배포하는 것.

 

CloudFormation 템플릿과 스택(Stack) 간의 관계에 대하여.

1. 템플릿은 스택의 설계도

  • 템플릿에 정의된 리소스(예: EC2, S3, RDS 등)와 이들 간의 관계, 속성 등을 기반으로 스택이 생성된다.
  • 템플릿이 없다면 스택을 생성할 수 없다. 

2. 스택은 템플릿의 실행 결과

  • 스택(Stack)은 템플릿을 실행하여 생성된 AWS 리소스의 논리적 그룹이기에, 템플릿의 내용을 기반으로 실제 리소스가 프로비저닝되며, 이 리소스들은 하나의 스택으로 관리된다.
  • 예를 들어, 템플릿에 EC2와 S3가 정의되어 있으면, 실행 결과로 EC2 인스턴스와 S3 버킷이 포함된 스택이 생성된다.

3. 템플릿과 스택 간의 상호작용

  • 템플릿을 수정하면 스택의 리소스도 업데이트된다.
  • 템플릿 변경(예: EC2 인스턴스 유형 변경) → 스택 업데이트 → 변경된 리소스 반영.
  • 템플릿이 삭제되지 않더라도, 해당 템플릿으로 생성된 스택은 독립적으로 유지된다.

 

4. 스택은 템플릿을 사용한 실행 환경

  • 동일한 템플릿으로 여러 스택을 생성할 수 있다.
  • 예: 같은 템플릿으로 개발 환경운영 환경에 각각 다른 스택을 생성.
  • 템플릿은 코드로 관리되므로, 스택의 구성을 버전 관리하거나 다른 환경으로 쉽게 배포할 수 있다.

 

관계의 핵심 (결론)

  • CloudFormation 템플릿 = 스택 생성의 설계도.
  • 스택 = 템플릿 실행의 결과물(리소스 그룹).

 

자 이제 CloudFormation 을 직접 들어가보자.

 

들어가보면 스택부터 생성하게 시킨다.

 

 

AWS 리소스들을 생성하려면 먼저 어떤 방식으로 리소스들이 종속 관계를 맺고 있는지 정의하여, 해당 설정 구조대로 리소스들이 생성되도록 해야한다. 현재 갖고 있는 템플릿이 없으므로 샘플 템플릿을 사용해보겠다.

 

더보기

LAMP 스택이란?

 

  • L: Linux (운영 체제)
  • A: Apache (웹 서버)
  • M: MySQL (데이터베이스) - MariaDB 또는 PostgreSQL로 대체되기도 함.
  • P: PHP (프로그래밍 언어) - Python, Perl 등으로 대체되기도 함.

 

 

EC2 에 대한 기본 설정이 포함되어 있는 것을 알 수 있다.

'Cloud > AWS' 카테고리의 다른 글

S3 (Simple Storage Service)  (0) 2024.05.05
CloudFront와 엣지 로케이션(Edge Location)  (0) 2024.05.05
리전(Region) vs 가용영역(AZ; Availability Zone)  (0) 2024.05.05

S3 (Simple Storage Service) 란?

AWS S3(Amazon Simple Storage Service)는 아마존 웹 서비스(Amazon Web Services)가 제공하는 객체 저장 서비스로, 인터넷을 통해 언제 어디서나 데이터를 저장하고 검색할 수 있도록 설계된 스케일이 매우 큰 스토리지 시스템이다. S3는 특히 데이터의 내구성과 가용성, 보안을 중시하는 설계로 알려져 있으며, 개인 사용자부터 대기업에 이르기까지 다양한 고객이 이용하고 있다.

 

특히, 정적 웹사이트 호스팅에 아주 적합한 서비스이다. S3는 본질적으로 고성능의 객체 스토리지 시스템으로, 웹사이트의 HTML, CSS, JavaScript 파일, 이미지와 같은 정적 자원을 저장하고 배포하는 데 최적화되어 있다.

 

대부분의 경우 최소 3개의 가용영역에 데이터를 자동 분산 저장한다. 대표적으로 백업 및 복원, 재해 복구(DR), 아카이브, 클라우드 스토리지, 정적 웹사이트 호스팅 등에 쓰인다.

 

S3는 오브젝트 스토리지(Object Storage)에 해당하며, 파일 시스템이나 블록 스토리지와는 다르게, 데이터를 오브젝트(데이터 덩어리)로 관리하며, 각 오브젝트는 고유한 ID와 메타데이터를 포함하여 저장되기 때문에 분산된 시스템 내 어디에 저장되어 있든지 상관없이 데이터를 찾을 수 있다. 이 구조 덕분에 매우 큰 규모의 데이터를 효율적으로 관리하고 접근할 수 있다.

 

 

구성요소

버킷(Bucket)

기본적인 데이터 저장 컨테이너 역할을 한다. 버킷은 리전 단위로 생성된다. 오브젝트(파일)를 저장하는 데 사용되며, 각 객체는 파일과 유사한 데이터와 함께 메타데이터를 저장하는데 사용된다. 각 S3 버킷은 전 세계에서 유일한 이름을 가지고 있으며, 이 이름을 통해 데이터에 접근할 수 있다.

 

객체(Object)

저장되는 개별적인 데이터 단위를 의미한다. 객체는 파일과 유사하지만, 트래디셔널 파일 시스템에서의 파일보다 더 넓은 개념을 포함한다. 객체는 데이터(파일의 내용과 비슷한 역할)와 메타데이터(파일에 대한 추가 정보)로 구성됩니다. 각 객체에는 고유한 식별자인 키(key)가 할당되어, 버킷 내에서 해당 객체를 찾을 수 있게 합니다. 또한, 버전 관리가 활성화된 버킷에서는 객체의 각 버전에 고유한 ID가 할당된다. 이를 통해 이전 버전의 객체를 복원하거나 변경 내역을 추적할 수 있다.

 

 

 

 

내용은 공부하면서 계쏙해서 추가될 예쩡 ...

엣지 로케이션

엣지 로케이션은 전 세계에 퍼져 있는 데이터 센터로, 사용자의 요청에 더 빠르게 응답하기 위해 콘텐츠의 복사본을 저장한다. 즉, 리전이나 AZ가 메인 정보 저장소라면, 엣지 로케이션은 캐싱이라고 생각하면 편하다. 콘텐츠(데이터)를 캐싱하여 사용자에게 더 짧은 지연 시간으로 콘텐츠를 전송할 수 있다.

 

글로벌 배포서비스인 AWS CloudFront, Global Accelerator에서 대표적으로 사용한다. 또한, 전세계 수백개의 엣지 로케이션이 운영 중이며, 엣지 로케이션과 AWS 리전, 가용영역끼리는 고속 네트워크로 연결되어 있다.

출처 : https://docs.aws.amazon.com/ko_kr/AmazonCloudFront/latest/DeveloperGuide/HowCloudFrontWorks.html

 

 

CloudFront

AWS가 제공하는 콘텐츠 전송 네트워크(Content Delivery Network) 서비스로, 전 세계에 분산된 엣지 로케이션을 사용하여 사용자에게 웹 콘텐츠와 API를 빠르게 전달한다. CloudFront는 엣지 로케이션을 이용하여 사용자와 가까운 위치에서 콘텐츠를 캐싱하고 제공함으로써 웹사이트의 로드 시간을 줄이고, 사용자 경험을 개선하며, 서버의 부하를 줄일 수 있다.

 

CloudFront는 그 구조상 엣지 로케이션에 의존적이다. 엣지 로케이션이 없다면, CloudFront는 콘텐츠를 사용자에게 더 빠르고 효율적으로 전달하는 주된 기능을 수행할 수 없다.

따라서, CloudFront 네트워크는 엣지 로케이션들로 구성되어 있으며, 사용자의 위치에 가장 가까운 엣지 로케이션에서 콘텐츠를 제공함으로써 빠른 콘텐츠 전달이 가능해진다.

 

CloudFront의 작동 방식

  1. 사용자가 웹 브라우저를 통해 콘텐츠를 요청
  2. 요청은 사용자에게 가장 가까운 CloudFront 엣지 로케이션으로 라우팅
  3. 엣지 로케이션은 요청된 콘텐츠가 캐시에 있는지 확인
  4. 캐시 히트
    콘텐츠가 캐시에 있는 경우, 즉시 사용자에게 제공
    캐시 미스
    콘텐츠가 캐시에 없는 경우, CloudFront는 원래의 서버에서 콘텐츠를 검색하여 사용자에게 제공하고 캐시에 저장

AWS의 데이터센터?

AWS는 많은 서비스를 데이터센터에서 제공하고 있다. 다만, 다수의 데이터 센터군이 세계 각국에 위치하고 있다. 또한, AWS에서는 데이터 센터라는 용어를 사용하지 않고, 리전과 가용영역으로 표현한다.

출처 : https://d0.awsstatic.com/global-infrastructure/Global-Infrastructure_2.15.png

 

 

리전 (Region)

 

AWS 리전은 물리적으로 분리된 지역에 위치한 하나 이상의 클라우드 데이터 센터 그룹이다. 즉, 데이터 센터군이 설치되어 있는 지역을 의미한다. 각 리전은 독립적으로 운영되며, 다른 리전과는 완전히 독립적인 인프라를 가진다.


AWS는 전 세계 여러 국가와 지역에 걸쳐 다양한 리전을 제공하는데, 예를 들면 다음과 같다.

 

각 AWS 리전은 고유의 코드를 갖고 있다. 이 코드는 프로그래밍적으로 리전을 식별할 때 사용된다. 예를 들어, Amazon EC2 인스턴스를 시작하거나 S3 버킷을 생성할 때 해당 리전을 지정하는 데 사용된다. 리전 코드는 주로 리전의 위치를 나타내는 문자와 숫자로 구성된다.

 

참고로, IAM 서비스 같은 경우는 계정관리 서비스이기 때문에 리전을 설정할 필요가 없다. 이러한 경우는 글로벌 리전으로 선택되는데, 이는 어떤 리전이든 상관 없다는 의미이다. 혹은 어떤 리전이든 선택되지 않았다는 의미이다.

 

또한, GovCloud 라고 불리는 미국의 정부부처/계약 기업만 사용할 수 있는 리전도 있다. 베이징 리전은 중국에 고객이 있고 중국을 거점으로 하는 기업만 이용할 수 있다.

 

 

가용 영역 (Availability Zone, AZ)

 

각 리전 내에는 여러 개의 가용 영역이 존재한다. 가용 영역은 물리적으로 분리된 데이터 센터의 집합을 말하며, 하나의 리전 안에서는 여러 개의 AZ가 있을 수 있다. 각 가용 영역은 네트워크 뿐만 아니라 공기 조절이나 전원도 다른 환경에서 운용되고 있다.

 

동일 AZ 안의 통신은 Private 주소로, 접속 비용이 들지 않는다. 동일 리전 내의 다른 AZ 간 통신은 인터넷을 경유하지는 않지만, AWS의 백본 네트워크를 사용하여 접속한다. 그래서 AZ간 통신은 통신비용이 든다. 동일 AZ간 통신에 사용되는 IP 주소는 사설 IP 주소일 수도 있고, 공용 IP 주소나 Elastic IP를 사용할 수도 있다. 일반적으로 사설 IP 주소를 사용하면 비용이 저렴해지며, 보안상의 이점도 있다.


각 AZ들은 고속의 프라이빗 네트워킹으로 연결되어 있어, AZ 간의 통신은 매우 빠르고, 네트워크 지연 시간이 극히 낮다. 사용자는 데이터와 애플리케이션을 여러 AZ에 걸쳐 배포함으로써, 하나의 AZ에 문제가 발생하더라도 서비스의 가용성과 내구성을 높일 수 있다.

 

자연 재해 등에 대비한 재난 복구 계획 시스템을 구성할 때는 다른 AZ에서 운용하는 것이 좋다. 다른 AZ에서 운용하는 구성을 멀티 AZ구성이라고 부른다. 멀티 AZ 구성을 하면 시스템 전체의 가용성이 향상된다.

 

AWS에서 제공하는 서비스와 이용 요금은 리전 마다 다르다. 새로운 서비스를 제공할 때는 먼저 미국 등 일부 리전에서 제공이 개시되고 점차 전세계로 뻗어나간다. 



 

요약 정리

리전은 큰 지리적 지역(국가 또는 지역)에 위치한 AWS 인프라의 집합이다.
가용 영역은 각 리전 내에서 물리적으로 분리되어 있는 하나 이상의 데이터 센터이다.
리전과 가용 영역을 효과적으로 사용하면, 애플리케이션의 가용성과 복원력을 크게 향상시킬 수 있다.

+ Recent posts