일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 개발자취업
- Cookie
- 엘리스sw트랙
- 중간이들
- 파이썬
- node.js
- Python
- 유노코딩
- 코딩테스트준비
- 데이터베이스시스템
- nestjs
- MySQL
- aws
- 방송대
- JavaScript
- 꿀단집
- 파이썬프로그래밍기초
- 프로그래머스
- 방송대컴퓨터과학과
- redis
- SQL
- CSS
- Git
- 코딩테스트
- 항해99
- TiL
- HTML
- 99클럽
- 코드잇
- presignedurl
- Today
- Total
배꼽파지 않도록 잘 개발해요
[엘리스sw] 실습으로 배우는 AWS - ② AWS EC2 본문
◆ AWS EC2 소개
◆ EC2 보안 : 보안그룹 (Security Group)
◆ AWS 스토리지 : EBS & EFS 소개
◆ 고가용성 EC2 구성하기 1 : 로드 밸런서
◆ 고가용성 EC2 구성하기 2 : 오토 스케일링 그룹
◆ AWS EC2 소개
서비스 구성 방식에 따른 AWS 컴퓨팅 서비스 종류
정의
Instance (가상머신) |
· 실제 서버와 구성하는 것과 거의 흡사한 구성을 가짐 · 서버를 구성할 때 탑재해야할 하드웨어(CPU, 메모리, 디스크 등의 값)를 가지고 그 위에 OS가 설치된 이후에 애플리케이션이 그 위에서 동작하는 구조 · Hypervisor(하이퍼바이저)라는 가상머신을 관리하는 SW가 커널에서 동작하고 그 위에는 가상머신이 일반 서버와 동일하게 가상으로 생성된 하드웨어 OS 이미지를 가짐. 그 위에서는 애플리케이션이 동작하는 방식임. |
Container (컨테이너) |
· 컨테이너는 가상머신보다 Lite (가볍다) · 실행파일과 라이브러리 같은 앱 구동에 필요한 최소한의 dependency 파일만 가지고 어플리케이션만 컨테이너 내부에서 동작함. · 이러한 컨테이너를 관리하고 운영하기 위한 컨테이너 엔진이 컨테이너 아래에서 동작하는 구조. |
Serverless (서버리스) |
· 함수형 서비스 · 가상머신과 컨테이너는 동작하는 실체가 있는 것에 비해, 서버리스 방식은 마치 서버가 없는 것처럼 동작함. · 서버리스에서는 개발자가 정해진 로직에 맞게 코드 내에서 함수를 호출하기만 하면 원하는 방식을 얻는 방식임. · 서버가 없는 것처럼 동작하지만 실제로는 작은 가상머신이 아래에서 빠르게 생성되어서 함수를 처리하는 방식임. |
장점과 단점
가상머신 | 컨테이너 | 서버리스 | |
장점 | · GB 단위 이미지 · OS 영역을 포함 · 고성능 서비스 제공 · 수분 안에 빠르게 배포 |
· MB 단위 이미지 · OS 이미지와 무관하게 동작 · 관리가 다소 어려움 · 수 초 안에 빠르게 배포 |
· 별도의 이미지 관리 필요가 없음 · OS를 관리할 필요가 없음 · 이벤트(API 호출)를 통해서 기능 구현 · 별도 배포할 필요 없음 |
단점 | · 상대적으로 큰 이미지 사이즈 · 부팅하는 데 시간이 오래 걸림 · OS의 종속성 |
· 아키텍처가 복잡 · 관리하고 모니터링이 어려움 |
· 클라우드 제공업체에 한정적 · 복잡한 애플리케이션 서비스에는 부적합 |
EC2 (Elastic Compute Cloud)가 무엇인가요?
Amazon EC2 Instance
- AWS의 가상머신 서비스 : Instance
- 필요에 따라 자유롭게 확장 가능
- 사용한 만큼 비용 지불
- 미리 정의된 템플릿, 혹은 아마존 머신 이미지(AMI)를 통해 즉시 인스턴스 생성 가능.
→ 대표적인 IaaS (Infrastructure as a Service) 방식의 서비스
EC2 설정 옵션
- 필수적으로 정의해야할 부분 : CPU, Memory, Disks, OS, Networking, 사전 스크립트 구성
- 사전 스크립트 구성 : EC2가 특정 설정이나 패키지를 다운로드 받을 필요가 있을 때에는 최초 부팅시 여기서 명세한 스크립트를 작성하면서, 먼저 EC2가 생성됐을 때 해당 스크립트를 동작시킬 수 있는 기능을 포함함.
EC2 인스턴스 유형
EC2 AMI (Amazon Machine Image)
- 인스턴스 실행시, 필요한 OS, 애플리케이션, 소프트웨어 패키지가 포함된 템플릿.
- AWS 혹은 제 3자에 의해 만들어진 것을 활용하거나, 직접 제작 가능함.
- 동일한 구성으로 여러 개의 인스턴스를 만들 때, 손쉽게 배포 가능함.
Public AMI : 사전 제작된 AMI 템플릿, AMI를 통해서 여러 개의 동일한 EC2를 제작할 수 있음.
새로운 패키지를 설치한 인스턴스는 v2
이 v2의 인스턴스 형태를 기억하고 저장하는 것을 스냅샷이라고 할 수 있음.
스냅샷을 통해 v2의 AMI 템플릿을 만들 수 있음.
◆ EC2 보안 : 보안그룹 (Security Group)
보안이 왜 중요한가요?
① 인가 / 인증
- 인가된 사용자 혹은 서비스만이 권한을 받고 작업을 수행할 수 있게 하는 서비스
- 인터넷을 통해서 데이터를 주고 받는 환경에서 전송하는 데이터에 대해서 암호화를 하고, 전송하는 방법을 보안하는 방법임.
② 데이터 암호
- EC2를 통해 서비스를 운영할 때 필수적으로 필요한 포트 정보나 프로토콜만을 허용하고 그 외의 경우는 차단할 수 있는 방화벽을 정의하는 것
③ 보안그룹
- EC2를 보호할 수 있는 방화벽
보안그룹이 무엇인가요?
- 보안그룹이란, 인스턴스에 적용할 수 있는 논리적 방화벽
- 인바운드, 아웃바운드를 기준으로 방화벽 규칙을 생성할 수 있으며, IP, Port, Protocol 기반으로 정책을 생성할 수 있다.
보안 그룹에는 DDoS 공격에 대한 방어는 수행하지 않으며, DDoS를 위한 보안 서비스로, AWS WAF, Shield가 있다.
![]() |
· AWS 서비스 수신 (Inbound), 발신(outbound) 트래픽을 제어하는 가상 방화벽 · 수신과 발신에 필요한 정보 : IP, Port 번호, 프로토콜 · Inbound 트래픽은 Default로 Block 됨(whitelist). · 대표적인 Port : - SSH : 22 - HTTP : 80 - HTTPS : 443 - MYSQL : 1433 |
보안 그룹 (Security Group) 적용 예
◆ AWS 스토리지 : EBS & EFS 소개
일반적인 서버에 제공 가능한 스토리지 종류
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) 파일 형식 - Block Storage 방식 iSCSI 혹은 FC 방식의 전송 프로토콜 |
- NAS의 이더넷 통신 vs SAN의 전용통신
전용통신의 SAN 스토리지가 전송속도가 더 빠름.
→ 성능이 중요하면 SAN 스토리지를 사용함. - File System vs Block Storage
파일 시스템 방식 : 비정형 데이터(사진 등)를 담거나 여러 사용자가 한꺼번에 접속해서 공유하는 목적에 적합한 파일 시스템
Block Storage : 고성능이지만 공유 목적으로는 사용할 수 없음.
→ 단독으로 고성능 스토리지 서비스가 필요할 때는 SAN 스토리지를 사용함.
EBS (Elastic Block Store)
![]() |
· EBS는 EC2와 연결하여 제공할 수 있는 블록 스토리지 볼륨 (SAN 스토리지) · EBS는 AZ 내에 존재 (AZ 단위) · EC2가 종료되더라도 데이터는 유지할 수 있는 장점 · 스냅샷 기능을 제공하여 특정 상태로 돌아가거나, 스토리지를 복제 가능 기능 제공 |
EBS 주요 특징
EBS (Elastic Block Store) SSD / HDD 타입
- 내구성과 IOPS, 부트 볼륨을 기준으로 선택하면 됨.
- 부트 볼륨
- 윈도우즈나 리눅스 환경에서 OS 부팅이미지가 설치될 볼륨으로 사용할 수 있을지 여부임.
- 일반적으로 부트볼륨은 고성능을 요구하기 때문에 SSD 유형만 지원하는 것을 볼 수 있음.
EFS (Elastic File System)
![]() |
· EBS는 EC2와 연결하여 제공할 수 있는 파일 시스템 스토리지 볼륨 (NFS 스토리지) * NFS 스토리지 : 윈도우즈를 지원하지 않고 리눅스 파일 시스템인 NFS만 지원함. · EFS는 AZ 밖에서 존재 (Region 단위) · EC2가 종료되더라도 데이터는 유지할 수 있는 장점 · 보안 그룹과 연계하여 데이터를 접속할 수 있는 인스턴스 제어 |
EFS 주요 특징
언제 EBS를 쓰고, 언제 EFS를 써야 하나요?
· EBS : AZ 내에 존재하는 블록 스토리지 볼륨, EC2와 다대일 관계
· EFS : AZ 외부에 존재하는 파일 시스템 스토리지 볼륨, EC2와 일대다 관계
→ 서비스 종류에 따라 적합한 스토리지 유형을 선택해야함.
◆ 고가용성 EC2 구성하기 1 : 로드 밸런서
고가용성이란?
- 안정적이고, 일관된 서비스를 제공하기 위한 핵심적인 요소
- 시스템의 문제나 예상치 못한 트래픽이 유입 되었을 떄, 장애에 견디고 정상적인 운영을 수행할 수 있는 구성
단일 인스턴스 구조 | 수평 확장 가능한 다중 인스턴스 구조 |
![]() |
![]() |
EC2 인스턴스에 장애가 발생하거나, 갑작스런 요청이 많아졌을 때 서비스 전체에 영향 | 고 가용성 아키텍쳐 하나의 인스턴스가 비정상적이어도 서비스는 유지할 수 있는 내결함성 |
고가용성 아키텍처를 위한 요구사항
- 로드 밸런서 : 외부에서 들어오는 트래픽을 여러 EC2 인스턴스에 걸쳐 분산이 필요
- 오토 스케일링 : 트래픽이 갑자기 증가했을 때, 이를 처리할 수 있는 용량 확장이 필요
ELB (Elastic Load Balancer)
- ELB는 들어오는 트래픽을 컴퓨팅 서비스에 분산하는 AWS의 관리형 로드 밸런서
* 일반 환경에서는 사용자가 직접 구축 및 관리해야 함. - AWS 관리형 서비스 : 업데이트, 패치 자동화 및 장애에 대한 고가용성 (여러 AZ에 배포) 기능
- 헬스 체크 기능 : 인스턴스가 정상적으로 동작하는지 주기적으로 체크하여 트래픽 처리 가능한 인스턴스에게만 트래픽 전송
- 보안 : AWS 내부 서비스를 외부에 노출시키지 않고, 로드 밸런서를 통해서만 트래픽 유입
- HTTPS : SSL을 지원하여 암호화된 통신
ELB (Elastic Load Balancer)
Application Load Balancer (ALB) |
· HTTP, HTTPS (애플리케이션 계층) 지원 · L7 로드 밸런서 · Listener와 Target Group으로 구성 · 경로 기반 라우팅 · 호스트 기반 라우팅 · EC2, 컨테이너 애플리케이션 연동 지원 |
Network Load Balancer (NLB) |
· TCP, UDP (네트워크 계층) 지원 · L4 로드 밸런서 · Listener와 Target Group으로 구성 · ALB 대비 고성능 : 낮은 지연 시간과 빠른 처리 (더 적은 정보) · AZ 당 고정 IP를 가짐 · 낮은 지연시간이 요구되는 애플리케이션에 적합 |
Classic Load Balancer (CLB) |
- |
Listener & Target group 구성 예제
Listener는 어떤 트래픽이 들어올 때 Port 혹은 Protocol 기반으로 트래픽 분리가 가능하고,
규칙을 생성해서 해당하는 트래픽을 어떤 그룹에 보낼지 정리함.
앞서 본 Host기반과 Path기반이 여기서 생성됨.
Path 기반 라우팅
/accounts
/explore
경로를 기준으로 분리함.
Host 기반 라우팅
school.elice.io
academy.elice.io
성격이 다른 웹페이지의 경우 가장 앞에 호스트 이름을 변경해서 웹페이지를 분리함.
이때 바로 호스트 기반의 정책이 사용됨.
이 트래픽을 실제 처리할 수 있는 타겟 그룹을 생성해야함.
◆ 고가용성 EC2 구성하기 2 : 오토 스케일링 그룹
오토 스케일링 그룹
- EC2의 요구량에 따라 자동으로 확장, 축소를 하는 그룹
오토 스케일링 그룹 특징
- 필요한 만큼만 사용, 장애에 대응하는 내결함성, 고가용성
- 인스턴스의 개수와 성능은 비용과 연관되기 때문에 유연한 구조가 EC2를 효율적으로 사용하고 관리할 수 있는 강력한 기능임.
오토 스케일링 그룹 조정 정책
- 대상 추적 조정 정책 : 인스턴스가 가지는 지표의 평균값에 따라 조절하는 방식. 인스턴스는 CPU나 메모리 사용량 등 각종 metric 값을 가지고 있는데, 이러한 CPU 사용량이나 트래픽 사용량 혹은 로드밸런서의 요청 수에 따라 지표를 생성할 수 있음.
→ 미리 선언한 지표의 임계치에 달성할 경우, 인스턴스를 확장하거나 축소를 자동으로 수행하는 방식 - 단계 조정 정책 : 특정 지표에 도달하였을 떄 인스턴스를 늘리는 방식으로, 지표값의 하한값과 상한값을 지정하여 인스턴스의 개수를 확장 혹은 축소를 할 수 있는 정책
ex. 10% → 20% → 30% - 예약 조정 정책 : 지정된 날짜 혹은 시간에 따라서 예약된 작업을 수행하는 정책으로, 시간 대 별로 확장 가능한 정책
Security Group + ELB + Auto Scaling Group을 통한 고 가용성과 보안을 고려한 아키텍처
두 개로 구성하는 것이 일반적임.
여러 개의 AZ에 걸쳐서 EC2 인스턴스를 구성함.
인스턴스의 문제뿐만 아니라 AZ 전체에 문제가 생기더라도 서비스를 유지할 수 있는 고가용성을 가짐.
LB는 기본적으로 여러 개의 AZ에 걸쳐서 구성할 수 있기 때문에 EC2 인스턴스와 동일하게 AZ 전체에 장애인 상황에서도 고가용성을 유지할 수 있음.
오토스케일링 그룹 : 여러 개의 AZ에 걸쳐서 구성할 수 있기 때문에 두 개의 AZ에 걸쳐서 오토스케일링을 구성.
보안그룹 (인바운더, 아웃바운더 트래픽 정해짐)
각 서비스들은 일반적으로 서비스를 수행하기 위해서 인바운더와 아웃바운더의 트래픽이 정해져 있음.
- ALB(인바운더) : 외부에서 서비스를 받기 위해서 HTTP나 HTTPS 포트가 개방되어야 함.
- NLB (아웃바운더) : FrontEnd에 배치된 EC2 인스턴스와 통신할 수 있도록 포트나 IP가 개방되어야 함.
'교육 > 엘리스 SW 학습 내용' 카테고리의 다른 글
[엘리스sw] 실습으로 배우는 AWS - ④ AWS 네트워킹 활용하기 (0) | 2024.05.24 |
---|---|
[엘리스sw] 실습으로 배우는 AWS - ③ AWS Storage, DB CDN 서비스 (0) | 2024.05.20 |
[엘리스sw] 실습으로 배우는 AWS - ① AWS 시작하기 (0) | 2024.05.19 |
[엘리스sw] SQL로 데이터 다루기 Ⅱ (0) | 2024.05.09 |
[엘리스sw] 프로젝트로 배우는 데이터베이스 (0) | 2024.05.03 |