Elastic Block Store => ec2 인스턴스 저장소라고 생각하면 됨, 인스턴스가 종료된 이후에도 데이터를 지속할 수 있음.
인스턴스를 재성성하고 EBS Volumne을 마운트하면 데이터를 다시 받을 수 있다.
ccp 레벨의 ebs volumne은 하나의 ec2 인스턴스에만 마운트 가능함.
EBS Volume을 생성할 때 특정 가용역역에서만 가능함. us-east-1a에서 생성된 경우 us-east-1b에는 연결이 불가능
네트워크 드라이브, 물리적 드라이브가 아님. 네트워크 연결된 환경에서 사용 가능함.
스냅샷을 이용한다면 다른 가용영역으로도 볼륨을 옮길 수 있다, 용량을 미리 결정해야한다.
인스턴스 하나에 2개의 ebs volume 연결 가능
EC2 인스턴스를 생성할 때 콘솔에서 EBS 볼륨을 생성하면 끝에서 두 번째 열에 종료 시 삭제 옵션이 존재
기본 설정으로는 루트 볼륨에 체크되어 있고 새로운 EBS 볼륨에는 체크가 되어 있지 않음
이 옵션을 통해 EC2 인스턴스 종료 시 EBS 행동을 제어할 수 있습니다
기본적으로 루트 EBS 볼륨은 인스턴스 종료와 함께 삭제되도록 설정이 되어 있죠
EBS VOLUME의 특정시점에 대한 백업임.
스냅샷을 통해 EBS VOLUME을 다른 가용영역으로 전달 가능함.
FSR (FAST SNAPSHOT RESTORE) : 스냅샷을 완전 초기화해 첫 사용에서의 지연 시간을 없애는 기능, 비용이 많이 발생, 빠르게 EC2 인스턴스 초기화 가능.
Amazon Machine Image : 아마존 머신 이미지 => ec2 인스턴스를 통해 만든 이미지를 통칭함.
ec2인스턴스를 시작하기 위해 소프트웨어, 설정파일, 운영체제 추가 가능(설정을 도와주는 파일이라고 생각하면됨)
EC2인스턴스 하드웨어 성능을 높히고 싶을 때 사용. EC2 인스턴스는 가상 머신이지만 실제로는 하드웨어 서버에 연결되어 있음.
이와 같은 서버에는 해당 서버에 물리적으로 연결된 디스크 공간을 가짐.
특정유형의 instance는 ec2 instance store라고 불리며, 이는 해당하는 물리적 서버에 연결된 하드웨어 드라이브를 가리킴.
I/O 성능 향상을 위해 사용함. 주의점 즉 인스턴스 스토어를 중지 또는 종료하면 해당 스토리지 또한 손실된됨.
장기적인 스토리지로는 사용 X => 필요에 따라 데이터를 백업해두거나 복제해놓아야함.
GP2/GP3 : 범용 SSD 볼륨 => 비용효과적, GP3는 IOPS와 처리량을 독자적으로 설정 가능하지만, GP2는 둘이 연결되어 있음.
IO1/IO2 : 최고성능 SSD 대용량, 지연시간 낮음
ST1 : 저비용의 HDD 볼륨 잦은접근과 처리량이 많은 워크로드용
SC1 : 가장 비용이 적게듬, 접근빈도가 낮은 워크로드용
하나의 EBS 볼륨을 같은 가용 영역에 있는 여러 EC2 인스턴스에 연결할 수 있게 해 줌.
EBS VOLUME 중 IO1, IO2제품군에서만 사용가능함. 동시에 일고 쓰기 가능함.
해당 가용 영역 내에서만 사용할 수 있습니다 한 AZ에서 다른 AZ로 EBS 볼륨을 연결할 수 없음.
다중 연결의 또 다른 제한은 한 번에 16개의 EC2 인스턴스만 같은 볼륨에 연결할 수 있다는 점임.
VOLUME 생성 => 데이터, 전송데이터, 스냅샷.. 등등 암호화됨.
KMS에서 암호화 키를 생성해 AES-256 암호화 표준을 갖음.
Elastic File System : 관리형 NFS 네트워크 파일 시스템 많은 EC2인스턴스에 마운트 가능(EC2 인스턴스는 서로 다른 가용영역에 있을 수 있기 때문) => 파일 공유가능함.
EBS VOLUME은 기본적으로 하나의 인스턴스에만 연결가능함.
사용량에 따라 비용지불(프로비저닝 할 필요 X)
인스턴스 스토어 : EC2에 첨부되어있음. EC2 인스턴스가 손실되면 스토리지도 손실됨.
확장성 : APP이 조정을 통해 더 많은 트래픽을 처리가능
수직확장성 : 인스턴스 크기 확장하는것을 의미함.
EX) EC2를 쓸 때 애플리케이션이 t2.micro로 구동된다면 이 애플리케이션을 확장해서
t2.large에서 구동하게끔 만들고자 함.
데이터베이스와 같이 분산되지 않은 시스템에서 흔히 사용됨. RDS나 ElastiCache 등의 데이터베이스에서 쉽게 찾아볼 수 있음, 하드웨어 리미트가 존재함.
수평확장성(탄력성) : APP에서 인스턴스나 시스템의 수를 늘리는 방법
클라우드 제공 업체덕분에 수평적인 확장이 수월해짐.
고가용성 : APP을 적어도 둘 이상의 AWS의 AZ(가용영역)나 데이터센터에서 가동중이라는 걸 의미함. => 고가용성의 목표는 데이터 센터에서의 손실에서 살아남는 것으로 센터 하나가 멈춰도 계속 작동이 가능하게끔 하는 것.
EC2에서 고가용성은 수직확장
스케일 아웃 : 인스턴수의 수가 늘어남
스케일 인 : 인스턴스의 수를 줄임.
로드 밸런서는 서버 혹은 서버셋으로 트래픽을 백엔드나 다운스트림 EC2 인스턴스 또는 서버들로 전달하는 역할을 함.
EC2인스턴스 3개, ELB, 서버가 존재. 유저들은 ELB로 바로 연결됨 => 각각의 인스턴스에 어느정도의 유저가 연결되어있는지를 측정하고, 유저를 EC2 인스턴스에 분배
EC2 인스턴스의 부하를 줄이는 용도
애플리케이션에 단일 액세스 지점(DNS)을 노출하게 되고 다운스트림 인스턴스의 장애를 원활히 처리할 수 있음.
관리형 로드밸런서라고도 함. AWS가 관리하며 어떤경우에도 작동할 것을 보장함, 다른 AWS 서비스들과 연동됨.
상태확인 : ELB가 EC2 인스턴스의 작동이 올바르게 되고 있는지의 여부를 확인하기 위해 사용됨.
상태확인은 포트와 라우터에서 이뤄짐.
AWS에서는 4가지의 LOAD BALANCER가 존재함.
현재 CLB는 AWS에서 지원되지 않음.
7계층 http 전용 로드 밸런서임. => 머신간 다수 http app 라우팅에 사요ㅗㅇ됨.
이런 머신들은 대상그룹이라는 그룹으로 묶임.
컨테이너와 ECS를 사용하게 됨. HTTP/2와 WebSocket을 지원하며 리다이렉트도 지원하므로 HTTP에서 HTTPS로 트래픽을 자동 리다이렉트하려는 경우 로드 밸런서 레벨에서 가능. 경로 라우팅도 지원함.
대상그룹, url 호스트이름, 쿼리등에 따른 라우팅 가능함.
마이크로 서비스나 컨테이너 기반 app에 가장 좋음. (도커나, amazon ecs) => 포트 매핑기능이 존재
하나만으로 다수의 어플리케이션 처리가능함.
대상그룹 => EC2인스턴스, ECS작업, IP주소, 람다함수...가 가능함.
로드 밸런서를 사용하는 경우에도 고정 호스트 이름이 부여됩니다
애플리케이션 서버는 클라이언트의 IP를 직접 보지 못하며 클라이언트의 실제 IP는 X-Forwarded-For라고 불리는 헤더에 삽입됩니다 => PORT, PROTO로 넣음
EC2 인스턴스가 클라이언트의 IP를 알기 위해서는 HTTP 요청에 있는 추가 헤더인 X-Forwarded-Port와 Proto를 확인해야 합니다