본문 바로가기
TIL/AWS

23.08.01

by J1-H00N 2023. 8. 1.

Elastic Load Balancer

 

1. Scalability vs Availability

Scalability와 Availability는 모두 분산 시스템에서 중요한 개념이지만 서로 다른 개념입니다.

Scalability는 시스템이 커지거나 작아질 수 있는 능력을 의미합니다. 이는 사용자 수, 데이터 양, 처리량 등이 증가할 때 시스템의 성능과 처리 능력을 유지하거나 향상시키는 것을 말합니다. 이를 위해서는 확장성 있는 시스템 디자인과 구현이 필요합니다.

반면 Availability는 시스템이 정상적으로 작동하고 사용 가능한 상태를 유지하는 능력을 의미합니다. 즉, 사용자가 요청하는 서비스를 항상 이용 가능한 상태로 유지하는 것입니다. 이를 위해서는 시스템의 안정성을 높이고 장애 대응 능력을 강화하는 것이 중요합니다.

따라서, Scalability는 시스템의 성능과 처리 능력을 유지하거나 향상시키는 능력을 의미하고 Availability는 시스템의 안정성과 사용 가능한 상태를 유지하는 능력을 의미합니다. 둘 다 중요한 개념이며, 분산 시스템을 설계하고 구현할 때 모두 고려해야 합니다.

 

2. ELB 살펴보기

Elastic Load Balancer는 AWS에서 제공하는 로드 밸런싱 서비스로, 다수의 EC2 인스턴스를 사용하여 트래픽을 분산시킵니다. 다양한 유형의 로드 밸런서가 있으며 각각의 특징은 아래와 같습니다.

  1. Application Load Balancer: OSI 모델 7계층에서 동작하며, HTTP/HTTPS 트래픽을 처리합니다. 또한, 컨테이너화된 애플리케이션과 연동하여 사용할 수 있습니다.
  2. Network Load Balancer: OSI 모델 4계층에서 동작하며, TCP/UDP 트래픽을 처리합니다. 높은 처리량을 필요로 하는 애플리케이션에 적합합니다.
  3. Classic Load Balancer: OSI 모델 4~7계층에서 동작하며, HTTP/HTTPS, TCP/UDP 트래픽을 처리합니다. 가장 오래된 형태의 로드 밸런서이며, 대부분의 경우 Application Load Balancer나 Network Load Balancer를 사용하는 것이 좋습니다.

각각의 로드 밸런서는 다양한 기능과 구성을 제공하며, 선택적으로 사용할 수 있습니다. 예를 들어 Application Load Balancer는 URL 경로 라우팅, 호스트 기반 라우팅 등 다양한 라우팅 정책을 제공합니다. 이러한 로드 밸런서는 고가용성과 확장성을 제공하므로, 인스턴스의 장애와 부하 분산에 대한 대응을 용이하게 해줍니다.

 

3. Application Loadbalancer 사용해보기

#!/bin/bash
apt-get update
apt-get install -y nginx
cat <<EOF > /var/www/html/index.html
<!DOCTYPE html>
<html>
<head>
<title>Welcome to Nginx</title>
</head>
<body>
<h1>Hello World!</h1>
<p>AWS deployed by Me!</p>
<p>private ip is $(hostname -f)</p>
</body>
</html>
EOF
sudo systemctl start nginx

 

4. SSL과 HTTPS

SSL 이란 ? Secure Sockets Layer

인터넷 상에서 정보를 안전하게 전송하기 위한 프로토콜입니다. SSL은 클라이언트와 서버 사이에 안전한 접속을 만들어주며, 전송되는 데이터를 암호화하여 정보의 안전성을 보장.

TLS란? Transport Layer Security

SSL을 보완한 기술로 현재는 사실 SSL이 아니라 TLS 기술이다.

그러나 모두가 아직까지 SSL이라고 부르고 있다!

 

Relational Database Service (관계형 데이터베이스)

RDS 소개

