AWS란?
AWS(Amazon Web Services)는 아마존에서 제공하는 클라우드 컴퓨팅 서비스이다.
따라서 인터넷을 통해 서버, 스토리지, 네트워크, 데이터베이스, 보안 등의 다양한 IT 인프라 서비스를 제공한다.
즉, 물리적인 하드웨어를 관리하거나 구입할 필요없이 필요한 만큼의 컴퓨팅 자원을 서비스형태로 제공받을 수 있다.
클라우드 서비스 : AWS, Microsoft Azure, Google Cloud 등이 존재
🔷 aws에서 제공하는 주요 서비스
컴퓨팅: EC2(가상 서버), Lambda(서버리스), ECS/EKS(컨테이너 서비스)
스토리지: S3(파일 저장), EBS(블록 스토리지), EFS(네트워크 스토리지)
데이터베이스: RDS( 관리형 DB)
네트워킹: VPC (가상 네트워크), ELB( 로드밸런서)
보안 및 관리 : IAM(권한관리), CloudWatch(모니터링)

AWS EC2
EC2(Elastic Compute Cloud)는 AWS의 일부로, 가상 서버를 생성하고 운영할 수 있도록 해주는 서비스이다.
쉽게 말해, AWS 클라우드 환경에서 원하는 사양의 가상 머신을 생성하고 사용할 수 있도록 지원해준다.
또한 AWS의 다양한 서비스 (S3, RDS, ELB 등) 와 연동하여 성능 최적화, 가용성 향상, 비용 절감 등의 이점을 제공할 수 있다.
물리적인 서버는 보통 컴퓨팅(CPU/RAM), 저장장치(하드디스크), 네트워크(랜카드) 로 구성되는데,
EC2에서도 이러한 개념이 그대로 적용되며, 각 구성 요소는 다음과 같이 대응된다.
| 컴퓨팅 (CPU/RAM) | EC2 인스턴스 |
| 저장장치 (하드디스크) | EBS (Elastic Block Store) |
| 네트워크 (랜카드) | ENI (Elastic Network Interface) |
즉, EC2 인스턴스는 컴퓨팅 리소스만 제공하며, 운영체제(OS) 및 데이터 저장을 위해 EBS가 필요하다.
또한, 네트워크를 구성하려면 ENI를 설정해야 한다.
AWS EC2 인스턴스
AWS EC2를 사용하여 서버를 띄우기 위해서는 몇 가지 필수 설정이 필요하다. 기본적으로 EC2 인스턴스를 생성할 때 운영체제 (AMI), 인스턴스 타입(성능 사양), EBS, 보안그룹(네트워크 설정), 키 페어 등을 설정해줘야 한다.
순서: EC2인스턴스 시작 → AMI 선택 → 인스턴스 유형 선택 → EBS 설정 -> 보안그룹 설정 → 키페어 생성→ 인스턴스 생성

1. 이미지 (AMI) - 운영체제 선택
먼저 EC2 인스턴스 시작한 뒤, AMI를 선택해줘야한다.
AMI란 인스턴스를 시작하는데 필요한 정보( 운영체제 및 기본 소프트웨어 환경)를 제공하는 이미지다.
AMI는 하나의 템플릿 역할을 한다. 따라서 하나의 AMI로 여러 인스턴스를 생성할 수 있다.
즉, 동일한 환경을 가진 여러 개의 서버를 빠르게 만들 수 있다.
🔷 AMI 선택 방법
1. AWS에서 제공하는 AMI 선택하여 사용 가능하다
2. 사용자 지정 AMI 만들어 사용 가능하다. (유료이기 때문에 주의)
2. 인스턴스 사양 & 유형 선택
각자 필요한 인스턴스의 성능과 크기에 따라 적절한 사양과 유형을 선택해야한다.
1️⃣ 인스턴스 사양
온디맨드 인스턴스
필요할 때 바로 생성해서 사용할 수 있는 방식이다.
과금은 1시간 단위로 이루어지며 1분을 사용했더라도 1시간으로 책정된다. 3가지 방식 중 요금이 가장 비싸다.
예약 인스턴스
일정한 예약금을 선불로 내면 인스턴스를 1년 또는 3년동안 예약할 수 있으며 시간당 요금이 대폭 할인된다.
스팟 인스턴스
경매 방식의 인스턴스이다. 인스턴스의 스펙을 설정하고 원하는 가격을 입력하여 입찰하면 높게 입찰한 사람한테 인스턴스가 할당된다.
이때 해당 스펙의 인스턴스를 다른 사람이 더 높은 가격으로 입찰했다면 내가 가지고 있는 인스턴스는 종료된다. 따라서 스팟인스턴스는 각종 테스트나 불시에 중단되어도 상관이 없을때 사용하는 것이 적절하다.

