aws2

AWS 개념 재정리 - 모듈 1 2

forcloud1 2026. 7. 12. 21:34

1. 클라우드 컴퓨팅이란? 

 

*온디맨드 제공: 사용자가 리소스가 필요한 순간에 바로 자원 제공 가능

-> +사용한 만큼에 대해서만 비용을 지불

 

2. 클라우드 컴퓨팅 배포 모델

1) 클라우드 기반 배포 = 퍼블릭 클라우드

-> 어플리케이션의 모든 부분이 클라우드 상에서 실행됨

 

2) 온프레미스 배포 = 프라이빗 클라우드 

-> 클라우드를 활용해서 리소스 활용도를 높임 

 

3) 하이브리드 배포 

-> 클라우드 기반 리소스를 온프레미스 인프라에 연결한다

 

3. 클라우드 컴퓨팅의 이점

1) 선행 비용을 가변 비용으로 대체한다

-> 선행 비용은 데이터센터와 같이 미리 투자를 사용해야 사용 가능한 리소스를 사용하는 경우에 발생한다

사용자는 실제로 사용하는 리소스에 대해서만(가변적) 비용을 지불하여 서비스 개발 비용이 절감된다 

 

2)  거대한 규모의 경제로 얻게 되는 이점

-> 클라우드 사용자가 증가할수록 종량제를 통한 요금 감소의 효과가 더 커짐


1. 아마존 EC2(Elastic Compute Cloud)

-> 하나의 서비스가 아닌, 다양한 서비스를 포함한다(EC2, EBS, ELB, ASG 등)

 

*가상 서버에 접근하는데 사용되는 서비스

*아마존 EC2 인스턴스의 형식으로 제공됨

 

1) 설정 옵션

*OS: 리눅스, 윈도우, 맥 OS

*CPU(Central Processing Unit): 가상머신에 사용할 컴퓨팅 성능과 코어 개수

*RAM(Random Access Memory): 메모리의 크기

*Storage Space, Network Card, Firewall rules(보안그룹), Bootstrap script(그 카클에도 있는 사용자 머시기) 등 설정 가능

 

@EC2 User Data

= 인스턴스가 부팅될 때 실행되는 스크립트/데이터로 주로 EC2 인스턴스의 초기 설정을 자동화하는 데 사용된다.

 

*bootstrapping : 머신이 작동할 때 명령을 시작하는 것, 부트 작업을 자동화하는 것

*스크립트는 처음 시작할 때 한번만 실행되고 다시 실행되지 않음. 인스턴스 시작 이후에는 수정 불가

*암호화되지 않은 텍스트로 저장되므로 민감한 정보를 포함해서는 안된다.

 

2) EC2 인스턴스 유형

 

1. 범용 인스턴스

-> 리소스를 균형있게 제공한다

 

2. 컴퓨팅 최적화 인스턴스(C로 시작)

-> 컴퓨팅 집약적인 어플리케이션에 적합하다

 

3. 메모리 최적화 인스턴스

-> 대규모 데이터을 처리하는 워크로드에 적합하다

 

@워크로드란?

= 특정 작업을 완료하거나, 결과를 만들기 위해 필요한 처리 작업의 양과 유형

 

4. 가속 컴퓨팅 인스턴스

-> 그래픽, 게임 등 복잡한 워크로드에 적합

 

5. 스토리지 최적화 인스턴스

-> 대규모 데이터 집합에 대한 순차적 읽기 및 쓰기 엑세스가 많이 필요한 워크로드를 위해 설계됨

예로 분산 파일 시스템, 데이터웨어하우징 어플리케이션 등

 

 

3) 보안그룹

-> 카카오클라우드와 비슷. 허용 규칙만 포함하는 화이트리스트 방식을 사용한다(모든 인바운드 트래픽 차단)

-> IP 주소(v4, v6)나 다른 보안그룹(@default) 을 참조할 수 있다

 

*다대다 연결 가능. 한 인스턴스에 여러개 보안그룹/ 한개 보안그룹을 여러개 인스턴스에 연결할 수 있다