RDS는 EC2 인스턴스 내에서 호스팅될 수 있지만, EC2를 사용하여 RDS를 생성할 필요는 없습니다. RDS는 관리형 데이터베이스 서비스로, Amazon RDS 서비스를 통해 데이터베이스 엔진을 선택하고 필요한 크기 및 용량을 선택하여 인프라를 자동으로 프로비저닝할 수 있습니다. 따라서 EC2 인스턴스 내에 직접 데이터베이스를 설치하고 구성하는 대신 RDS 서비스를 사용하여 데이터베이스를 생성, 관리 및 확장할 수 있습니다.

  • SQL을 쿼리언어로 사용하는 관계형DB를 위한 서비스
    • Postgres, MySQL, MariaDB, Oracle, Microsoft SQL service ...
  • EC2 상에 DB만들기보다 RDS가 나은점
    • RDS는 DB를 위한 인프라를 자동으로 구축(provisioning), 업데이트
    • 지속적인 백업과 복구 기능 지원

모니터 대시보드 지원

  • 성능향상을 위한 read replicas 지원Disaster Recovery를 위한 multi AZ 지원수평/수직 확장성 지원EBS 백업 지원
  • 하지만 SSH로 접속 불가능하다

Storage Auto Scaling

  • DB 용량의 한계치까지 왔을 때 자동으로 용량을 늘려준다
  • 사용을 위해 Maximum Storage Threshold를 지정해줘야 한다.
  • 예측불가능한 트래픽이 있을때 유용하다!

Read Replicas

  • read replica는 오직 SELECT문만 가능하다. INSERT, UPDATE, DELETE는 불가능!

Multi AZ

  • 가용성을 높여준다
  • 확장성을 높여주지 않는다
  • 수동으로 설정할 필요가 없다
  • read replica도 multi az로 쓰일 수 있다

 

Route 53

1. DNS란?