2️⃣ 인스턴스 유형
범용 인스턴스(t3, m5)
평균적인 사양으로 제공되어, 일반적인 웹 서버나 애플리케이션 서버에 적합하다.
컴퓨팅 최적화 인스턴스(c5)
다른 인스턴스들에 비해 메모리 대비 CPU 비율이 높다.
메모리 최적화 인스턴스(r5)
다른 인스턴스들에 비해 베보리 용량이 크다. 따라서 데이터베이스 등 메모리를 많이 사용할때 적합하다.
저장소 최적화 인스턴스(i3)
대용량 데이터를 처리하는 작업에 적합하다.
GPU 인스턴스(p3)
고성능의 NVDIA GPU가 장착되어 있어 머신러닝, 딥러닝과 같이 AI 모델 학습에 최적화된 인스턴스이다.
🤔 NVDIA GPU
NVIDIA라는 회사에서 만든 그래픽 처리 장치(GPU)이다.
GPU는 컴퓨터에서 그래픽 렌더링 및 병렬 처리를 담당하는 하드웨어로, 주로 게임이나 그래픽 디자인 뿐만 아니라, 최근에는 인공지능(AI),머신러닝,딥러닝과 같은 고성능 컴퓨팅 작업에도 많이 사용된디.
3. EBS (가상 스토리지 설정)
인스턴스가 연산에 관한 (cpu,메모리) 처리한다고 하면, EBS는 데이터를 저장하는 역할을 한다.
따라서 EBS는 AWS 클라우드의 아마존 EC2 인스턴스에 사용할 영구 블록 스토리지 볼륨을 제공한다.
즉, 데이터를 영구적으로 저장할 수 있고 블록 레벨 스토리지로 작동하여 하드디스크처럼 데이터를 일정한 크기(블록)로 나누어 저장한다.
인스턴스 생성할때 EBS를 설정해주는 이유는, 인스턴스를 생성하기 위해선 운영체제가 설치될 루트 볼륨이 필요하기 때문이다.
만약 EBS 없이 인스턴스를 생성한다면 Instance Store-backed AMI를 사용해야 하지만, 데이터가 휘발성이기 때문에 EBS를 사용하는 것이 좋다.
🔷 EBS 볼륨 유형 타입
예를 들어, 같은 하드 저장 디스크라도 SSD와 HDD로 나뉘고 용량에 따라 성능과 가격이 차이나는 것처럼,
EBS도 각각 타입으로 나눠놓은 것이다.
총 5가지 타입을 제공한다.
1. 범용: SSD
2. 프로비저닝 된 IOPS : SSD
3. 쓰루풋 최적화
4. 콜드 HDD
5. 마그네틱
일반적으로 범용타입인 GP3을 선택하면 되지만, 자신은 요금을 극도로 아끼겠다 하면 마그네틱을 사용하면 된다.

