- AWS 컴퓨팅 서비스 종류
Instance(가상머신)
Container(컨테이너)
Serverlesss(서버리스)
- 가상머신 vs 컨테이너 vs 서버리스
![](https://velog.velcdn.com/images/pepperonipizza97/post/f6a68cfe-13e3-4035-867a-fb88df22c89a/image.png)
| 가상머신 | 컨테이너 | 서비리스 |
---|
장점 | - GB 단위 이미지 -OS 영역을 포함 - 고성능 서비스 제공 - 수분 안에 빠르게 배포 | - MB 단위 이미지 - OS 이미지와 무관하게 동작 - 관리가 다소 어려움 - 수 초 안에 빠르게 배포 | - 별도의 임미지 관리 필요 없음 - OS를 관리할 필요 없음 - 이벤트(API호출)를 통해서 기능 구현 - 별도 배포할 필요 없음 |
단점 | - 상대적으로 큰 임미지 사이즈 - 부팅하는데 시간이 오래 걸림 - OS의 종속성 | - 아키텍처가 복잡 - 관리하고 모니터링이 어려움 | - 클라우드 제공업체에 한정적 - 복잡한 애플리케이션 서비스에는 부적합 |
- EC2(Elastic Computer Cloud)가 무엇인가요?
- AWS의 가상머신 서비스 : Instance
- 필요에 따라 자유롭게 확장 가능
- 사용한 만큼 비용 지불
- 미리 정의된 템플릿, 혹은 아마존 머신 이미지(AMI)를 통해 즉시 인스턴스 생성 가능.
↓
Iaas(Infrastructure as a Service)
- EC2 설정 옵션
CPU
Memory
Disks
OS
Networking
사전
스크립트 구성
- EC2 인스턴스 유형
인스턴스 유형
- 범용
- 컴퓨팅 최적화
- 메모리 최적화
- 가속화된 컴퓨팅
- 스토리지 최적화
T4g.2xLarge
T4g -> 인스턴스 종류 및 세대
2xLarge -> 인스턴스 크기
- EC2 AMI(Amazon Machine Image)
AWS AMI
- 인스턴스 실행 시, 필요한 OS, 애플리케이션, 소프ㅡ트웨어 패키지가 포함된 템플릿
- AWS 혹은 제 3자에 의해 만들어진 것을 활용하거나, 직접 제작 가능
- 동일한 구성으로 여러 개의 인스턴스를 만들 때, 손쉽게 배포 가능!
AMI의 생명 주기
Public AMI -> 인스턴스 v1(여러개의 EC2 인스턴스 생성) -> 인스턴스 v2 -> 스냅샷 생성 -> 나만의 AMI: v2
- 요약
- AWS에는 대표적인 컴퓨팅 서비스로, 인스턴스, 컨테이너, 서버리스 방식이 있다.
- EC2 Instance는 AWS의 대표적인 가상머신 서비스이다.
- 사용 사례나 애플리케이션 특성에 따라 선택할 수 있는 수많은 EC2 인스턴스 유형을 제공한다.
- EC2 AMI는 OS, 애플리케이션, 소프트웨어 패키지 등이 사전 구성되어 있는 템플릿이다.
- 보안이 왜 중요한가요?
- 인가/인증(Ex. AWS IAM)
- 데이터 암호(전송하는 데이터 혹은 저장된 데이터)
- 접근 차단
- 보안 그룹(Security Group)이 무엇인가요?
- AWS 서비스 수신(Inbound), 발신(Outbound) 트래픽을 제어하는 가상 방화벽
- 수신과 발신에 필요한 정보 : IP, Port 번호, 프로토콜
- Inbound 트래픽은 Default로 Block 되
- 대표적인 Port: SSH : 22 / HTTP : 80 / HTTPS : 443 / MYSQL : 1433
- 보안 그룹(Security Group) 적용 예시
Security Group #1 : HTTPS 트래픽 허용
Security Group #2 : 10.10.10.10 트래픽 허용
악의적인 사용자 차단
- 보안 그룹(Security Group) 활용 사례
프로토콜 유형 | 프로토콜 번호 | 포트 | 소스 IP | 참고 |
---|
TCP | 6 | 80(HTTP) | 0.0.0.0/0 | 임의의 IPv4 주소에서 인바운드 HTTP 액세스를 허용함 |
TCP | 6 | 443(HTTPS) | 0.0.0.0/0 | 임의의 IPv4 주소에서 인바운드 HTTPS 액세스를 허용함 |
TCP | 6 | 80(HTTP) | ::/0 | 임의의 IPv6 주소에서 인바운드 HTTP 액세스를 허용함 |
TCP | 6 | 443(HTTP) | ::/0 | 임의의 IPv6 주소에서 인바운드 HTTPS 액세스를 허용함 |
프로토콜 유형 | 프로토콜 번호 | 포트 | 참고 |
---|
TCP | 6 | 1433(MS SQL) | Microsoft SQL Server 데이터베이스 액세스를 위한 기본 포트(예: Amazon RDS 인스턴스에서) |
TCP | 6 | 3306(MYSQL/Aurora) | MySQL 또는 Aurora 데이터베이스 액세스를 위한 기본 포트(예: Amazon RDS 인스턴스에서) |
TCP | 6 | 5432(PostgreSQL) | PosstgreSQL 데이터베이스 액세스를 위한 기본 포트(예: Amazon RDS 인스턴스에서) |
TCP | 6 | 1521(Oracle) | Oracle 데이터베이스 액세스를 위한 기본 포트(예: Amazon RDS 인스턴스에서) |
- 요약
- 다양한 보안 기법 중에서 보안 그룹은 AWS 서비스의 접속에 대한 접근 차단을 하는 가상 방화벽이다.
- 보안 그룹 정책은 IP, 포트 번호, 프로토콜 등으로 제어할 수 있다.
- 서비스 유형에 따라 적합한 포트와 소스와 대상에 대한 지정이 필요하다.
📖 AWS 스토리지 : EBS & EFS 소개
- 서버에 제공 가능한 스토리지 종류
- Direct Attached Storage(DAS) : 컴퓨터에 직접 연결된 스토리지
- Network Attached Storage(NAS) : 외장하드와 같이 네트워크를 통해 연결된 스토리지
- 파일 형식
- Windows : CIFS
- Linux : NFS
- Storage Area Network(SAN) : 스토리지 고속 네트워크 채널을 통해 구성된 서비스
- 파일 형식
- iSCSI 혹은 FC 방식의 전송 프로토콜
- EC2에 제공 가능한 스토리지 종류
- Direct Attached Storage(DAS) : Instance Store
- Network Attached Storage(NAS) : EFS(Elastic File System)
- 파일 형식
- Windows : CIFS
- Linux : NFS
- Storage Area Network(SAN) : EBS(Elastic Block Store)
- 파일 형식
- iSCSI 혹은 FC 방식의 전송 프로토콜
- EBS(Elastic Block Store)이 무엇인가요?
- EBS는 EC2와 연결하여 제공할 수 있는 블록 스토리지 볼륨 - SAN 스토리지
- EBS는 AZ 내에 존재
- EC2가 종료되더라도 데이터는 유지할 수 있는 장점
- 스냅샷 기능을 제공하여 특정 상태로 돌아가거나, 스토리지를 복제 가능 기능 제공
- EBS 주요 특징
- AZ 안에 존재하는 서비스 = 같은 AZ와 존재 하는 EC2를 통해서만 연계
- 스냅샷 기능 = 동일한 EBS 볼륨을 다른 AZ에 생성 가능
- 여러 개의 EBS 볼륨을 연계 가능
- EC2 인스턴스가 종료되어도 데이터 유지
- 99.9 ~ 99.999% 의 내구성
- EBS(Elastic Block Store) SSD / HDD 타입
![](https://velog.velcdn.com/images/pepperonipizza97/post/a522b719-16ff-40aa-8c34-6e5488101f49/image.png)
![](https://velog.velcdn.com/images/pepperonipizza97/post/86f2b092-ad8a-472a-a1aa-f5d74b6b0e05/image.png)
- EFS(Elastic Flie System)
- EBS는 EC2와 연결하여 제공할 수 있는 파일 시스템 스토리지 볼륨 - NFS 스토리지
- EFS는 AZ 밖에서 존재
- EC2가 종료되더라도 데이터는 유지할 수 있는 장점
- 보안 그룹과 연계하여 데이터를 접속할 수 있는 인스턴스 제어
- EFS 주요 특징
- AZ 외부에 존재하는 서비스 = 여러 개의 AZ에 걸친 EC2와 연계 가능
- 저장/전송 데이터 암호화
- Mount 대상을 각 AZ 별로 생성
- Security Group과 연계하여 인스턴스 접근 제어
- 탄력적인 볼륨 확장 = 필요한 만큼 용량을 자유롭게 확장 가능
- 언제 EBS를 쓰고, 언제 EFS를 써야 하나요?
EBS :
높은 수준의 성능이 필요할때
상대적으로 낮은 비용으로 스토리지 구성이 필요할 때
적합한 서비스 종류 : 부팅 볼륨, NoSQL, RDBMS와 같은 데이터베이스, 데이터 웨어 하우징 및 ETL
EFS :
여러 개의 인스턴스가 동시에 접속이 필요할 때
무제한으로 확장 가능한 스토리지가 필요할 때
적합한 서비스 종류 : 빅 데이터 및 분석, 미디어 처리, 워크플로, 콘텐츠 관리, 웹 서비스 및 리눅스 파일 디렉토리
- 요약
- EC2를 위한 대표적인 스토리지 서비스로 Instance Store, EBS, EFS가 있다.
- EBS는 AZ 내에 존재하는 블록 스토리지 볼륨이다.
- EFS는 AZ 외부에 존재하는 파일 시스템 스토리지 볼륨이다.
- EBS는 EC2와 다대일 관계이며, EFS는 일대다 관계이다.
- 서비스 종류에 따라 적합한 스토리지 유형을 선택해야 한다.
📖 고가용성 EC2 구성하기 1 : 로드 밸런서
- 고가용성이란 무엇인가요?
시스템의 문제나 예상치 못한 트래픽이 유입 되었을 때,
장애를 견디고 정상적인 운영을 수행할 수 있는 구성
- AWS 서비스 고가용성 구성
단일 인스턴스 구조 :
EC2 인스턴스에 장애가 발생하거나, 갑작스런 요청이 많아졌을 때, 서비스 전체에 영향
수평 확장 가능한 다중 인스턴스 구조 : 고 가용성 아키텍처 :
하나의 인스턴스가 비정상적이어도 서비스는 유지할 수 있는 내결함성
고 가용성 아키텍처를 위한 요구사항 첫 번째 : 로드 밸런서
외부에서 들어오는 트래픽을 여러 EC2 인스턴스에 걸쳐 분산이 필요
고 가용성 아키텍처를 위한 요구사항 두 번째 : 오토 스케일링
트래픽이 갑자기 증가 했을 때, 이를 처리할 수 있는 용량 확장이 필요
- ELB(Elastic Load Balancer)란 무엇인가요?
- ELB는 들어오는 트래픽을 컴퓨팅 서비스에 분산하는 AWS의 관리형 로드 밸런서
- AWS 관리형 서비스 : 업데이트, 패치 자동화 및 장애에 대한 고가용성(여러 AZ에 배포) 기능
- 헬스 체크 기능 : 인스턴스가 정상적으로 동작하는지 주기적으로 체크하여 트래픽 처리 가능한 인스턴스에게만 트래픽 전송
- 보안 : AWS 내부 서비스를 외부에 노출시키지 않고, 로드 밸런서를 통해서만 트래픽 유입
- HTTPS : SSL을 지원하여 암호화된 통신
ELB 종류 3가지
- Application Load Balancer
- Network Load Balancer
- Classic Load Balancer
Application Load Balancer
- HTTP, HTTPS(애플리케이션 계층) 지원
- L7 로드 밸런서
- Linstener와 Target Group으로 구성
- 경로 기반 라우팅
- 호스팅 기반 라우팅
- EC2, 컨테이너 애플리케이션 연동 지원
Network Load Balancer
- TCP, UDP(네트워크 계층) 지원
- L4 로드 밸런서
- Listener와 Target Group으로 구성
- ALB 대비 고성능 : 낮으느 지연 시간과 빠른 처리
- AZ 당 고정 IP를 가짐
- 낮은 지연 시간이 요구되는 애플리케이션에 적합
- Linstener & Targert group 구성 예제
![](https://velog.velcdn.com/images/pepperonipizza97/post/0a500946-eff5-4610-8b53-9741cb12185f/image.png)
Listener :
- Load Balancer 당 최소 1개의 Linstener 구성 필요(최대 50개)
- Port, Protocol 지정
- Contents 기반의 규칙 생성 : Host 기반 / Path 기반
Target Group :
- 트래픽을 처리할 수 있는 대상을 지정하는 논리적인 그룹
- EC2(가상머신), ECS, EKS(컨테이너)
- IP 주소 지정
- 요약
- 안정적인 서비스를 위해서는 고 가용성이 고려된 아키텍처를 구성해야 한다.
- ELB는 EC2 인스턴스의 헬스 체크를 하고, 트래픽을 분산하는 역할을 한다.
- ELB 서비스의 유형으로는 ALB, NLB, CLB가 있다.
- ALB는 L7, NLB는 L4 트래픽을 처리하고, 트래픽을 전달받는 대상 그룹 지정이 필요하다.
📖 고가용성 EC2 구성하기 2 : 오토 스케일링 그룹
- 오토 스케일링 그룹(Auto Scaling group)이 무엇인가요?
- 오토 스케일링 그룹은 애플리케이션이 요구하는 컴퓨팅 자원만큼의 인스턴스의 개수를 자동적으로 유지 시켜주는 그룹
- 최소 용량, 최대 용량, 원하는 용량 범위 안에서 인스턴스 개수 유지, 확장, 축소를 지원
- 로드 밸런서와 연동하여 트래픽 양에 따라 인스턴스 수 결정
- 오토 스케일링 그룹 특징
- 필요한 만큼만 사용
- 장애에 대응하는 내결함성
- 고가용성
- 오토 스케일링 그룹 조정 정책
- 대상 추적 조정 정책
- 단계 조정 정책
- 예약 조정 정책
- Security Group + ELB + Auto Scaling Group을 통한 고 가용성 보안을 고려한 아키텍처
![](https://velog.velcdn.com/images/pepperonipizza97/post/68e9e22a-dace-411a-8e17-fbe0daa01305/image.png)
- 요약
- 오토 스케일링 그룹은 EC2의 요구량에 따라 자동으로 확장, 축소를 하는 그룹
- 오토 스케일링 그룹은 EC2의 내결함성과 고가용성을 보장하고, 필요한 만큼만 사용 가능하도록 제공한다.
- 오토 스케일링 그룹의 확장, 축소 정책으로 대상 추적 조정, 단계 조정, 예약 조정 정책을 제공한다.