EC2는 클릭 몇 번으로 원하는 사양의 서버를 생성하고 필요에 따라 크기를 늘리거나 줄일 수 있는 가상 서버 서비스이다.
1. EC2의 핵심 구성 요소
1.1. AMI (Amazon Machine Image)
- 정의: 서버에 필요한 운영체제(OS), 소프트웨어, 설정 등을 미리 구성해 높은 템플릿이다.
- 활용: Ubuntu, Amzaon Linux, Windows 등을 선택할 수 있으며 내가 설정한 서버 상태를 이미지로 만들어(Custom AMI) 나중에 똑같은 서버를 여러 대 띄울 때 사용할 수 있다.
1.2. 인스턴스 유형 (Instance Types)
서버의 목적에 따라 CPU, 메모리, 네트워크 성능의 조합이 달라진다.
- T 시리즈: 범용타입. 평소엔 낮다가 가끔 트래픽이 튈 때 성능을 높이는 방식이다. 개발/테스트 서버에 적합하다.
- C 시리즈: 컴퓨팅 최적화에 특화되어 연산이 많은 애플리케이션에 적합하다.
- M 시리즈: 범용 타입으로 CPU와 메모리 균형이 좋아 운영 환경의 API 서버로 자주 사용된다.
- R 시리즈: 메모리 최적화 타입으로 캐시 서버(Redis)나 대용량 DB에 적합하다.
1.3. 스토리지 (EBS - Elastic Block Store)
- EC2 인스턴스에 부착하는 가상 하드디스크이다. 인스턴스가 삭제되어도 데이터가 유지되도록 설정할 수 있으며 필요할 때 용량을 쉽게 늘릴 수 있다.
2. 백엔드 개발자가 알아야 할 실무 포인트
2.1. 탄력적 IP (Elastic IP)
- EC2를 중지했다가 다시 시작하면 퍼블릭 IP 주소가 바뀐다. 외부에서 접속 경로를 고정해야 한다면(고정 IP), 반드시 **Elastic IP)를 할당받아 연결해야 한다.
- 참고: 할당만 받고 사용하지 않으면 비용이 발생한다.
2.2. 사용자 데이터 (User Data)
- 서버가 처음 부팅될 때 실행될 쉘 스크립트를 작성할 수 있다.
- Docker 설치, Java 설치, 로그 에이전트 실행 등의 초기 설정을 자동화할 때 사용한다.
2.3. 생명 주기 및 비용 최적화
- On-Demand: 사용한 만큼 지불로 가장 일반적이다.
- Reserved Instance (RI): 1~3년 약정 시 최대 70% 저렴하다. 트래픽이 일정한 서버에 적합하다.
- Spot Instance: AWS의 남는 자원을 경매 방식으로 빌린다. 최대 90% 저렴하지만 AWS가 필요할 때 예고 없이 서버를 뢰수할 수 있다 (Stateless한 워커 서버에 적합하다)
3. EC2 접속 및 보안 흐름
- 키 페어(Key Pair): EC2 생성 시
.pem파일을 다운로드 받는다. SSH 접속 시 비밀번호 대신 이 개인 키를 사용해 보안을 유지한다.
- 보안 그룹(Security Group): 특정 포트를 열어야 외부 통신이 가능하다.
- IAM 역할(IAM Role): EC2 안에서 돌아가는 코드가 S3에 파일을 업로드하거나 DynamoDB에 접근해야 할 때 액세스 키를 코드에 넣는 대신 EC@에 IAM 역할을 부여하는 것이 가장 안전한 방법이다.
4. 백엔드 배포 트러블슈팅 팁
- 서버 성능이 갑자기 느려짐: t2, t3 타입을 사용 중이라면 CPU 크레딧이 소진되었는지 확인해야 한다. 크레딧을 다 쓰면 성능이 강제로 제한된다.
- SSH 접속이 안 된다:
1. 보안 그룹 인바운드 포트 확인.
- 퍼블릭 IP가 맞는지 확인.
- 키 페어 권한 (
chmod 400) 확인.
- 로컬에서는 잘 되는데 서버에서는 권한 에러 발생: EC2 인스턴스에 부여된 IAM 역할(Role)에 해당 서비스 접근 권한이 있는지 확인