*EC2 외부에 있다. 트래픽이 차단되면 EC2 인스턴스는 확인할 수 없다

 

@기본 포트

 

22 == SSH(Secure Shell) 접속을 위해 열어야 함(리눅스 타입 인스턴스 원격 접속)

80 == http 접속을 위해 열어야 함

443 == https 접속을 위해 열어야 함

3389 == RDP(Remote Desktop Protocol) 접속을 위해 열어야 함(윈도우 타입 인스턴스 원격 접속)

 

@SSH

-> 원격 접속이 가능하게 해주는 응용 프로그램 또는 그 프로토콜

os별 사용 프로토콜

 

4) EC2 Instance Connect(EIC)

-> 키 파일 없이도 IAM 권한을 통해 안전하고 편리하게 인스턴스에 ssh로 접속할 수 있도록 함

 

* 보안 키 없이 인스턴스에 접근 가능, AWS 콘솔 버튼 클릭 한번으로 서버 접근

-> 보안성과 편의성이 높다

-> IAM 을 사용하면 IAM 정책과 역할로 권한을 제어할 수 있고, CloudTrail에 모든 접속 기록이 남는다

 

*Amazon Linux 2 에서만 작동.. 최신 버전 OS 이미지에는 EIC 에이전트가 기본 설치되어 바로 쓸 수 있다

*접속하려는 사용자에게 SendSSHPublicKey 권한이 부여되어 있어야 하고, 접속 대상인 인스턴스의 22번 포트는 열려있어야 함 

 

 

5) EC2 인스턴스 요금

 

1. EC2 On-Demand(기본)

 

*Linux/Windows : 1분 이후 초 단위로 청구

*다른 모든 OS : 시간 단위로 청구

 

-> 장기적인 약정 필요 없음

-> 단기적이고 중단이 없는 워크로드에서 추천됨(곧이 곧대로라 비싸서)

 

2. EC2 Reserved Instances(예약)

-> 리소스 자체가 아닌 할인 약정을(더 쓸거에요~) 예약하는 개념. 

 

*온디맨드에 비해 최대 72퍼 할인을 제공

*예약 기간: 1년/3년(할인율 더 높음)

*결제 옵션: 후불/부분 선결제/전액 선결제

*인스턴스 scope: Regional / Zonal(가용영역)

 

-> 사용량이 일정한 어플리케이션에 추천됨

-> 예약된 인스턴스를 Marketplace 에서 사고 팔 수 있음

 

@Convertible 예약 인스턴스

-> 인스턴스 유형, 인스턴스 패밀리, OS 등을 변경할 수 있지만 할인율이 더 낮다

 

3. EC2 Savings Plans(최대 72퍼)

 

*1년 또는 3년 시간당 10달러로 약정!

*사용량이 한도를 넘어서면 온디맨드 가격으로 청구된다(일반 예약도 마찬가지)

 

-> 특정 인스턴스 패밀리, 리전으로 고정되고 나머지 옵션은 유연하다

 

4. EC2 스팟 인스턴스

 

*미사용 EC2 인스턴스의 컴퓨팅 용량을 사용하며, 온디맨드의 최대 90퍼까지 비용 절감 가능

-> 해당 인스턴스에 대한 수요가 늘면 스팟 인스턴스가 중단될 수도 있음

-> 시작/종료 시간이 자유롭거나 중단되어도 괜찮은 워크로드에 적합하다(백그라운드 처리..)

 

@Spot Instance Requests

 

*max spot price를 설정한다. 현재 가격 < max 가격 일 때 인스턴스를 얻을 수 있음

-> 현재 가격이 사용자가 지정한 최대 가격보다 높아지면 언제든지 인스턴스가 종료될 수 있다

나는 현재 가격을 기준으로 지불하기 때문이다. 

 

-> 현재 가격은 AWS가 남는 서버의 수요와 공급에 따라 매시간 자동으로 책정한다

최대 가격이란 : 내가 이 금액까지는 스팟 인스턴스에 대해 지불할 수 있어!(예산 마지노선)

스팟 리퀘스트의 종류 두가지

