Skip to Content
AWS Infra

AWS 인프라 기초

AWS는 수백 개의 서비스를 제공하지만, 웹 애플리케이션 배포에 꼭 필요한 핵심은 손에 꼽는다. 컴퓨팅·스토리지·DB·네트워크·권한이라는 다섯 축을 중심으로, 서버 한 대를 올리는 흐름을 따라가며 정리한다.
1

클라우드와 책임 공유 모델

클라우드는 물리 서버를 직접 사지 않고, API로 컴퓨팅·스토리지·네트워크를 빌려 쓰는 방식이다. 핵심은 책임 공유 모델(Shared Responsibility)을 이해하는 것이다.

AWS의 책임

데이터센터, 하드웨어, 네트워크 인프라 등 클라우드 자체(of the cloud)의 보안과 가용성을 책임진다.

사용자의 책임

OS 패치, 방화벽 설정, 접근 권한, 데이터 암호화 등 클라우드 안(in the cloud)의 구성을 책임진다. 보안 사고의 대부분은 이 영역에서 발생한다.

핵심 5개 서비스

EC2(컴퓨팅) · S3(스토리지) · RDS(DB) · VPC(네트워크) · IAM(권한). 이 다섯을 이해하면 대부분의 웹 서비스 인프라를 구성할 수 있다.

2

EC2: 컴퓨팅

EC2(Elastic Compute Cloud)는 가상 서버를 빌려주는 서비스다. 사양(인스턴스 타입)을 고르고, 운영체제 이미지(AMI)를 선택해 몇 분 만에 서버를 띄운다.

  • 인스턴스 타입: t(범용·버스트), c(컴퓨팅 최적), m(메모리) 등 용도별로 나뉜다. 작게 시작해 필요 시 키운다.
  • AMI: 미리 구성된 OS 이미지. Amazon Linux, Ubuntu 등을 선택한다.
  • 키 페어: SSH 접속용 키. 개인 키는 안전하게 보관하고 절대 공유하지 않는다.
  • Auto Scaling: 부하에 따라 인스턴스 수를 자동으로 늘리고 줄여 가용성과 비용을 함께 잡는다.

비용 함정

EC2는 켜져 있는 시간만큼 과금된다. 실습 후 인스턴스를 종료하지 않으면 요금이 계속 누적된다. 학습용은 작업 후 중지/종료를 습관화한다.

3

S3: 오브젝트 스토리지

S3(Simple Storage Service)는 파일을 ‘버킷’에 객체 단위로 저장하는 무제한 스토리지다. 이미지·백업·정적 웹사이트 호스팅 등에 쓴다.

버킷과 객체

버킷은 전역적으로 고유한 이름을 가진 저장 공간이고, 그 안에 객체(파일)를 키-값으로 저장한다. 높은 내구성(99.999999999%)을 보장한다.

정적 호스팅 + CDN

정적 파일을 S3에 두고 CloudFront(CDN)를 앞에 붙이면, 전 세계 엣지에서 빠르게 제공된다. 프론트엔드 배포에 흔히 쓰는 조합이다.

퍼블릭 노출 사고

버킷을 실수로 전체 공개(public)로 두어 민감 데이터가 유출되는 사고가 잦다. 기본은차단(Block Public Access)을 유지하고, 꼭 필요한 객체만 정책으로 연다.

4

RDS: 관리형 데이터베이스

RDS(Relational Database Service)는 MySQL·PostgreSQL 등 관계형 DB를 관리형으로 제공한다. 백업·패치·복제 같은 운영 부담을 AWS가 대신 진다.

기능역할
자동 백업스냅샷과 특정 시점 복구(PITR) 지원
Multi-AZ다른 가용 영역에 동기 복제본 → 장애 시 자동 전환
Read Replica읽기 전용 복제본으로 조회 부하 분산
관리 자동화마이너 버전 패치·모니터링을 AWS가 수행

직접 운영 vs RDS

EC2에 DB를 직접 설치하면 자유롭지만 백업·패치·이중화를 모두 직접 해야 한다. RDS는 그 운영 부담을 가져가는 대신 일부 제약이 있다. 대부분의 경우 RDS가 유리하다.

5

VPC: 네트워크 격리

VPC(Virtual Private Cloud)는 내 전용 가상 네트워크다. 서브넷으로 공개/비공개 영역을 나누고, 어떤 트래픽을 허용할지 통제한다.

퍼블릭 / 프라이빗 서브넷

웹 서버는 외부 접근이 필요한 퍼블릭 서브넷에, DB는 외부에서 직접 닿을 수 없는 프라이빗 서브넷에 둔다. DB는 웹 서버를 통해서만 접근하게 한다.

보안 그룹

인스턴스 단위 가상 방화벽이다. ‘80/443은 모두 허용, 22(SSH)는 내 IP만’ 처럼 인바운드 규칙을 최소로 연다. 포트포워딩 편에서 다룬 노출 위험을 통제하는 장치다.

6

IAM: 권한 관리

IAM(Identity and Access Management)은 ‘누가 무엇을 할 수 있는가’를 정의한다. AWS 보안의 출발점이며, 가장 흔한 사고의 원천이기도 하다.

IAM 정책 예시 (S3 읽기 전용)
{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Allow",
    "Action": ["s3:GetObject"],
    "Resource": "arn:aws:s3:::my-bucket/*"
  }]
}
  • 최소 권한 원칙: 꼭 필요한 권한만 부여한다. *(전체 허용)는 최후의 수단이다.
  • 루트 계정 봉인: 루트 계정은 일상 작업에 쓰지 않고, MFA를 걸어 잠가둔다. 작업은 IAM 사용자/역할로 한다.
  • 역할(Role) 활용: EC2 등에 액세스 키를 박지 않고 IAM 역할을 부여하면, 자격증명이 자동 순환돼 유출 위험이 준다.

액세스 키 유출

액세스 키를 코드·깃 저장소에 커밋해 유출되는 사고가 매우 흔하다. 키는 환경 변수나 시크릿 매니저에 두고, 가능하면 키 대신 역할을 쓴다.

클라우드는 자유를 주는 만큼 책임도 넘긴다.
컴퓨팅·스토리지·DB·네트워크·권한, 다섯 축을 이해하고 최소 권한으로 잠가라.