4. 보안 그룹 구성하기
보안그룹(Security Group)은 AWS의 가상 방화벽으로, EC2 인스턴스에 허용되는 인바운드, 아웃바운드 트래픽을 제어할 수 있다.
인바운드 트래픽: 외부에서 AWS리소스(EC2인스턴스)로 들어오는 트래픽
아웃바운드 트래픽: AWS 리소스에서 외부로 나가는 트래픽
🔷 특징
1. 기본적으로 모든 포트는 비활성화 되어있어, 포트를 설정해주어야 한다. 그러나 특정 IP를 차단할 수는 없다. (= Deny 불가능)
2. 인스턴스 단위로 적용된다. 따라서 하나의 인스턴스에 하나 이상의 보안그룹을 설정할 수 있다.
3. 보안그룹은 stateful하다. 따라서, 인바운드 트래픽을 허용하면 자동으로 해당 아웃바운드 트래픽도 허용된다.
5. 키페어 생성하기
키 페어는 AWS EC2의 인스턴스에 안전하게 접속하기 위한 인증 정보이다.
만약 키 페어가 없으면 EC2 인스턴스에 SSH 접속을 할 수 없게 된다. AWS EC2 인스턴스는 기본적으로 키 페어를 통해 인증을 받기 때문에, 키 페어 없이 인스턴스에 접속하는 것이 불가능하다. 이 키페어는 공개 키와 개인 키로 구성된다.
🔷 공개키
EC2 인스턴스에 저장되는 키이다.
🔷 개인키
EC2 인스턴스에 접속하려는 사용자가 로컬 컴퓨터에 보관하는 키이다.
이 키는 절대 다른 사람과 공유하면 안 되며, 안전하게 보관해야 한다.
추가적인 설정
해당 과정이 모두 끝나면 인스턴스 생성을 완료하면 인스턴스가 성공적으로 생성된 것을 확인할 수 있다.
여기까지가 EC2 인스턴스 생성하는 과정이었다.
이때, 서버를 실제로 운영하기 위해서는 몇 가지 추가적인 설정이 필요할 수도 있다.
예를 들어, 접근제어, 외부 네트워크, 서버의 부하 관리, 원격 파일 시스템 설정 등 필요에 따라 해당 요구사항을 충족해야할 수 있다.
1. IAM- 접근 제어
IAM은 AWS 리소스에 대한 접근을 관리하는 서비스로, 사용자가 AWS 리소스에 접근할 수 있는 권한을 세밀하게 정의하여 보안을 강화할 수 있다.
🔷 주요 개념
사용자: 개별적으로 AWS 리소스에 접근할 수 있는 엔티티
그룹: 여러 사용자에게 공통된 권한을 부여하는 단위
역할: 특정 서비스나 애플리케이션이 AWS 리소스에 접근할 수 있도록 권한을 부여
IAM을 사용하는 이유는 보안과 효율성 때문이다. 최소 권한 원칙을 적용하여 불필요한 권한 상승을 방지하고, 다양한 리소스에 대한 접근을 통합적으로 관리할 수 있다.
또한, MFA(다단계 인증) 을 적용하여 로그인 보안을 강화할 수 있다.
2. 외부 네트워크 ( ENI, VPC )
VPC는 AWS에서 제공하는 가상 네트워크 환경으로, EC2인스턴스는 기본적으로 VPC 내에 존재한다.
외부통신을 원한다면 퍼블릭 IP 또는 Elastic IP가 필요하다.
ENI는 EC2 인스턴스를 생성하게 되면 자동으로 생성이 되는데, 이는 ec2가 네트워크에 연결할 수 있도록 하는 랜카드 역할을 한다.
VPC에서 외부통신을 원하면 퍼블릭IP또는 Elastic IP가 필요하다 했는데, 이를 ENI 내에서 설정해줄 수 있다.
1️⃣ ENI
EC2 인스턴스를 시작하면, ENI는 기본적으로 인스턴스에 할당된다. ENI는 EC2와 VPC 내의 다른 리소스, 외부 네트워크와의 연결을 담당하는 가상 네트워크 인터페이스이다. 따라서 ENI를 통해 EC2 인스턴스가 네트워크와 연결되고, 외부와의 통신을 할 수 있게 된다.
EC2 인스턴스가 외부 인터넷과 통신하려면 퍼블릭 IP 또는 Elastic IP를 설정해야 한다.
🔷 퍼블릭 IP
EC2 인스턴스에 부여된 퍼블릭 IP는 외부에서 EC2 인스턴스로 직접 접속할 수 있게 해주는 동적 IP 주소이다.
그러나 퍼블릭 IP는 유동적이기 때문에인스턴스를 중지하고 다시 시작하면 기존에 할당되었던 퍼블릭 IP는 해제되고, 새로운 퍼블릭 IP가 할당된다. 이로 인해, DNS 도메인에 IP 주소를 연결해놓은 경우, IP가 변경되면 도메인 연결이 끊기거나 새롭게 설정해야 하는 불편함이 발생할 수 있다.
이를 해결하고자 AWS에서는 바로 한 번 할당 받으면 절대 바뀌지 않는 Elastic IP를 제공하게 된다.
🔷 Elastic IP
Elastic IP는 고정된 퍼블릭 IP 주소로, ENI에 할당되어 EC2 인스턴스와 연결된다. 이를 통해 EC2 인스턴스가 중지되거나 재시작되더라도 IP 주소는 변하지 않는다.
🔷 Elastic Ip 요금 정책
기본 무료 정책: 실행 중인 EC2 인스턴스에 연결된 하나의 Elastic IP는 무료로 제공된다.
추가 요금: 추가로 Elastic IP를 할당하거나, 실행 중이지 않은 인스턴스에 연결된 Elastic IP는 시간 단위로 요금이 부과된다.
Elastic IP 할당 및 사용은 유료 서비스로, 추가적으로 IP를 할당하거나 재할당할 때 요금이 발생할 수 있다.

