Avoid These 10 Common AWS EC2 Deployment Mistakes
AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

10개의 실수: AWS EC2 배포 시 개발자가 자주 하는 오류

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

인프라/DevOps/보안

대상자

AWS EC2 인프라를 직접 관리하는 개발자, DevOps 엔지니어, 클라우드 배포 초보자

(난이도: 중급 ~ 고급, EC2 기본 개념을 이해한 상태)

핵심 요약

  • 보안 그룹 설정 오류
  • Security Group에서 22, 80, 443, 3000 포트 허용 범위 설정 필수
  • 0.0.0.0/0All traffic 대신 필요한 IP만 허용
  • Elastic IP 미사용
  • EC2 인스턴스 재시작 시 자동 변경되는 Public IP 대신 Elastic IP 할당
  • Elastic IP연결 중인 인스턴스에만 무료
  • 스케일링/모니터링 미구성
  • Elastic Load Balancing (ELB) + Auto Scaling Groups (ASGs) 사용
  • CloudWatch LogsX-Ray로 앱 로그 수집 및 성능 분석

섹션별 세부 요약

1. 보안 그룹 설정 오류

  • 문제: SSH 또는 HTTP 접속 불가, 포트 80/443/3000 차단
  • 실제 사례: Node.js 앱을 3000포트에서 실행했으나 브라우저 접속 시 타임아웃
  • 해결 방법:
  • Security Group에서 Inbound RuleTCP 포트 22, 80, 443, 3000 허용
  • 0.0.0.0/0 대신 필요한 IP만 허용 (예: 192.168.1.0/24)

2. Elastic IP 미사용

  • 문제: EC2 재시작 시 Public IP 변경 → DNS 레코드 무효화
  • 실제 사례: DNS 설정 후 다음 날 서버 접속 불가
  • 해결 방법:
  • Elastic IP 할당 → EC2 인스턴스에 Binding
  • Elastic IP연결 중인 인스턴스에만 무료

3. 단일 인스턴스 사용

  • 문제: 트래픽 증가 시 서버 다운, 자동 스케일링 미구성
  • 실제 사례: Hacker News 언급 시 트래픽 폭증으로 서버 다운
  • 해결 방법:
  • Elastic Load Balancing (ELB) + Auto Scaling Groups (ASGs) 사용
  • ASG는 CPU/메모리/커스텀 메트릭 기반으로 인스턴스 수 조절

4. 인스턴스 내 데이터 저장

  • 문제: 인스턴스 종료 시 데이터 손실, 백업 불가
  • 실제 사례: /var/www/app/uploads에 저장한 데이터가 인턴 실수로 삭제
  • 해결 방법:
  • S3 (사용자 업로드), RDS/Aurora (데이터베이스), EFS (공유 스토리지) 사용

5. 하드코딩된 비밀 정보

  • 문제: config.js에 AWS 키/비밀번호 저장 → 리포지토리 노출 시 보안 취약
  • 실제 사례: GitHub 공개 시 10분 동안 노출 → EC2 비용 2000달러 손실
  • 해결 방법:
  • AWS Secrets Manager 또는 Parameter Store 사용
  • 환경 변수로 관리 (.env소스 컨트롤에 절대 포함하지 않음)

6. 모니터링 미설정

  • 문제: 서버 재시작 시 로그 삭제, 성능 이슈 감지 불가
  • 실제 사례: 2AM에 API 다운 알림 → EC2 재시작 후 로그 모두 삭제
  • 해결 방법:
  • CloudWatch LogsCloudWatch Metrics 통합
  • X-Ray로 성능 병목 지점 추적
  • CloudWatch Agent 설치 (시스템 수준 메트릭 수집)

7. 패치 미적용

  • 문제: 보안 취약점, 호환성 문제, 오래된 런타임
  • 실제 사례: Ubuntu 18.04 + Node.js v10 → async/await 지원 없음
  • 해결 방법:
  • SSM Patch Manager로 자동 업데이트
  • Amazon Linux 2023 사용 (롤링 업데이트 지원)
  • Docker 이미지로 런타임 버전 관리

8. 수동 설정

  • 문제: 환경 설정 불일치, 팀 협업 어려움, 설정 누락
  • 실제 사례: 팀원이 EC2 설정 복제 시 IAM 규칙/EB스 설정 누락
  • 해결 방법:
  • Terraform 또는 AWS CloudFormation으로 Infrastructure as Code (IaC) 적용
  • 설정을 버전 컨트롤에 저장 (예: GitHub)
  • 템플릿을 환경(DEV/STG/PROD) 간 공유

9. 기본 AMI 사용

  • 문제: 부팅 시간 증가, 수동 설정 필요, 최적화 미비
  • 실제 사례: 매번 Nginx, Node.js, PM2 설치 → 30분 소요
  • 해결 방법:
  • Custom AMI 생성 (도구, 설정, 기본 구성 포함)
  • EC2 Image Builder로 자동화된 이미지 생성/업데이트

10. IAM 역할 미설정

  • 문제: S3/DynamoDB 접근 불가, 보안 취약, 권한 관리 어려움
  • 실제 사례: .env 파일에 AWS 키 저장 → 실수로 git push → 암호화 채굴 농장 비용 발생
  • 해결 방법:
  • IAM Role 생성 → EC2 인스턴스에 Binding
  • 최소 권한 정책 적용 (예: s3:GetObject, dynamodb:Scan)

결론

  • 보안 그룹, Elastic IP, ELB + ASG, S3/RDS/EFS, Secrets Manager, CloudWatch, IaC, Custom AMI, IAM Role 등의 핵심 도구/패턴반드시 적용
  • Mistake | Fix 표 참고:

| 실수 | 해결 방법 |

|---|---|

| 보안 그룹 | 22, 80, 443, 3000 포트 허용 + IP 제한 |

| Elastic IP 미사용 | Elastic IP 할당 및 인스턴스에 Binding |

| 단일 인스턴스 | ELB + ASG 사용 |

| 인스턴스 내 데이터 저장 | S3, RDS, EFS 사용 |

| 하드코딩된 비밀 정보 | Parameter Store, Secrets Manager 사용 |

| 모니터링 미설정 | CloudWatch Logs + Metrics + Alarms 설정 |

| 패치 미적용 | SSM Patch Manager 자동 업데이트 |

| 수동 설정 | Terraform, CloudFormation으로 IaC 적용 |

| 기본 AMI 사용 | Custom AMI 생성 및 재사용 |

| IAM 역할 미설정 | IAM Role 생성 + 최소 권한 정책 적용 |