01 CHAPTER 01 · 사전·기초

AWS 기초 개념

AWS의 전체 구조를 이해하고 계정·IAM까지

사전·기초 과금 없음 읽기 전용

클라우드 컴퓨팅 · 가상화 · AWS 구조 · 리전 · 가용 영역 · 계정 · IAM · 임시 자격증명

CHAPTER INFO
📋 개념 중심 · 실습 없음
💰 과금 없음
🔗 이전: CH00 사전 지식
🔗 다음: CH02 Amazon EC2
이 챕터를 마치면 AWS 콘솔 용어가 들리기 시작합니다

클라우드 컴퓨팅이란

회사에 서버가 필요하면 어떻게 했을까요? 서버를 구매하고, 전용 공간을 만들고, 전원·냉각·네트워크를 설치하고, 운영팀이 24시간 관리해야 했습니다. 초기 비용이 크고, 트래픽이 갑자기 늘어나면 대응이 늦습니다.

클라우드 컴퓨팅은 이 서버를 인터넷으로 빌려 쓰는 방식입니다. 필요할 때 켜고, 안 쓸 때 끄고, 사용한 만큼만 냅니다. 전기처럼요.

💡
핵심 특징 세 가지
온디맨드(On-demand) — 필요할 때 즉시 사용 가능
탄력성(Elasticity) — 트래픽에 맞게 자동으로 늘고 줄어듦
종량제(Pay-as-you-go) — 쓴 만큼만 지불

클라우드 서비스 모델 — IaaS·PaaS·SaaS

클라우드는 어디까지 관리해주느냐에 따라 세 가지로 나뉩니다.

☁ 클라우드 서비스 모델 비교
구분 내가 관리하는 것 AWS가 관리하는 것 예시
IaaS
Infrastructure as a Service
OS, 미들웨어, 런타임, 앱, 데이터 하드웨어, 네트워크, 가상화 EC2, VPC, EBS
PaaS
Platform as a Service
앱 코드, 데이터 OS, 미들웨어, 런타임까지 전부 Elastic Beanstalk, Lambda
SaaS
Software as a Service
데이터만 앱 포함 전부 Gmail, Slack, Notion

AWS의 대부분 서비스는 IaaS입니다. EC2는 가상 서버를 빌려주지만 그 위에 무엇을 설치하고 어떻게 운영할지는 내가 결정합니다. 반면 Lambda는 코드만 올리면 실행해주는 PaaS에 가깝습니다.

온프레미스 vs 클라우드

구분온프레미스클라우드
초기 비용높음 (서버 구매)없음 (사용한 만큼)
확장 속도느림 (주문·설치 수주)빠름 (분 단위)
유지 관리직접 (하드웨어 고장 대응)AWS가 대부분 처리
데이터 위치내 건물AWS 데이터센터
보안 책임전부 내 책임공동 책임 모델
🏨
파르나스 호텔 기준으로 보면
VMC(VMware Cloud) 환경에서 EC2로 마이그레이션하는 작업이 바로 온프레미스(VMC) → IaaS(EC2) 전환입니다. 서버 자체를 관리하는 부담은 줄고, OS 위의 애플리케이션 운영은 그대로 내 책임입니다.

가상화 — EC2가 만들어지는 원리

AWS에서 EC2 인스턴스를 생성하면 수십 초 안에 서버가 생깁니다. 물리 서버를 주문한 게 아닌데 어떻게 가능할까요?

가상화(Virtualization)는 물리 서버 하나를 여러 개의 독립된 가상 서버로 나누는 기술입니다. 하이퍼바이저(Hypervisor)라는 소프트웨어가 물리 자원(CPU, 메모리, 디스크)을 나눠서 각 가상 머신에 할당합니다.

🖥 가상화 구조
🖥
EC2 인스턴스 A
OS + App
🖥
EC2 인스턴스 B
OS + App
🖥
EC2 인스턴스 C
OS + App
하이퍼바이저 (Nitro System)
가상 자원 분배 · 격리 · 관리
물리 서버
CPU · 메모리 · 디스크 · 네트워크

AWS는 자체 개발한 Nitro System을 하이퍼바이저로 사용합니다. EC2 인스턴스는 서로 완전히 격리돼 있어서, 같은 물리 서버에 있는 다른 고객의 인스턴스에 접근할 수 없습니다.

💡
컨테이너 vs 가상화
Docker 컨테이너도 비슷해 보이지만 다릅니다. 가상화는 OS까지 통째로 분리하고, 컨테이너는 OS를 공유하면서 프로세스만 격리합니다. 그래서 컨테이너가 더 가볍고 빠르지만, 격리 수준은 가상화가 더 강합니다.

AWS 구조 — 리전·가용 영역·엣지