DNS란 Domain Name System의 약어로, 인터넷에서 사용되는 컴퓨터나 기기들의 주소를 인터넷 사용자가 쉽게 이해하고 기억할 수 있는 도메인 이름(예: [www.google.com)으로](http://www.google.%29-172yn48f/) 변환해주는 시스템입니다.

인터넷에 연결된 모든 기기들은 IP 주소를 가지고 있지만, 이 주소는 일반 사용자들이 기억하기 어렵고 입력하기 번거로워서, 대신 이를 쉽게 이해하고 기억할 수 있는 도메인 이름으로 변환해주는 것이 DNS의 역할입니다.

DNS는 인터넷에서 매우 중요한 역할을 하며, 인터넷 사용자가 웹 사이트를 방문하거나 이메일을 보내는 등의 모든 인터넷 활동에서 사용됩니다.

  • www.google.com → 172.217.18.36
  • 계층 구조 (뒤쪽이 top level)
  • Registrar : Route53, GoDaddy …
  • DNS Records : A, AAAA, CNAME, NS
  • Zone File
  • Name Server
  • URL
    • Top level Domain
    • Second Level Domain
    • Subdomain
    • Protocol
  • ISP
    • KT, SK Broadband, LG U+

인터넷에서 도메인 이름을 이용하여 웹 사이트나 이메일을 찾을 때는 DNS(Domain Name System) 서비스를 사용합니다. DNS 서비스는 계층적으로 구성된 분산 시스템으로 이루어져 있으며, 이 계층 구조에서는 Root DNS Server, TLD DNS Server, SLD DNS Server가 각각의 역할을 수행합니다.

1. Root DNS Server

  • Root DNS Server는 DNS 계층 구조에서 가장 상위에 위치한 DNS 서버입니다.
  • 모든 DNS 쿼리는 먼저 Root DNS Server에 도착하여 해당 도메인의 TLD(Top-Level Domain) DNS Server의 주소를 알아내야 합니다.
  • Root DNS Server는 인터넷 상에서 전 세계에 총 13개가 운영되고 있으며, 이들은 전 세계의 인터넷 서비스 제공 업체들에 의해 운영됩니다.

2. TLD DNS Server

  • TLD DNS Server는 도메인 이름의 최상위 레벨에 해당하는 .com, .net, .org, .kr 등의 TLD를 관리하는 DNS 서버입니다.
  • 모든 도메인 이름은 하나 이상의 TLD에 속하며, TLD DNS Server는 해당 도메인 이름이 속한 SLD(Secod-Level Domain) DNS Server의 주소를 알려줍니다.

3. SLD DNS Server

  • SLD DNS Server는 도메인 이름의 중간 레벨에 해당하는 DNS 서버입니다.
  • 도메인 이름의 중간 레벨에 해당하는 부분은 일반적으로 사용자가 만든 이름이며, SLD DNS Server는 해당 도메인 이름에 대한 IP 주소를 반환해줍니다.

즉, Root DNS Server는 인터넷에서 가장 상위에 위치하며, TLD DNS Server는 도메인 이름의 최상위 레벨을 관리하고, SLD DNS Server는 중간 레벨을 관리합니다. 이들은 모두 인터넷 사용자가 도메인 이름을 입력하여 해당하는 웹 사이트나 이메일을 찾을 때 중요한 역할을 수행합니다.

nslookup naver.com
// 223.130.200.107

nslookup google.com
// 142.250.76.142

 

2. 도메인 등록하고 레코드 만들어보기

왜 53인가요?

53은 통신에 사용되는 프로토콜 중 하나인 DNS(Domain Name System)에서 사용하는 기본 포트 번호입니다. DNS는 인터넷에서 사용되는 컴퓨터나 기기들의 주소를 인터넷 사용자가 쉽게 이해하고 기억할 수 있는 도메인 이름으로 변환해주는 시스템으로, 이를 위해 기본적으로 TCP와 UDP를 사용하며, TCP 53번 포트와 UDP 53번 포트를 사용합니다.

 

3. IPv4v6, 레코드타입, TTL

IPv4 vs IPv6

IPv4와 IPv6는 인터넷 프로토콜 주소 체계입니다. IPv4는 32비트로 구성된 주소 체계로, 최대 약 43억개의 IP 주소를 사용할 수 있습니다.

192.168.0.1.

하지만, 인터넷 사용자의 증가로 인해 IPv4 주소가 부족해지는 문제가 발생했습니다.

이에 따라, IPv6가 등장하게 되었습니다. IPv6는 128비트로 구성된 주소 체계로, 약 340경개의 IP 주소를 사용할 수 있습니다.

2001:0db8:85a3:0000:0000:8a2e:0370:7334

IPv6는 IPv4에 비해 주소 고갈 문제를 해결할 수 있을 뿐만 아니라, 보안성과 기능 면에서도 개선되었습니다.

레코드 타입

DNS 레코드 타입은 다음과 같습니다.

  • A 레코드: 호스트네임과 IPv4 주소를 연결합니다.
  • AAAA 레코드: 호스트네임과 IPv6 주소를 연결합니다.
  • CNAME 레코드: 호스트네임을 다른 호스트네임과 연결합니다. 다른 호스트네임은 반드시 A 혹은 AAAA 레코드가 있어야 합니다.
  • NS 레코드: 호스트존의 네임서버를 지정합니다.

호스트존은 주소록입니다. public 호스트존은 도메인 네임의 IP 주소를 가리키며, private 호스트존은 사설망 내부에서 사용됩니다. 또한, SOA 레코드는 메타 데이터를, NS 레코드는 네임서버 정보를 담고 있습니다.

CNAME vs Alias

CNAME과 Alias는 DNS 레코드의 유형입니다. 두 레코드는 호스트 이름을 다른 호스트 이름에 매핑하는 데 사용됩니다. 그러나 두 레코드는 서로 다른 용도를 가지고 있습니다.

CNAME 레코드는 호스트 이름을 다른 호스트 이름으로 매핑합니다. 이전에 정의된 호스트 이름의 모든 레코드를 복사하여 새 호스트 이름에 할당합니다. 이는 호스트 이름이 변경되었거나 호스트 이름이 서로 다른 IP 주소를 가리키도록 하려는 경우에 유용합니다.

CNAME은 루트 도메인이 아닌경우에만 적용가능합니다.(ex app.mydomain.com O, mydomain.com X)

Alias 레코드는 호스트 이름을 Amazon S3 버킷, Elastic Load Balancer 또는 Amazon CloudFront 분산 된 웹 사이트와 같은 AWS 리소스에 매핑합니다. 이를 통해 AWS 리소스에 대한 DNS 레코드를 만들 수 있습니다. Alias 레코드는 Amazon Route 53에서만 지원됩니다.

Alias가 가능한 서비스들

  • Elastic Load Balancer
  • Cloudfront
  • API Gateway
  • Elastic Beanstalk
  • S3
  • VPC Interface Endpoints

Alias가 불가능한 서비스

  • EC2

TTL

TTL은 Time to Live의 약어로, DNS 레코드가 캐싱될 수 있는 최대 시간을 나타내는 값입니다. TTL이 높을수록 DNS 레코드가 캐싱될 수 있는 시간이 더 길어지므로, 캐시 효율성은 높아집니다. 일반적으로, TTL은 몇 분에서 몇 시간까지로 설정됩니다.

 

 

Vitrual Private Cloud

1. VPC란?

VPC는 Virtual Private Cloud의 약자로, AWS에서 제공하는 클라우드 컴퓨팅 리소스를 사용할 수 있는 가상의 사설 네트워크입니다. 사용자는 VPC 내에서 IP 주소 범위, 라우팅 테이블, 서브넷 및 보안 그룹을 설정할 수 있습니다. 또한, VPC를 사용하면 사용자는 가상 서버, 스토리지 및 데이터베이스와 같은 다양한 AWS 리소스를 시작하고 관리할 수 있습니다.

2. 서브넷, 게이트웨이, NAT

  • 서브넷은 VPC 내에서 IP 주소 범위를 지정하는 가상의 네트워크입니다. 서브넷은 라우팅 테이블에 연결되며, 각 서브넷은 하나의 라우팅 테이블에만 연결될 수 있습니다. 서브넷을 사용하면 VPC 내에서 다른 서브넷과 격리된 가상 네트워크를 생성할 수 있습니다. 이를 통해 다양한 서비스를 실행하는 데 필요한 보안 요구 사항을 충족시킬 수 있습니다.
  • 퍼블릭 서브넷은 인터넷 게이트웨이와 연결된 서브넷으로, 인터넷에 직접 연결되어 있는 서브넷입니다. 퍼블릭 서브넷을 사용하면 인터넷에서 직접 액세스할 수 있는 인스턴스를 실행할 수 있습니다. 이러한 인스턴스는 공인 IP 주소를 사용하며, 인터넷 게이트웨이를 통해 인터넷으로 트래픽을 보낼 수 있습니다.
  • 프라이빗 서브넷은 인터넷과 직접 연결되지 않는 가상의 네트워크입니다. 이러한 서브넷에서 실행되는 인스턴스는 인터넷에 직접 액세스할 수 없습니다. 대신, NAT 게이트웨이를 사용하여 인터넷을 통해 인스턴스에 연결하거나, VPC 피어링 등을 사용하여 다른 VPC와 연결할 수 있습니다.
  • VPC의 라우팅 테이블은 VPC 내에서 트래픽이 전달되는 방법을 제어하는 데 사용됩니다. 라우팅 테이블은 서브넷과 연결되며, 각 서브넷에는 하나의 라우팅 테이블이 있어야 합니다. 라우팅 테이블은 목적지 IP 주소와 대상 게이트웨이 또는 NAT 게이트웨이와 같은 대상을 매핑합니다. 라우팅 테이블은 여러 개의 라우팅 규칙을 포함할 수 있으며, 이를 사용하여 서브넷에서 트래픽을 전달하는 방법을 제어할 수 있습니다.
  • IGW (Internet Gateway)
    • VPC와 인터넷 간의 통신을 가능하게 하는 게이트웨이입니다.
    • 인터넷을 통해 인터넷 게이트웨이를 통해 VPC 내부로 들어오는 트래픽을 받아 해당 VPC에 연결된 서브넷으로 라우팅합니다.
  • NAT (Network Address Translation) Gateway
    • 프라이빗 서브넷에서 아웃바운드 인터넷 트래픽을 가능하게 하는 서비스입니다.
    • NAT 게이트웨이는 프라이빗 서브넷 내 인스턴스가 인터넷으로 나가는 트래픽을 대신하여 공인 IP 주소를 사용하고, 인터넷 게이트웨이로부터 들어오는 트래픽을 프라이빗 서브넷으로 라우팅합니다.

1. VPC란?

VPC는 Virtual Private Cloud의 약자로, AWS에서 제공하는 클라우드 컴퓨팅 리소스를 사용할 수 있는 가상의 사설 네트워크입니다. 사용자는 VPC 내에서 IP 주소 범위, 라우팅 테이블, 서브넷 및 보안 그룹을 설정할 수 있습니다. 또한, VPC를 사용하면 사용자는 가상 서버, 스토리지 및 데이터베이스와 같은 다양한 AWS 리소스를 시작하고 관리할 수 있습니다.

 

2. 서브넷, 게이트웨이, NAT

  • 서브넷은 VPC 내에서 IP 주소 범위를 지정하는 가상의 네트워크입니다. 서브넷은 라우팅 테이블에 연결되며, 각 서브넷은 하나의 라우팅 테이블에만 연결될 수 있습니다. 서브넷을 사용하면 VPC 내에서 다른 서브넷과 격리된 가상 네트워크를 생성할 수 있습니다. 이를 통해 다양한 서비스를 실행하는 데 필요한 보안 요구 사항을 충족시킬 수 있습니다.
  • 퍼블릭 서브넷은 인터넷 게이트웨이와 연결된 서브넷으로, 인터넷에 직접 연결되어 있는 서브넷입니다. 퍼블릭 서브넷을 사용하면 인터넷에서 직접 액세스할 수 있는 인스턴스를 실행할 수 있습니다. 이러한 인스턴스는 공인 IP 주소를 사용하며, 인터넷 게이트웨이를 통해 인터넷으로 트래픽을 보낼 수 있습니다.
  • 프라이빗 서브넷은 인터넷과 직접 연결되지 않는 가상의 네트워크입니다. 이러한 서브넷에서 실행되는 인스턴스는 인터넷에 직접 액세스할 수 없습니다. 대신, NAT 게이트웨이를 사용하여 인터넷을 통해 인스턴스에 연결하거나, VPC 피어링 등을 사용하여 다른 VPC와 연결할 수 있습니다.
  • VPC의 라우팅 테이블은 VPC 내에서 트래픽이 전달되는 방법을 제어하는 데 사용됩니다. 라우팅 테이블은 서브넷과 연결되며, 각 서브넷에는 하나의 라우팅 테이블이 있어야 합니다. 라우팅 테이블은 목적지 IP 주소와 대상 게이트웨이 또는 NAT 게이트웨이와 같은 대상을 매핑합니다. 라우팅 테이블은 여러 개의 라우팅 규칙을 포함할 수 있으며, 이를 사용하여 서브넷에서 트래픽을 전달하는 방법을 제어할 수 있습니다.
  • IGW (Internet Gateway)
    • VPC와 인터넷 간의 통신을 가능하게 하는 게이트웨이입니다.
    • 인터넷을 통해 인터넷 게이트웨이를 통해 VPC 내부로 들어오는 트래픽을 받아 해당 VPC에 연결된 서브넷으로 라우팅합니다.
  • NAT (Network Address Translation) Gateway
    • 프라이빗 서브넷에서 아웃바운드 인터넷 트래픽을 가능하게 하는 서비스입니다.
    • NAT 게이트웨이는 프라이빗 서브넷 내 인스턴스가 인터넷으로 나가는 트래픽을 대신하여 공인 IP 주소를 사용하고, 인터넷 게이트웨이로부터 들어오는 트래픽을 프라이빗 서브넷으로 라우팅합니다.

 

Simple Stroage Service = S3

 

1. S3 서비스 소개

Amazon Simple Storage Service(Amazon S3)는 인터넷 스토리지 서비스입니다. 이 서비스는 개발자나 IT 운영자가 웹 규모 컴퓨팅 작업을 수행하는 데 필요한 데이터 저장 공간을 제공합니다. Amazon S3는 웹 사이트 호스팅, 온라인 백업, 데이터 아카이브, 기업 애플리케이션, Big Data 분석 등 다양한 용도로 사용됩니다.

S3 서비스의 사용 예

  • 웹 사이트 호스팅
  • 멀티미디어 파일 저장 및 스트리밍
  • 애플리케이션 데이터 저장
  • 백업 및 복원
  • 아카이브

S3 서비스의 장점

  • 높은 내구성, 가용성 및 안정성
  • 손쉬운 사용 및 관리
  • 보안성
  • 높은 확장성

Buckets?

버킷이란 데이터를 저장하는 가장 상위 레벨의 폴더 형태의 컨테이너입니다!

S3에 저장되는 파일들을 ‘객체’ 라고 부르고 모든 객체는 ‘키’(디렉토리)로 식별됩니다.

prefix/delimiter/object-name

s3://my-bucket/my_folder/my_file.txt

Amazon S3에서 버킷은 다음과 같은 목적으로 사용됩니다.

  • 데이터를 저장하는 컨테이너 역할
  • 객체에 대한 공용 또는 개인적인 접근 권한을 설정하기 위한 위치
  • 객체에 대한 특별한 이벤트 알림을 설정하기 위한 위치
  • AWS 계정에서 버킷 및 객체 사용에 대한 비용 추적 및 모니터링을 위한 위치

버킷 네이밍 컨벤션

  • 대문자 금지, 언더스코어 금지
  • 버킷 이름은 3자(최소)에서 63자(최대) 사이여야 합니다.
  • 버킷 이름은 소문자, 숫자, 점(.) 및 하이픈(-)으로만 구성될 수 있습니다.
  • 버킷 이름은 문자 또는 숫자로 시작하고 끝나야 합니다.
  • 버킷 이름에 두 마침표를 나란히 붙여 사용하면 안 됩니다.
  • 버킷 이름은 IP 주소 형식(예: 192.168.5.4)을 사용하지 않습니다.

 

2. 버킷 폴리시

  • IAM과 유사하며 JSON 형식의 문서입니다.
  • 버킷의 모든 객체에 대한 액세스를 제어할 수 있습니다.
  • 특정 객체 또는 객체 그룹에 대한 액세스를 제어할 수 있습니다.
  • 특정 객체 또는 객체 그룹에 대한 액세스를 제어할 수 있습니다.
  • 액세스를 허용하는 IP 주소 또는 범위를 지정할 수 있습니다.
  • 액세스할 수 있는 리소스의 범위를 제한할 수 있습니다.
  • 암호화된 연결을 사용하도록 강제할 수 있습니다.

폴리시 예시

  • Resource : 버킷 혹은 오브젝트
  • Effect: Allow 혹은 Deny
  • Principal : 대상 유저
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowUserToGetBucket",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::ACCOUNT-ID:user/USERNAME"
            },
            "Action": "s3:GetBucketLocation",
            "Resource": "arn:aws:s3:::BUCKET-NAME"
        }
    ]
}