1. one-time

-> 요청이 이행되는 즉시 스팟 인스턴스가 시작된다. 일회성 요청이기 때문에 요청이 사라진다.

 

2. persistent

-> 유효기간 동안 사용자가 요청한 스팟 인스턴스들이 계속 유효하다. 

가격 상승을 이유로 인스턴스가 방해받은 경우에도 요청이 다시 검증되고 나면 스팟 인스턴스가 재시작된다.

즉, 스팟 요청이 자동으로 생성된 스팟 인스턴스를 재시작한다.

 

**스팟 인스턴스를 영구히 종료하기 위해서는 먼저 스팟 요청을 취소한 다음, 연관된 인스턴스를 종료해야 한다.

 

5. EC2 Dedicated Hosts(전용 호스트)

-> EC2 인스턴스 용량이 완전히 사용자 전용으로 할당된 물리적 서버, 가장 비싸다

-> 법규/규정 준수 요구 사항을 만족할 수 있고, 기존 보유한 소프트웨어 라이센스를 등록해서 사용할 수 있다(라이센스 추가 구매 비용 절감)

 

6. EC2 Dedicated Instances(전용 인스턴스)

-> 다른 인스턴스와 물리적으로 격리된 인스턴스, 인스턴스 배치에 대한 제어가 없다

(인스턴스 정지 후 하드웨어 이동 가능)

 

-> 원래 EC2는 물리 서버 한 대를 여러 기업이 가상머신의 형태로 공유하지만,

전용 인스턴스는 다른 회사의 가상머신과 물리적으로 격리된다.. 이때 어떤 랙에 넣을지는 AWS가 결정

, 보안/규제 준수가 목적이다('내꺼'를 지키는건 전용 호스트)

 

7. EC2 Capacity Reservation

 

*지정된 특정 AZ에서 필요한 기간 동안 온디맨드 인스턴스의 용량을 예약할 수 있다

-> 필요할 때 언제든지 EC2 용량에 엑세스할 수 있다

-> 약정 기간이 없고, 요금 할인이 없음

-> 인스턴스를 실행하든 안 하든 온디맨드 요금 부과

 

-> 특정 AZ에서 실행해야 하는 단기적이고 중단되지 않는(뽕을 뽑는..) 워크로드에 적합


1. EC2 크기 조정

-> 확장성을 위해서는 사용자 수요 변화에 자동으로 대응하는 아키텍처가 필요하다. 

 

1) 확장성과 고가용성

 

*Scalability = 어플리케이션이 조정을 통해 더 많은 양을 처리할 수 있는 능력

 

1. Vertical Scalability(수직 확장) = 스케일 업/다운

 

*인스턴스의 크기를 확장하는 것. 보통 한계가 존재함.. 

*RDS, ElastiCache는 수직 확장이 가능하다(DB와 같이 분산되지 않은 시스템에서 흔히 사용)

 

2. Horizontal Scalability(수평 확장) = 스케일 아웃/인

 

*어플리케이션의 (같은 사양의) 인스턴스 수를 늘리는 것

-> 분산 시스템이 있다는 것을 의미함

-> Auto Scaling group / 로드밸런서

 

*High Availability = 수평 확장과 함께 사용되는 개념

-> 시스템이 적어도 두 개 이상의 리전/가용영역 에서 가동중인 것을 의미한다

-> 고가용성의 목표: 시스템 무중단

 

2) 로드 밸런서

구조

*왜 로드밸런서를 사용하는가?

-> 부하를 다수의 인스턴스로 분산하기 위해서(부하 분산)

-> 어플리케이션에 단일 엑세스 지점을 노출함(DNS)

-> 정기적인 헬스체크로 인스턴스 관리 easy

 

*왜 ELB(Elastic Load Balancer)인가?

-> AWS가 관리하는 로드 밸런서로, 자체 로드밸런서를 설정할 때의 노력이 필요없어짐

-> 다수의 AWS 서비스와 연동되어 편리함을 제공

-> 정적 DNS 이름을 제공!!!

 

1. Health Checks(상태 확인)

 

