배꼽파지 않도록 잘 개발해요

[엘리스sw] 실습으로 배우는 AWS - ② AWS EC2 본문

교육/엘리스 SW 학습 내용

[엘리스sw] 실습으로 배우는 AWS - ② AWS EC2

꼽파 2024. 5. 19. 21:12

 


◆  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가 개방되어야 함. 
728x90