Available Zone(가용영역)
안에 2개이상의 가용영역, 엣지 로케이션(CDN, Cache server)으로 구성 가용영역은 하나의 데이터 센터로 볼 수 있고 같은 리전의 가용영역은 물리적으로 (0 ~ 100)KM 이상 떨어져 있음
https://www.youtube.com/watch?v=tvwDDM-Y-qE&list=PLfth0bK2MgIan-SzGpHIbfnCnjj583K2m&index=5
각 사용자가 바라보는 가용영역의 물리적 위치를 변경함으로 서로 섞이도록 설정된다.
ARN (Amazon Resource Number)
AWS 모든 resource
의 고유 아이디
arn:[partition]:[service]:[region]:[account_id]:[resource_type]/resource_name/(qualifier)
아스타링크(*) 로 다수의 resource 지정 가능
글로벌 서비스
CloudFront
IAM
Route53
WAF
지역 서비스
S3
기타 대부분 리소스
HVM (Hardware Virtual Machine)
하드웨어에서 직접 가상화를 지원
https://www.youtube.com/watch?v=hb_4Tf6bAtY&list=PLfth0bK2MgIan-SzGpHIbfnCnjj583K2m&index=7
Guest-OS 가 하드웨어와 통신하는 것과 거의 비슷한(near bare-metal) 빠른 속도를 제공한다
AWS 에 제공하는 EC2 에서 위 기술을 사용한다.
EC2 구성 4가지
인스턴스
- 가상 CPU, 메모리, 그래픽 리소스
EBS
- Elastic BLock Storage
, 가상 하드디스크
AMI
- Amazon Machine Image
, 인스턴스 실행을 위한 이미지, 우분투, Aws Linux 등 지원
보안그룹
- 가상 방화벽
기본적으로 EC2 생성시 위 4가지 구성을 설정해야 생성된다.
On Demand 시간(초) 측덩된 가격을 지불
Reserved Instance(RI) 미리 일정기간 약정하여 사용, 최대 75% 할인
Spot Instance 경매형식으로 남은 instance 를 구매, 최대 90% 할인 언제 종료될지 모름, 머신러닝, 빅데이터 시스템에서 효율적
Dedicated 전용 호스트, 실제 물리적 서버 임대 보안, 규정, 라이센스 등의 이슈가 있을 경우 사용
통신요금
외부로 나가는 트레픽에 대해서만 청구되며 내부로 들어오거나 리전간의 통신에서는 요금을 부과하지 않는다.
저장공간 요금
Amazon EC2 m5a small
앞의 알파벳은 인스턴스 타입(m: 유형) 숫자는 타입별 세대(5) 뒤의 접두사 아키텍쳐 타입(a: amd) 마지막은 사이즈(small)
인스턴스 타입 종류는 t, m
타입이 범용적으로 많이 사용됨
EC2 에서 사용하는 가상 하드티스크로 네트워크에 연결되어 read/write 된다.
EC2 인스턴스를 변경하는 경우에 유연하게 변경 가능
단 같은 가용영역에 있는 경우에만 접속 가능
인스턴스의 실행을 담당하는 root volume
으로 사용할 수 있으며 default 로 선택되는 스토리지 유형이다.
인스턴스가 정지될 경우 EC2 요금은 내지 않고 EBS 요금만 내면 된다.
설정을 통해 인스턴스 삭제시에 EBS 삭제를 막을 수 있다.
아래와 같은 EBS Type
이 존재한다.
실제 aws 에서 EC2 생성시 아래와 같은 설정을 할 수 있다.
EBS 를 유지할 경우에는 비용을 위해 EBS 요금을 내지 않고
스냅샷 형식의 효율적인 형태로 S3 에 저장하여 싼 요금으로 유지할 수 있다.
아래 4가지 중요한 요소를 가진다.
EC2 인스턴스 실행을 위한 단위 정보
OS, 아키텍쳐, 리소스 사용량 등
Snapshot
을 기반으로 AMI
구성이 가능하며 EC2 를 복제 및 다른 리전, 다른 계정에게 공유 가능하다.
실제 EC2에 저장되는 저장공간은 네트워크 기반 EBS
와 인스턴스 저장 기반 Instance Storage
으로 나뉜다.
Instance Storage
는 EC2 중지, 삭제시 같이 삭제된다, 대신 속도가 빠르다.
인스턴스 중지중에는 EBS 요금만 청구 인스턴스 중지후 재시작시 IP 변경됨
인스턴스 재부팅시에는 IP 변경 없음
중지와 최대절전의 차이는 메모리 내용 보존여부 최대절저은 인스턴스 사용 요금이 청구된다.
Vertical Scale(Scale Up)
: 성능을 올리기 위해 하드웨어의 성능을 올리는 방식, 성능이 올라갈수록 비용이 크게 증가한다. 성능 상승의 한계가 있음
Horizontal Scale(Scale Out)
: 성능을 올리기 위해 하드웨어의 대수를 올리는 방식, 성능과 비용이 비례로 올라간다.
클라우드 환경에선 스케일 아웃 방식의 오토 스케일링을 주로 사용된다.
오토 스케일링시에 무엇을, 언제 실행시킬지 지정해야 하는데
무엇을 실행시킬지 EC2, AMI, IAM(보안그룹, key), 유저데이터
등 시작구성을 설정하여 지정하고
언제 실행시킬지는 CloudWatch(CPU 점유율, 인스턴스 개수), ELB(Elastic Load Balancer)
를 통해 확인할 수 있다.
Instance 의 시작템플릿
, Auto Scaling 의 Auto Scaling Group
을 통해 다양한 설정을 할 수 있으니 참고
Auto Scaling
등을 통해 다수의 Instance
를 생성했을 때 로드밸런싱을 위한 서비스
또한 Sticky Session
기능을 지원하여 client-server
간의 세션을 기억하고 있다가 같은 서버로 패킷을 전송하는 역할도 지원한다.
Application Load Balancer
Network Load Balancer
Classic Load Balancer
Gateway Load Balancer
Gateway Load Balancer
의 경우 아래 사진처럼 패킷을 받아 일련의 전처리 후 전달하는 역할을 한다.
ALB 가 라우팅할 대상그룹
위 3개 외에도 ALB 가 다른 ALB 에게 다시 트래픽을 전달할 수 있다.
또한 프로토콜(HTTP, HTTPS, GRPC)지정 가능, 기타설정(분산 알고리즘, 고정세션) 등을 지정할 수 있다.
위 그림처럼 Load Balancer
의 Target Group
(대상 그룹)으로 Auto Scaling Group
을 지정할 수 있으며 Health Check
를 통해 연동기능또한 제공한다.
Auto Scaling Group
애서 상태확인 속성에서 ELB체크
옵션을 통해 연동할 수 있다.
https://www.youtube.com/watch?v=FeYagEibtPE&list=PLfth0bK2MgIa6w63IglYQD_qljDntSh-H&index=8 https://www.youtube.com/watch?v=ZISUSL431bY&t=478s
하나의 AZ 안에서 논리적으로 격리된 공간, 서브넷, 라우팅, 게이트워이 구성을 통해 네트워크 환경 구축이 가능함
계정 생성시 기본적으로 모든 리전에 Default VPC
가 자동으로 생성되어 있다.
삭제시에 다시 재생성하기 매우 까다로움으로 삭제X 권장
처음 EC2
생성시에 자동으로 네트워크 IP 설정 및 인터넷에 접근가능한 이유가 AWS 에서 편의를 위해 만들어준 Default VPC 때문
Default VPC
에 생성된 EC2
는 private IP
와 public IP
둘다 가지고 있다.
반면 Custom VPC
는 폐쇄적인 네트워크(private 서브넷
) 구성을 만들고 싶거나 할 경우 생성한다.
만든 Custom VPC
2개는 원래대로라면 서로 통신 불가능하지만 VPC Peering
을 통해 하나로 묶인것 처럼 사용 가능하고 다른 계정 과 Region
의 VPC
간에도 연결 가능하다.
VPC Peering
은 VPC
두개로 짝을 이루기 때문에 VPC
여러개를 모두 하나의 네트워크로 사용하려고 할경우 각 VPC Peering
을 모두 설정해주어야 한다.
또한 VPC
에 들어갈 리소스는 모두 한 Region
안에 포함되어 있어야 한다.
VPC
생성시 Route Table
, NACL
, Security Group
등의 네트워크 리소스가 자동으로 같이 생성된다.
EC2
의 방화벽역할을 해주는 서비스, 인스턴스에 대한 인바운드, 아웃바운드 트래픽을 제어하는 가상방화벽
EC2
의 네트워크 그룹이라 할수 있는 VPC
에 보안그룹
을 설정가능하고 EC2
단위로도 설정 가능하다.
최대 5개까지 EC2
에 설정 가능하다.
Allow
처리만 가능한 화이트리스트 형식으로 운영되기 때문에
특정 Ip, Port
만 Deny
하는 작업은 불가능하다.
보안그룹(Security Group)
과 다르게 블랙리스트 형식으로 운영되며 VPC
생성시에 기본적으로 생성된다.
맨 아래 default rule
로 모든 인바운드, 아웃바운드에 대해 거부하도록 세팅되어있다.
보안그룹
과 반대로 Deny
기능이 있기때문에 블랙리스트 정책 추가 가능하다.
Stateless
이기 때문에 인바운드, 아웃바운드에 설정처리를 모두 해주어야 원할한 패킷 통신이 가능하다.
일반적으로 클라리언트가 임시로 열은 언노운 포트인 1024 ~~ 65535(TCP)
를 모두 허용정책에 넣는다.
VPC
안의 네트워크 그룹인 서브넷
은 사용자가 별도로 생성해주어야 한다.
CIDR(Classless Inter-Domain Routing)
설정을 통해 서브넷
안에서 생성되는 리소스들이 어떤 IP 를 할당받아 생성될지 지정 가능
자동 IP 할당 기능도 제공한다
서브넷 AZ
에 종속적이며 하나의 서브넷으로 여러 AZ
의 리소스에 IP를 할당하는 작업은 불가능하다.
서브넷은 아래 2가지 종류로 나뉜다.
Public 서브넷
: 외부에서 접근이 가능한 네트워크영역Private 서브넷
: 외부에서 다이렉트로 접근이 불가능한 네트워크 영역, Public 서브넷
을 거쳐 접속하는 베스천 호스팅 방식으로 외부에서 접근 가능하다.계정 생성시 Default VPC
가 생성되고 할당된 AZ
가 2개라면
각 AZ
별로 Public, Private 서브넷
이 하나씩 생성되어 총 4개가 생성되어야 한다.
대부분의 인스턴스들은 보안을 위해 Private 서브넷
에 할당되며 Public Subnet
에 할당된 베스천 호스트
를 통해 경유접속한다.
VPC
생성시에 자동으로 만들어지며 생성되는 Default Route Table
이 있으며 서브넷 마다 별도로 Route Table
설저이 가능하다.
그림에서와 같이 게이트웨이를 통해 위부로 나가거나 다른 서브넷
으로 이동할 수 있도록 라우팅 정보를 설정 가능하다.
그림을 보면 Public
서브넷에 설정된 Instance
와 NAT Gateway
는 모두 Elastic IP
를 통해 공인IP를 부여 받았으며 별도로 서브넷 사설IP를 가지고 있다.
외부에선 저 Elastic IP
를 사용하여 바로 리소스로 접근이 가능하다.
각 서브넷에는 Route Table
이 설정되어 있으며 Private 서브넷
의 경우 외부로 나가는 경로가 NAT Gateway
를 바라보고 있다.
먼저 NAT Gateway
로 갔다가 다시 Router
를 통해 외부와 연결되는 방식이 사용된다.
AWS
에서 관리하는 고가용성 매니지드 서비스, VPC
내부에 생성된 서브넷
을 외부로 연결하고 싶을때 연결한다.
IGW
와 연결된 서브넷
의 경우 public 서브넷
, 그렇지 않을경우 private 서브넷
으로 칭한다.
IGW
와 마찬가지로 AWS
에서 관리하는 매니지드 서비스,
IGW
가 VPC
를 인터넷에 연결한다면 NAT
는 private 서브넷
을 인터넷에 연결시키는 역할을 한다.
NAT Instance
라고 단일 인스턴스(EC2)로NAT Gateway
역할을 하는 서비스도 있는데 트래픽에 따른 성능 부담때문에 자주 사용되진 않는다.
역으로 외부에서 private 서브넷
접근하기 위한 인스턴스이다(EC2
)를 부르는 이름, public subnet
에 위치하여 public IP 를 할당받고
public 서브넷
에 설정된 라우팅에 의해 private 서브넷
으로 접근 가능하다(외부 -> public -> private
로 이동이 가능하다).
private 서브넷
안에서 AWS
가 제공하는 여러 서비스(S3
, DynamoDB
)를 이용할 때
AWS의 네트워크를 벗어나지 않고 VPC
안에서 통신하는 것처럼 사용할 수 있도록 하는 서비스가 VPC Endpoint
이다.
VPC
와 서브넷
을 지정하여 endpoint
를 생성하고 생성된 endpoint
는 VPC
의 Routing Table
에 자동으로 설정된다.
Interface Endpoint
ENI(Elastic Network Interface)
기반으로 private ip
를 생성하여 각 서비스에 연결할 수 있도록 지원
(SQS, SNS, Kinesis, Sagemaker
등을 지원)
Gateway Endpoint
라우팅 테이블에서 경로를 지정
(S3, DynamoDB 만을 지원)