*특정 포트와 라우트(/health)에서 수행

-> 응답이 200이 아니면 해당 인스턴스는 건강하지 않은 상태이다

구조

-> 로드밸런서가 전달하는 트래픽을 처리할 수 있는 인스턴스의 가용성을 파악함

보안그룹 설정

1. 로드밸런서

-> 모든 http/https 트래픽을 허용함(받음)

 

2. EC2 인스턴스

-> 로드밸런서로부터 오는 http 트래픽만 허용함

 

 

2. 로드밸런서 종류 - 4가지

 

1. Classic Load Balancer - 시험 제외

 

2. Application Load Balancer(ALB)

 

*http/2 와 Websocket 지원, 리디렉션 지원


@http/2란? 

= 기존 http/1.1의 성능 한계를 극복하기 위해 설계된 네트워크 프로토콜

 

**주요 특징

*멀티플렉싱: 하나의 TCP 연결로 여러개의 요청과 응답을 동시에 주고받을 수 있음(병렬 처리)

*바이너리 프레이밍: 텍스트 기반이던 기존 방식과 달리 데이터를 바이너리 형태로 인코딩하여 전송 속도를 높이고 오류를 줄임

*헤더 압축: 중복되는 헤더 정보를 압축해서 전송하는 데이터 양을 최소화한다

*서버 푸시: 클라이언트가 요청하지 않은 CSS등의 리소스를 미리 캐시에 넣어서 웹 페이지 로딩 속도를 크게 향상시킴

 

@Websocket 이란?

-> 클라이언트와 서버 간 지속적인 TCP 연결을 유지해서 양방향으로 실시간 데이터를 주고받을 수 있게 하는 프로토콜

 

**주요 특징

*실시간 양방향 통신(Full-Duplex) : 클라이언트만 서버에 정보를 요청할 수 있는 일반적인 http 통신과 달리, 

양쪽 모두가 원할때 언제든 데이터를 보낼 수 있음

 

*낮은 오버헤드: http 핸드셰이크 이후에는 추가 헤더 정보 없이 최소한의 데이터(프레임)만 주고받기 때문에

네트워크 부담이 적다

 

*지속 연결: 한번 맺어진 연결은 명시적인 중단이 없다면 유지된다

 

@리디렉션이란? 

-> 사용자가 원하는 원래 주소 대신, 사전에 지정된 다른 주소로 자동으로 방향을 돌리는 기능


*http(7계층, Application layer) 전용 로드밸런서

*여러 Target group 간 다수 http 어플리케이션의 라우팅에 사용됨

http 기반 트래픽 라우팅 구조

**Target Groups

1) EC2 인스턴스(auto scaling group으로 관리될 수 있음) - http

2) EC2 작업(EC2 자체에서 관리됨) - http

 

3) 람다 함수 - http 요청이 JSON 이벤트로 변환됨

4) IP 주소 - 프라이빗 IP여야 함

 

-> ALB의 헬스 체크는 대상 그룹 수준에서 이루어진다.

 

**대상 그룹에 따른 라우팅

1) URL 경로를 기반으로 라우팅

2) URL 호스트 이름을 기반으로 라우팅

3) 쿼리 스트링, 헤더를 기반으로 라우팅

3번 방식 라우팅

 

*동일 EC2 인스턴스 상의 여러 어플리케이션에 대한 로드밸런싱 지원

-> 이때 각 프로그램은 서로 다른 포트번호를 사용해서 구별된다(쇼핑 앱/로그인 앱/결제 앱 등)

-> 마이크로 서비스나 컨테이너 기반 어플리케이션에 가장 적합하다

 

@어플리케이션 서버는 클라이언트의 IP를 직접 보지 못한다.

-> 클라이언트의 실제 IP는 X-Forwarded-For 에 삽입됨

-> 포트와 프로토콜(X-Forwarded-Port/Proto) 도 얻을 수 있다.

 

 

 

 

3. Network Load Balancer(NLB)

4. Gateway Load Balancer(GWLB)

 

3) Auto Scaling

와 로드밸런서