2️⃣ VPC
VPC는 AWS에서 제공하는 가상 네트워크 환경으로, 사용자가 AWS 클라우드 내에서 자신만의 네트워크를 구축할 수 있게 해준다. VPC는 서브넷, 라우팅 테이블, 인터넷 게이트웨이, NAT 게이트웨이, 네트워크 ACL, 보안 그룹 등 다양한 네트워크 리소스를 관리할 수 있는 공간이다. 이러한 VPC는 반드시 특정 리전 내에 존재해야 한다.
🔷 리전과 가용영역
리전: 데이터 센터의 집합이다. 리전은 지리적 영역 내에서 격리되고 물리적으로 분리된 최소 3개의 AZ(가용영역)으로 구성되어있다.
예) 서울 리전
가용영역(AZ): 논리적 데이터 센터의 각 그룹이다. 가용영역은 AWS 데이터 센터가 여러 개로 분산되어 운영되는 곳을 의미한다.
예) ap-northeast-2a

🔷 VPC 추가 설명
▪️ 서브넷
VPC는 서브넷을 사용하여 네트워크를 논리적으로 분할할 수 있다. 서브넷은 프라이빗과 퍼블릭으로 나뉘며, 이를 통해 네트워크 리소스를 분리하고 보안을 강화할 수 있다.
퍼블릭 서브넷은 인터넷과 연결된 자원 (예: 웹 서버)을 배치하고, 프라이빗 서브넷은 외부와의 직접적인 통신 없이 내부 시스템 (예: 데이터베이스 서버)을 배치할 수 있다.
▪️ 네트워크 ACL
보안 그룹(Security Group)은 상태 저장(Stateful) 방식으로, 인바운드 트래픽을 허용하면 자동으로 해당 아웃바운드 트래픽도 허용된다. 하지만 인스턴스 단위로 설정해야 하므로 관리가 번거롭다.
이를 보완하는 네트워크 ACL(Network ACL) 은 서브넷 단위로 적용되는 가상 방화벽으로, 인바운드 및 아웃바운드 트래픽을 세밀하게 제어할 수 있다. 서브넷 전체에 규칙을 적용할 수 있어 보다 효율적인 보안 설정이 가능하다.
특징
1. 기본적으로 모든 포트가 허용되어 있으며, 특정 포트나 IP를 차단(Deny)할 수 있다. 이는 보안 그룹과의 차이점이다.
2. 서브넷 단위로 적용되어 하나의 서브넷에 대해 트래픽 규칙을 설정할 수 있으며, 이를 통해 서브넷 내의 모든 리소스에 적용된다.
3. stateless 방식이다. 즉, 인바운드 트래픽을 허용한다고 해서 아웃바운드 트래픽이 자동으로 허용되지 않으며, 별도로 설정해야 한다.
예시: 따라서 네트워크 ACL이 80번 포트를 차단한 경우, 해당 가용영역 내에 있는 여러 보안그룹들도 80번 포트에 접근할 수 없게 된다.
▪️ 라우팅 테이블
VPC 내의 서브넷은 라우팅 테이블을 통해 외부와 통신할 수 있다. 라우팅 테이블에는 목적지와 다음 라우터가 정의되어, 트래픽이 올바른 위치로 전달되도록 한다.
예를 들어, 퍼블릭 서브넷은 라우팅 테이블에서 인터넷 게이트웨이를 통해 외부와 통신하며, 프라이빗 서브넷은 NAT 게이트웨이를 통해 외부와 연결된다.
▪️ 인터넷 게이트웨이
VPC 내의 퍼블릭 서브넷에 있는 EC2 인스턴스들이 외부 인터넷과 통신할 수 있게 해주는 역할을 한다.
인터넷 게이트웨이는 VPC의 라우팅 테이블과 연결되며, 인터넷과 VPC를 연결하는 통로 역할을 한다.
▪️ NAT 게이트웨이
프라이빗 서브넷에 배치된 EC2 인스턴스가 외부 인터넷에 접근할 수 있도록 하려면, NAT 게이트웨이나 NAT 인스턴스를 사용해야 한다.
NAT는 프라이빗 서브넷의 리소스가 인터넷에 연결되도록 도와주는 역할을 한다. NAT 게이트웨이는 AWS에서 관리하는 서비스이고, NAT 인스턴스는 사용자 정의 인스턴스를 통해 NAT 기능을 구현한 것이다.