이 정책은 IAM 사용자 "USERNAME"이

GetBucketLocation 작업을 수행할 수 있도록

지정된 버킷 "BUCKET-NAME"에 대한 액세스를 허용합니다.

 

ARN

  • AWS에서 사용하는 고유한 식별자로 AWS의 모든 리소스에 대한 고유한 식별자 역할을 합니다.
arn:partition:service:region:account-id:resource-id
arn:partition:service:region:account-id:resource-type/resource-id
arn:partition:service:region:account-id:resource-type:resource-id

//예시
arn:aws:iam::123456789012:user/johndoe
arn:aws:s3:::my_corporate_bucket/
arn:aws:ec2:us-east-1:123456789012:vpc/vpc-0e9801d129EXAMPLE
  • ARN은 다음과 같은 형식으로 구성됩니다.
    • arn: AWS 리소스 이름을 가리키는 고정 문자열
    • aws: 리소스가 AWS에서 호스팅되는 것을 나타내는 고정 문자열
    • service: AWS 서비스 이름을 나타내는 문자열 (예: s3, lambda, ec2 등)
    • region: AWS 리전 이름을 나타내는 문자열 (예: us-east-1, ap-northeast-2 등)
    • account-id: AWS 계정 ID를 나타내는 숫자
    • resource-id: 해당 리소스의 고유 식별자 (예: S3 버킷 이름, Lambda 함수 이름 등)

 

