
클라우드 컴퓨팅의 심장은 단연코 '컴퓨팅 파워'이다. Amazon EC2(Elastic Compute Cloud)는 개발자가 물리적 하드웨어에 대한 고민 없이, 필요에 따라 가상 서버를 몇 분 만에 생성하고 확장 또는 축소할 수 있게 해주는 AWS의 대표적인 서비스이다. EC2를 통해 사용자는 운영체제부터 네트워크, 스토리지에 이르기까지 서버 환경에 대한 완전한 통제권을 가지며, 아이디어를 신속하게 애플리케이션으로 구현하고 배포할 수 있다.
1. EC2의 주요 구성 요소
EC2 인스턴스를 효과적으로 사용하기 위해서는 몇 가지 핵심 구성 요소에 대한 이해가 선행되어야 한다.
- 인스턴스(Instance): AWS 클라우드에서 실행되는 가상 서버이다. 선택하는 '인스턴스 유형'에 따라 CPU, 메모리, 스토리지, 네트워크 용량이 결정된다.
- AMI(Amazon Machine Image): 인스턴스를 생성하는 데 필요한 정보를 담은 템플릿이다. 운영체제(OS), 애플리케이션 서버, 초기 설정 등이 포함된다. AWS에서 제공하는 기본 AMI를 사용하거나, 직접 구성한 인스턴스로 사용자 지정 AMI를 생성할 수 있다.
- 인스턴스 유형(Instance Type): 다양한 워크로드에 최적화된 CPU, 메모리, 스토리지 등의 조합을 제공한다. 범용(t2, m5), 컴퓨팅 최적화(c5), 메모리 최적화(r5) 등 다양한 유형이 있다.
- 키 페어(Key Pair): 인스턴스에 안전하게 원격 접속(SSH)하기 위한 암호화 키 쌍이다. AWS는 공개키를 보관하고, 사용자는 개인키(.pem 파일)를 다운로드하여 안전하게 관리해야 한다.
- 보안 그룹(Security Group): 인스턴스 수준에서 트래픽을 제어하는 가상 방화벽이다. 인바운드/아웃바운드 규칙을 통해 특정 트래픽만 허용한다.
- 스토리지(Storage): 인스턴스에 연결되는 데이터 저장 공간으로, 영구적인 블록 스토리지인 EBS(Elastic Block Store)와 인스턴스 중지/종료 시 데이터가 사라지는 임시 스토리지인 인스턴스 스토어로 나뉜다.
2단계: 웹 서버 인스턴스 생성 실습
지금까지 구성한 VPC와 보안 그룹을 활용하여, 웹 애플리케이션이 자동으로 설치되는 EC2 인스턴스를 생성하는 과정을 진행한다.
2.1. 인스턴스 기본 정보 및 AMI 선택
- AWS Management Console에서 EC2 서비스로 이동 후, '인스턴스 시작'을 클릭한다.
- '이름 및 태그' 섹션에서 이름을
webserver 1
로 지정한다. - '애플리케이션 및 OS 이미지(AMI)' 섹션에서
Amazon Linux 2 AMI
를 선택한다. 이는 AWS 환경에 최적화된 안정적인 리눅스 배포판이다. - '인스턴스 유형'은 프리티어로 사용 가능한
t2.micro
를 선택한다.
2.2. 키 페어 생성 및 네트워크 설정
- '키 페어(로그인)' 섹션에서 '새 키 페어 생성'을 클릭한다.
- 키 페어 이름(예:
keypair-seoul
), 유형(RSA), 파일 형식(.pem)을 지정하고 '키 페어 생성'을 누른다. 즉시 개인키 파일이 다운로드된다.
다운로드한 개인키 파일은 인스턴스에 접근할 수 있는 유일한 열쇠이다. 이 파일이 유출되면 누구나 서버에 접속할 수 있으므로, 절대 외부에 공유하거나 공개된 장소에 저장해서는 안 된다. 분실 시 재발급이 불가능하므로 안전한 장소에 보관해야 한다.
- '네트워크 설정'에서 '편집'을 클릭하고, 이전에 생성한
VPC-Lab
과Public subnet A
를 선택한다. - '퍼블릭 IP 자동 할당'을 활성화하여 인스턴스가 외부에서 접근 가능한 공인 IP를 갖도록 설정한다.
- '방화벽(보안 그룹)'은 '기존 보안 그룹 선택'을 누르고 이전에 생성한
webserver-sg
를 선택한다.
2.3. 사용자 데이터(User Data) 설정
'고급 세부 정보' 섹션을 확장하고, '사용자 데이터' 필드에 아래 스크립트를 붙여넣는다. 이 스크립트는 인스턴스가 처음 시작될 때 단 한 번 실행되어, 웹 서버(LAMP 스택)와 샘플 애플리케이션을 자동으로 설치하고 실행한다.
#!/bin/sh
# Install a LAMP stack
sudo amazon-linux-extras install -y lamp-mariadb10.2-php7.2 php7.2
sudo yum -y install httpd php-mbstring git
# Start the web server
sudo chkconfig httpd on
sudo systemctl start httpd
# Install web app
cd /var/www/html
wget -O techcamp-webapp-2024.zip 'https://[URL_to_your_webapp.zip]'
unzip techcamp-webapp-2024.zip
sudo mv techcamp-webapp-2024/* .
sudo rm -rf techcamp-webapp-2024*
# Install AWS SDK for PHP
cd /var/www/html/vendor
wget https://docs.aws.amazon.com/aws-sdk-php/v3/download/aws.zip
unzip aws.zip
# Update packages
sudo yum -y update
2.4. 인스턴스 시작 및 확인
스토리지 구성은 기본값(8GiB)으로 두고, 우측 하단의 '인스턴스 시작' 버튼을 클릭한다. 인스턴스 목록에서 webserver 1
의 '상태 검사'가 '2/2개 검사 통과'로 바뀔 때까지 수 분간 대기한다. 완료되면, 인스턴스의 '퍼블릭 IPv4 주소'를 복사하여 웹 브라우저 주소창에 붙여넣는다. 사용자 데이터 스크립트가 정상적으로 실행되었다면 웹 애플리케이션 화면이 나타난다.

웹 브라우저에서 EC2 인스턴스의 퍼블릭 IP로 접속한 결과 화면 예시
3단계: AMI를 활용한 인스턴스 복제
설정이 완료된 인스턴스를 '골든 이미지'로 만들어 두면, 동일한 구성의 서버를 신속하게 복제하거나 장애 발생 시 백업으로 활용할 수 있다. 이 때 사용하는 것이 사용자 지정 AMI 생성 기능이다.
- EC2 인스턴스 목록에서
webserver 1
을 선택한다. - '작업' > '이미지 및 템플릿' > '이미지 생성'을 클릭한다.
- 이미지 이름과 설명을 입력하고 '이미지 생성' 버튼을 누른다.
- 좌측 메뉴의 'AMI'로 이동하여 방금 생성한 AMI의 상태가 'available'이 될 때까지 기다린다.
- AMI를 선택하고 'AMI로 인스턴스 시작' 버튼을 클릭하여 새로운 인스턴스를 생성한다. 네트워크 설정, 보안 그룹 등 필요한 구성을 동일하게 진행하되, 사용자 데이터는 비워둔다. (소프트웨어가 AMI에 이미 설치되어 있기 때문)
결론
이상으로 Amazon EC2의 핵심 구성 요소를 이해하고, VPC, 보안 그룹, 키 페어, 사용자 데이터 스크립트를 종합적으로 활용하여 웹 서버 인스턴스를 완전 자동으로 생성하는 과정을 살펴보았다. 더 나아가, AMI를 통해 구성이 완료된 서버 환경을 손쉽게 복제함으로써 일관성 있는 인프라 관리와 신속한 스케일 아웃이 가능함을 확인하였다.
EC2는 AWS 클라우드에서 제공하는 수많은 서비스의 기반이 되는 가장 기본적인 빌딩 블록이다. EC2의 유연성과 확장성을 잘 활용하는 것은 클라우드 네이티브 애플리케이션을 성공적으로 구축하고 운영하는 핵심 역량이 될 것이다.
'기술' 카테고리의 다른 글
AMI로 EC2 인스턴스 복제하기: Multi-AZ 고가용성 아키텍처 완성 (0) | 2025.06.24 |
---|---|
'골든 이미지'로 EC2 서버 관리 자동화하기 (AMI 생성 가이드) (0) | 2025.06.24 |
EC2 서버 보안의 첫걸음: 웹 서버용 보안 그룹 만들기 (0) | 2025.06.24 |
기본 라우팅 테이블과 사용자 지정 라우팅 테이블: 무엇을 써야 할까? (0) | 2025.06.24 |
AWS VPC 확장: 다른 가용 영역에 서브넷을 추가하는 방법 (0) | 2025.06.24 |