AWS는 전 세계에 물리적 인프라를 분산해서 운영합니다. 이 구조를 이해하면 "왜 서울 리전에서 만든 EC2가 도쿄 콘솔에서 안 보이는지"가 바로 이해됩니다.

🌏 AWS 글로벌 인프라 구조
🌏 리전 (Region) — 아시아 태평양 서울 · ap-northeast-2
가용 영역 2a
데이터센터
독립 전원·네트워크
가용 영역 2b
데이터센터
독립 전원·네트워크
가용 영역 2c
데이터센터
독립 전원·네트워크
⚡ 엣지 로케이션
CloudFront CDN 캐시
🌐 리전 외 다른 리전
도쿄, 버지니아, 싱가포르...

리전 (Region)

리전은 지리적으로 독립된 AWS 인프라 집합입니다. 서울(ap-northeast-2), 도쿄(ap-northeast-1), 버지니아(us-east-1) 등 전 세계 30개 이상의 리전이 있습니다.

리전은 완전히 독립적입니다. 서울에서 만든 EC2는 도쿄 콘솔에서 보이지 않습니다. 콘솔 우측 상단 리전 드롭다운이 잘못 선택돼 있으면 "분명히 만들었는데 없다"는 상황이 생깁니다. 실수의 90%가 여기서 납니다.

⚠️
리전 고정 원칙
항상 아시아 태평양(서울) ap-northeast-2 하나만 쓰세요. 다른 리전에 실수로 만든 리소스는 눈에 안 보여서 방치되고, 크레딧이 조용히 빠집니다.

가용 영역 (Availability Zone, AZ)

리전 안에는 물리적으로 분리된 데이터센터 그룹이 있습니다. 서울 리전에는 2a·2b·2c·2d 네 개의 AZ가 있습니다. 각 AZ는 서로 수십 km 떨어져 있고, 독립된 전원·냉각·네트워크를 갖습니다.

개념의미AWS 용어
단일 AZ 한 데이터센터에만 배치 — 저렴하지만 장애 시 서비스 중단 Single-AZ
다중 AZ 두 개 이상 AZ에 배치 — 한 곳이 죽어도 다른 곳이 살아있음 Multi-AZ

RDS에서 "다중 AZ: 아니요"를 선택했던 이유가 이겁니다. 다중 AZ는 장애 복구에는 좋지만 인스턴스가 두 배라 요금도 두 배입니다.

엣지 로케이션 (Edge Location)

CloudFront가 사용하는 캐시 서버 위치입니다. 리전보다 훨씬 많아서(200개 이상), 사용자와 지리적으로 가까운 곳에서 정적 파일을 제공합니다. 서울에 있는 사용자가 미국 서버의 파일을 요청해도, 서울 엣지 로케이션에 캐시가 있으면 거기서 바로 받습니다.

AWS 계정과 프리 티어

AWS 계정은 모든 리소스와 청구의 단위입니다. 하나의 계정 안에 여러 리전, 여러 서비스, 여러 사용자(IAM)가 있을 수 있습니다.

프리 티어 세 종류

종류기간대표 서비스
12개월 무료 계정 생성일로부터 12개월 EC2 t2.micro 750시간/월, S3 5GB, RDS 750시간/월
상시 무료 기간 제한 없음 Lambda 월 100만 요청, DynamoDB 25GB, CloudFront 1TB
단기 평가판 서비스마다 다름 (30일·60일·90일) SageMaker, Rekognition 등
⚠️
무료 플랜 (2025년 7월 이후 신규 계정)
가입 시 선택한 "무료 플랜"은 6개월 또는 크레딧 소진 시 종료되고 계정이 자동 폐쇄됩니다. 유료 플랜으로 업그레이드는 언제든 가능하지만, 반대는 불가능합니다. 크레딧 $200 중 $100은 가입 즉시, 나머지 $100은 5가지 활동을 완료하면 지급됩니다.

공동 책임 모델 (Shared Responsibility Model)

AWS와 고객은 보안 책임을 나눠서 집니다. 이걸 모르면 "AWS가 다 알아서 해주겠지"라는 착각을 하게 됩니다.

🛡 공동 책임 모델
☁ AWS 책임 — 클라우드의 보안
  • 물리적 데이터센터 보안
  • 하드웨어·네트워크 인프라
  • 하이퍼바이저 (Nitro)
  • 관리형 서비스의 OS 패치
👤 고객 책임 — 클라우드에서의 보안
  • EC2 OS 패치 및 업데이트
  • 보안 그룹·NACL 설정
  • IAM 계정·정책 관리
  • 애플리케이션 코드 보안
  • 데이터 암호화

IAM — 누가 무엇을 할 수 있는가

IAM(Identity and Access Management)은 AWS 리소스에 대한 접근 권한을 제어하는 서비스입니다. "이 사람은 EC2를 볼 수만 있고 생성은 못 한다", "이 프로그램은 S3에 파일을 올릴 수 있다" 같은 규칙을 정합니다.

