DevOps, 배포

[AWS] AWS EC2 시작하기

킹형준 2025. 2. 25. 20:26

AWS EC2란?

AWS EC2란 AWS에서 제공하는 가상 서버 서비스로, EC2는 Elastic Compute Cloud의 약자이다. 물리적인 서버를 직접 구매하거나 관리할 필요 없이 필요한 만큼의 "컴퓨팅 자원"(서버)을 임대하고 사용할 수 있다. 메모리, 네트워크, 스토리지까지 포함한 가상 서버를 사용자에게 제공하는데, 이 때 EC2는 주로 EBS(Elastic Block Store)를 스토리지로 사용하며, S3와의 차이점은 S3은 네트워크 기반으로 작동하는 저장소이며, EBS는 EC2에 바로 연결되는 디스크이다. 그 외에 EC2는 그냥 작은 컴퓨터 한대 빌리는 것이라고 생각하면 될듯. S3는 인터넷을 통해서 대용량 스토리지 하나 빌리는 것이고, ECS는 도커 기반의 컨테이너들을 클러스터 단위로 관리하고 자동 배포, 확장, 로드밸런싱 해주는 서비스, Lambda는 Serverless 아키텍쳐를 위한 서비스이다. Serverless 아키텍쳐란 간단히 말해서 그냥 서버가 작동하지 않고 있다가 API 호출이 들어왔을 때만 작동하는 것이다.

 

 AWS EC2 시작하기

1. AWS 회원가입을 먼저 한다. 

2. 로그인 후 우측 상단의 "콘솔에 로그인하기" 버튼을 누른다.

 

3. 콘솔 홈에서 검색창에 "EC2"를 검색한다.

 

4. 인스턴스 시작 클릭

5. 서버 이름 입력

6. "애플리케이션 및 OS 이미지" 에서 사용할 OS 선택

AMI(Amazon Machine Image)란 EC2에서 인스턴스를 생성할 때 사용되는 서버 이미지 템플릿이다. 인스턴스가 프로세서를 몇 개 갖고, 네트워크 속도, RAM 크기 등등의 설정 말고 컴퓨터 위에 OS, 애플리케이션, 설정들을 미리 사용되는 것들을 이미지로 따서 만들어 놓은 것들이다. Virtual Machine 실습할 때 우분투 이미지를 VM에 설치했던 것과 같은 맥락. OS에다가 SQL Server, Pytorch, Tensorflow 처럼 애플리케이션도 함께 바로 설치 가능. 우선 Ubuntu OS만 설치하자.

 

7. "인스턴스 유형" 선택

인스턴스 유형은 EC2 가상서버의 사양을 뜻한다. CPU, 메모리, 스토리지, 네트워크, GPU 등의 성능을 선택할 수 있고, 나는 가난한 학생이니 프리티어인 t2.micro를 설치하겠다.

 

8. 키 페어 입력

 

AWS는 보안상의 이유로 ID/PW 방식의 보안을 제공하지 않는다. 대신 EC2 인스턴스에 접근할 때는 "키 페어" 의 방식을 사용하는데, 키를 "공개 키"와 "비밀 키"의 쌍으로 나누어서 둘을 합쳐 인증하는 방식이다. 공개 키는 EC2 인스턴스에 저장되어 외부에서 인스턴스에 접속할 때 비밀 키와 함께 사용되며, 비밀 키는 발급 시 사용자의 로컬 환경에 저장된다. 키 페어의 인증은 SSH 인증 메커니즘을 사용하는데, 이는 비밀 키를 사용하여 생성된 암호화 서명이 EC2에 전송되고, EC2 인스턴스에서는 공개 키를 사용하여 해당 서명이 유효한지를 검증한다. 이 때 비밀 키 분실 시 AWS에서는 재발급을 해주지 않으므로 주의하자.

 

프라이빗 키 파일 형식을 .pem과 .ppk 중 선택해야하는데, pem은 Linux 기반, ppk는 Windows 기반에서 주로 사용되며 나는 Ubuntu OS를 인스턴스에 올릴 것이므로 pem을 선택했다.

 

9. 네트워크 설정

네트워크 설정할 때는 보안그룹에서 SSH 트래픽, HTTPS 트래픽, HTTP 트래픽을 보자.

SSH 트래픽은 SSH인증을 위한 포트에 들어오는 트래픽을 어떤 IP에서 허용할 지이다. SSH 인증이 아까 그 키 페어 인증에 대한 내용이니까 위험해보이므로 내 IP에서만 허용해두자.

HTTPS, HTTP 트래픽은 HTTP 프로토콜 기반의 웹 애플리케이션 서버를 만들 거니깐 허용해두자.

 

10. 스토리지 구성

 

프리 티어에서는 최대 30GB 까지 사용할 수 있다고 하니 30GB로 설정해주자.

 

11. 인스턴스 시작

지금까지의 설정을 전부 확인해주고, 인스턴스 시작버튼을 누르자!

 

+) 방화벽 설정

나는 EC2 인스턴스 하나에다가 Docker Compose를 사용해서 Spring Boot Application, MySQL DB를 운영시킬 것이다. 이 때 Spring boot는 8080 포트, MySQL은 3306 포트로 열릴 것이니까 여기에 접근할 수 있도록 인바운드 규칙을 수정해주자.

 

그런데 MySQL 의 3306 포트를 10.0.0.0/16 에서 오는 요청만 들어오도록 설정한 이유는 10.0.0.0/16은 AWS 내의 VPC 즉 나의 AWS 인스턴스들 끼리만 접속할 수 있는 일종의 사설 IP라고도 할 수 있는데, 여기서 들어오는 요청만 허용하기 위함이다. 물론 Docker 위에 둘 다 올려서 IP주소를 걱정할 필요는 없지만 외부에서 들어오는 요청을 전부 막기 위해 이렇게 설정하였다.

'DevOps, 배포' 카테고리의 다른 글

[DevOps] AWS EC2에 Docker 올리기 with Docker Compose  (0) 2025.02.28
[Docker] Docker 시작하기  (0) 2025.02.26