3. 서버의 부하 관리
서버의 부하는 트래픽의 증가나 작업의 처리량에 따라 서버의 자원을 최적화하는 과정이 필요하다.
Auto Scaling과 Elastic Load Balancer (ELB)는 이를 자동으로 관리해준다.
1️⃣ Auto Scaling
EC2 인스턴스의 수를 자동으로 늘리거나 줄일 수 있는 기능이다.
따라서, CloudWatch를 통해 EC2 인스턴스의 상태를 모니터링하고, CPU 사용량이나 메모리 사용량 등을 기준으로 인스턴스를 추가하거나 종료하여 비용 절감과 서버 성능을 효율적으로 관리할 수 있다.
2️⃣ Elastic Load Balancer (ELB)
ELB는 AWS에서 제공하는 관리형 로드밸런서 서비스로, 여러 대의 EC2 인스턴스에 트래픽을 분산하여 고가용성과 확장성을 제공한다.
ELB는 크게 3가지 유형으로 나뉜다.
CLB (Classic Load Balancer): HTTP/HTTPS와 TCP 트래픽을 처리하며, 구형 방식으로 점차 지원이 축소되고 있다.
ALB (Application Load Balancer): HTTP/HTTPS 트래픽을 분산시킬 수 있으며, URL 경로 기반 라우팅, 웹소켓 지원 등 고급 기능을 제공한다. L7 로드밸런싱을 지원한다.
NLB (Network Load Balancer): TCP 및 UDP 트래픽을 분산시키며, 높은 성능과 저지연을 제공한다. 주로 실시간 애플리케이션에 적합하다. L4에서 동작한다.
이때 로드밸런서의 타켓 인스턴스가 정상적으로 서비스할 준비가 되어있는지 주기적으로 확인하는 방법이 헬스체크이다.
4. 원격 파일 시스템 설정
EC2 인스턴스는 원격 파일 시스템을 통해 데이터를 지속적으로 저장하거나 여러 인스턴스 간에 파일을 공유할 수 있다. 이를 통해 데이터를 안전하게 보관하거나 여러 서버 간의 효율적인 파일 관리를 할 수 있다.
1️⃣ EFS (Elastic File System)
EFS는 AWS에서 제공하는 분산형 파일 시스템으로, 여러 EC2 인스턴스가 동시에 파일에 접근하고 수정할 수 있도록 지원한다. EFS는 서버 간에 데이터를 효율적으로 공유할 수 있게 해주며, 이를 통해 여러 서버에서 동일한 파일을 읽거나 쓸 수 있다.
데이터 공유: EFS는 여러 EC2 인스턴스가 동일한 파일 시스템을 사용할 수 있도록 해, 데이터의 일관성을 유지하면서 효율적으로 파일을 관리할 수 있다.
확장성: EFS는 자동으로 용량을 확장하며, 고성능을 제공하는 분산형 파일 시스템이므로, 데이터 저장소의 크기나 트래픽이 증가해도 유연하게 대처할 수 있다.
고가용성: EFS는 여러 가용 영역에 데이터를 복제하여 고가용성을 제공하므로, 인프라 장애가 발생해도 데이터에 안정적으로 접근할 수 있다.
EFS는 여러 인스턴스 간 파일 공유가 필요하거나, 고가용성 및 확장성이 중요한 경우 유용하게 사용된다. 특히, 여러 서버에서 동일한 데이터를 접근해야 하는 웹 애플리케이션, 미디어 처리 시스템 등에서 활용된다.
정리
AWS는 다양한 클라우드 컴퓨팅 서비스를 제공하며, 사용자는 필요한 만큼 자원을 할당받아 비용을 최적화할 수 있다. EC2는 가상 서버를 제공하며, 사용자는 다양한 인스턴스 유형을 선택할 수 있고, Elastic Block Store(EBS)를 통해 데이터를 저장하고 관리할 수 있다. 또한, Elastic Load Balancer(ELB)를 이용해 트래픽을 여러 서버에 분산시켜 시스템 안정성을 높일 수 있다. AWS의 다양한 서비스와 기능을 통해 유연하고 효율적인 클라우드 환경을 구축할 수 있다.