⚠️
루트 계정은 봉인하세요
이메일로 로그인하는 루트 계정은 모든 권한을 가진 슈퍼 계정입니다. MFA를 걸고, 일상 작업에는 절대 쓰지 마세요. IAM 사용자를 따로 만들어서 쓰는 게 원칙입니다.

IAM 구성 요소

구성 요소역할비유
사용자 (User) AWS에 로그인하는 개인 또는 프로그램 직원증
그룹 (Group) 사용자의 집합 — 그룹에 정책을 붙이면 그룹원 전체 적용 부서
역할 (Role) AWS 서비스나 외부 ID가 임시로 권한을 가져가는 방식 대리 권한 위임
정책 (Policy) 무엇을 허용/거부하는지 JSON으로 정의 출입 규정

IAM 정책 구조

정책은 JSON 형식으로 작성합니다. 실제로 작성할 일은 많지 않지만, 읽을 수는 있어야 합니다.

📄 IAM 정책 예시 — S3 버킷 읽기 허용
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",          // 허용 (또는 Deny)
      "Action": "s3:GetObject",   // 어떤 작업을
      "Resource": "arn:aws:s3:::my-bucket/*"  // 어디에
    }
  ]
}

IAM 역할 (Role) — EC2에 S3 접근 권한 주기

EC2에서 S3에 파일을 올리려면 권한이 필요합니다. 방법이 두 가지입니다.

방법작동 방식권장 여부
❌ 액세스 키 키 ID + 시크릿을 코드나 설정 파일에 직접 입력 지양 — 키가 노출되면 계정 전체가 위험
✅ IAM 역할 EC2 인스턴스에 역할을 붙이면 자동으로 임시 자격증명 발급 권장 — 키를 코드에 넣지 않아도 됨
🚨
액세스 키를 GitHub에 올리지 마세요
공개 레포에 올라간 AWS 액세스 키는 수십 분 안에 자동 스캐너에 탐지됩니다. 탈취된 키로 고성능 인스턴스를 대량 생성해 암호화폐 채굴에 쓰는 수법이 정형화돼 있습니다. 오늘 내일의 문제가 아닙니다.

임시 자격증명 — 액세스 키보다 안전한 이유

IAM 역할이 부여되면 AWS는 EC2에 임시 자격증명(Temporary Credentials)을 자동으로 발급합니다. 이 자격증명은 만료 시간이 있고(보통 1시간), 자동으로 갱신됩니다.

Spring Boot에서 AWS SDK를 쓸 때 별도로 액세스 키를 설정하지 않아도 S3나 RDS에 접근할 수 있는 이유가 여기 있습니다. SDK가 EC2의 메타데이터 서버에서 임시 자격증명을 자동으로 가져옵니다.

🔑 임시 자격증명 발급 흐름
🖥
EC2 인스턴스
🎭
IAM 역할 가정
🔑
임시 자격증명 발급
(1시간, 자동 갱신)
🗄
S3 접근

AWS CLI에서의 인증 체계

SDK와 CLI는 다음 순서로 자격증명을 찾습니다:

  1. 환경변수 (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)
  2. ~/.aws/credentials 파일
  3. EC2 인스턴스 메타데이터 서버 (IAM 역할)
  4. ECS 태스크 역할, Lambda 실행 역할

로컬 개발 환경에서는 1~2번, EC2 프로덕션 환경에서는 3번을 쓰는 게 일반적입니다. 키를 application.yml에 하드코딩하는 건 절대 안 됩니다.

핵심 정리

📌 CH01 핵심 개념 요약
클라우드 인터넷으로 빌려 쓰는 서버 · 온디맨드 · 탄력성 · 종량제
IaaS 하드웨어만 빌림 · OS 위는 내 책임 · EC2, VPC, EBS
가상화 물리 서버 하나를 여러 가상 서버로 분할 · Nitro System
리전 지리적 독립 단위 · 서울 = ap-northeast-2 · 리전 간 격리
가용 영역 리전 안의 독립 데이터센터 · 다중 AZ = 고가용성 · 요금 2배
IAM 사용자 루트 계정 봉인 · IAM 사용자로만 작업 · MFA 필수
IAM 역할 EC2에 부여 · 임시 자격증명 자동 발급 · 액세스 키 대체
공동 책임 하드웨어·물리 보안은 AWS · OS·앱·데이터·IAM 설정은 고객
다음 챕터로 넘어가기 전에
"EC2 인스턴스를 서울 리전 가용 영역 2c에 IAM 역할을 붙여서 생성한다"는 문장이 이해된다면 CH01을 마친 겁니다. CH02에서 실제로 그 인스턴스를 만들어봅니다.