ACL

  • Access Control List : 접근 권한을 가진 경우들을 명시합니다.

 

Cloudfront

1. Cloudfront 소개

Content Delivery Network

장점

  • 향상된 속도 : 지리적으로 가까운 서버에 캐싱된 데이터를 갖고 오기 때문에 무척 빠르다.
  • 안전 : CDN 서비스를 해주는 업체에서 방화벽을 제공할 뿐만 아니라 DDoS 공격이 와도 서버가 분산되어 있고 캐시기능으로 오리진 서버 트래픽은 늘어나지 않는다.

단점

  • 캐시 : 최신 동적 컨텐츠를 제공해야하는 경우에 적합하지 않다.
  • 비용이 추가 발생한다

 

2. Cloudfront 사용해보기

  • Architecture
    • Route53 → Cloudfront → S3
  • Route53과 Cloudfront가 연결되기 때문에 더이상 버킷이름을 도메인명과 맞출 필요가 없습니다.
  • Distribution 생성 시 CNAME과 root를 잊지마세요!

 

3. Invalidation 해보기

  • 캐싱이 되어있는 cdn을 초기화하는 방법입니다.
    1. AWS Management Console에 로그인하고 CloudFront 콘솔을 엽니다.
    2. 무효화를 생성하려는 배포(distribution)를 선택합니다.
    3. "Invalidations" 탭을 클릭한 다음 "Create Invalidation" 버튼을 클릭합니다.
    4. "Create Invalidation" 패널에서 무효화하려는 객체의 경로를 입력합니다. 와일드카드(*)를 사용하여 여러 개의 객체를 동시에 무효화할 수 있습니다.
    5. "Create Invalidation"을 클릭하여 요청을 제출합니다.

 

Elastic Beanstalk

EBS 등장배경

  1. Public Subnet: 로드 밸런서
  2. Private Subnet: 비즈니스 로직을 처리하는 레이어입니다. 보통 웹 애플리케이션 서버
  3. Data Subnet: 데이터를 저장하는 레이어입니다. 보통 데이터베이스 서버, 파일 서버 등이 사용

3-tier 아키텍처는 애플리케이션의 확장성과 유연성을 향상시키고, 높은 가용성과 성능을 제공합니다. 각 레이어를 독립적으로 확장할 수 있으며, 부하 분산과 장애 극복 기능을 쉽게 추가할 수 있습니다. 또한, 애플리케이션의 유지보수와 업그레이드가 용이하며, 보안성이 높습니다.

대부분의 웹앱은 같은 아키텍처를 가지고 있다.

서비스를 만들때마다 같은 인프라를 만들어야 한다면?

EBS는 개발자 관점으로 AWS를 접근한다.

  • DB설정, 로드밸런서 자동 설정
  • 그러면서 자동으로 스케일링(확장성)을 지원

기본적인 초기 설정들을 도와주어서 개발자는 코드에 집중할 수 있게 해주지만 세부설정은 여전히 다 건들일 수 있기 때문에 각 서비스들에 알고 있는 것은 필수입니다!

 

EBS 개념

  • Application
    • 애플리케이션 코드, 구성 및 관련 파일
    • Elastic Beanstalk는 다양한 프로그래밍 언어와 프레임워크를 지원합니다
  • Environment
    • Amazon EC2 인스턴스, 데이터베이스 인스턴스, 로드 밸런서 등

  •  

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

23.08.02  (0) 2023.08.02
23.07.31  (0) 2023.07.31