🔌 SPARTA/Courses

[클라우드 기반 백엔드 설계] 클라우드와 AWS 기초

eunjiom 2026. 3. 10. 11:54

클라우드와 AWS 기본

1. 웹사이트 동작 방식

  • 요청과 응답
    • 클라이언트는 서버의 위치를 알아야 요청을 보낼 수 있음
    • 서버도 클라이언트의 위치를 알아야 요청에 대한 응답을 할 수 있음
    • 클라이언트와 서버는 각각 주소 O / 주소 = IP

2. 온프레미스 vs 클라우드

구분 🏢 온프레미스 ☁️ 클라우드
서버 직접 구매 필요할 때 빌림
설치 직접 설치/구성 클릭 몇 번
확장 수주~수개월 수분~수시간
초기 비용 높음 낮음
관리 모두 직접 일부 위임 가능
유연성 낮음 높음

 

3. IaaS/PaaS/SaaS

 

  •  IaaS (Infrastructure as a Service)
    • 인프라만 빌림(서버, 네트워크, 스토리지)
    • 클라우드 사용한다 = IaaS 사용한다

 

4. AWS 기본

 

1) 데이터 센터

  • 컴퓨팅 시스템 및 관련 하드웨어 장비를 저장하는 물리적 위치

2) Account

  • AWS 서비스를 사용하기 위한 기본 단위
  • 1인 1계정 또는 회사당 여러 계정
  • 결제, 보안, 리소스 관리의 경계

3) Region

  • 지리적 영역(서울, 버지니아 등)
  • 리전마다 독립적(다른 나라에서 안 보임)

4) Availability Zone (줄여서 AZ)

  • 리전 안의 개별 데이터센터
  • AZ는 여러개 존재
  • 여러 AZ 제공 이유: 하나의 데이터센터에 장애가 나도 다른 AZ에서 서비스 유지하기 위함

5) AWS 서비스 예시

  • 아무거나 올릴 수 있는 서버가 필요해 → EC2
  • 데이터베이스가 필요해 → RDS
  • 이미지/파일을 저장해야해 → S3

보안·책임·비용

1. Shared Responsibility (공동 책임)

  • 누구 하나의 책임이 아닌 AWS와 사용자가 보안 책임을 나눠서진다
  • 서비스 유형별 책임 범위
    • IaaS : 인프라만 빌림 → 내가 거의 모두 관리
    • PaaS : 플랫폼까지 빌림 → IaaS보다 AWS의 관리 범위 많음
    • SaaS : 소프트웨어까지도 빌림 → 거의 다 AWS가 관리
  • 사용자가 설정한 것은 사용자 책임

2. 클라우드 안전장치, Budget

 

1) AWS Budget

  • 예산 계획을 수립하고, 실시간으로 모니터링하며, 설정한 기준을 초과할 경우 알림을 받거나 자동으로 대응하는 서비스
  • 주요기능
    • 예산 계획 수립 및 모니터링
    • 예산 예측
    • 알림

2) Budget 알림 설정 방법

1. AWS 콘솔 → Billing → Budgets
2. "Create a budget" 클릭
3. "Cost budget" 선택
4. 월 예산: $30
    1. 필요 시 그 때 그 때 늘려주면 됩니다!
5. 알림 임계값: 80%, 100%
6. 이메일 주소 입력
    1. Budget 알림이 전송될 이메일 주소입니다.
7. 생성 완료

 

IAM

1. IAM

  • AWS에서 누가 어떤 AWS 리소스에 무엇을 할 수 있는지를 정하고 통제하는 접근 제어 시스템
  • 핵심
    • 누가(Who): 이 요청은 인증되었는가?
    • 무엇을(What): 어떤 작업을 하려고 하는가?
    • 할 수 있는가(Can): 그 작업을 할 권한이 있는가?
  • IAM을 제대로 설정하지 않는다면 아무나 AWS에 접근하여 이것저것 수정해버릴 수 있음
  • IAM 설정: 팀원마다 별도 계정 부여 / 역할별로 권한 분리 / 서버에 필요한 권한만 부여

2. User/Role/Policy

 

1) User

  • 사람이 AWS에 접근할 때 사용하는 계정
  • 개발자가 AWS 콘솔(웹사이트)에 로그인할 때 / 관리자가 CLI(명령줄)로 AWS를 관리할 때 / 사람이 직접 AWS를 조작하는 모든 경우
  • 핵심 특징: 영구적인 자격증명(Credential)을 가짐 > 유출 시 문제 > 서버/자동화에서는 User 대신 Role 사용을 권장

2) Role

  • 서버/서비스에게 권한을 부여할 때 사용
  • EC2 서버가 S3에 파일을 업로드할 때 / GitHub Actions가 AWS에 배포할 때 / 서버/자동화 시스템이 AWS를 사용하는 모든 경우
  • 핵심 특징: 임시로 빌려 쓰는 권한 세트
  • User와 Role의 핵심 차이
User Role
• 사람용 • 서버/서비스용
• 영구 자격증명 보유(비밀번호, Access Key) • 자격증명 없음(필요할 때 임시 발급)
• 직접 로그인 가능 • 직접 로그인 불가(권한을 빌려서 사용)
• 만료 없음 • 자동 만료

 

3) Policy

  • 어떤 작업을 허용/거부할지 정의
  • Policy를 User나 Role에 “연결”하는 형태
더보기
  • 예시
- `AWS XXX 서비스 읽기` Policy를 `kim-dev` User에 연결
    
    → `kim-dev`가 `AWS XXX 서비스 읽기` 가능!
    
- `AWS XXX 서비스 읽기` Policy를 Role에 연결
    
    → 그 Role을 서버(서비스)가 `AWS XXX 서비스 읽기` 가능!
  • 구조 예시
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",              ← 허용? 거부?
      "Action": "s3:GetObject",       ← 어떤 동작을?
      "Resource": "arn:aws:s3:::my-bucket/*"  ← 어떤 대상에?
    }
  ]
}
  • "Effect": "Allow" : Allow 이므로 허용 (거부일 경우 Deny)
  • "Action": "s3:GetObject" : S3에서 Object를 가져오기
  • "Resource": "arn:aws:s3:::my-bucket/*" : S3의 my-bucket/* 대상
  • ARN(Amazon Resource Name): AWS 리소스의 고유 주소 / 형식: arn:aws:{서비스}:…
  • Policy 정리
Policy 이름 설명 위험도
AdministratorAccess 모든 권한 🔴 매우 높음
AmazonS3FullAccess S3 전체 권한 🟠 중간
AmazonS3ReadOnlyAccess S3 읽기만 🟢 낮음
AmazonEC2FullAccess EC2 전체 권한 🟠 중간

 

3. 보안원칙

 

1) 최소 권한 원칙

  • 광범위한 Policy 부여를 피함
  • 필요에 따라 권한을 하나씩 추가
  • IAM Access Analyzer를 사용하여 실제로 사용되지 않는 과도한 권한을 식별하고 제거

2) 루트 사용자 보호

  • Access Key 삭제
  • 일상 업무 사용 금지(계정 생성, 결제 정보 수정 등 특수한 경우를 제외)

네트워크

1. IP/Port/HTTP

 

1) IP 주소

  • 네트워크상에서 컴퓨터를 식별하는 주소
  • 형식: 0.0.0.0 ~ 255.255.255.255 (IPv4 기준)
  • Public IP: 인터넷 세상에서 누구나 찾아올 수 있는 주소
  • Private IP: 같은 네트워크 안에서만 통신할 수 있는 주소

2) 포트

  • 해당 컴퓨터(IP) 안에서 어떤 프로그램으로 연결될지 구분하는 번호
  • 자주 보는 포트
    • 22 (SSH): 서버 관리자가 원격 접속할 때 사용(보통 로컬에서 서버 접속할 때)
    • 80 (HTTP): 일반 웹사이트 접속
    • 443 (HTTPS): 보안 웹사이트 접속

3) HTTP

  • 클라이언트(웹 브라우저)와 서버가 데이터를 주고받는 규칙(프로토콜)
  • curl 명령어: 리눅스 계열 EC2에서 웹서버가 잘 동작하는지 확인용

2. 보안 그룹(Security Group)

 

1) 보안 그룹

  • AWS 리소스에 대한 네트워크 트래픽을 제어하는 가상 방화벽
  • 허용된 명단에 없으면 무조건 차단
  • 개별 리소스마다 적용

2) 보안 그룹 규칙

  • Whitelist 방식 : 차단(Deny) 규칙이 없고, 허용(Allow) 규칙만 존재 / 규칙에 적혀있지 않은 모든 트래픽은 자동 차단
  • Stateful (상태 저장): 들어올 때(인바운드) 허락받은 손님은, 나갈 때(아웃바운드) 검사 X

3. VPC와 VPC의 하위 요소

 

1) VPC

  • 리전 안에 있음
  • AWS 클라우드 내에 만드는 사설 네트워크
  • 다른 AWS 계정의 네트워크와 논리적으로 완벽히 격리
  • IP 주소 범위 (IP Range) 설정: VPC 내부는 외부 인터넷과 직접 연결되지 않는 IP를 사용

2) Subnet

  • 개념: 거대한 VPC 네트워크를 관리하기 편하게 작게 쪼갠 구역 / 하나의 VPC 안에는 여러 개의 서브넷을 만들 수 있음
  • 필수 규칙
    • 서브넷 = 1 가용 영역 (AZ): 하나의 서브넷이 여러 데이터센터(가용 영역)에 걸쳐 있을 수 없음
    • IP 범위 쪼개기: VPC 전체 IP(10.0.0.0/16)를 서브넷들이 나눠서 가짐

3) Route Table (라우팅 테이블)

  • 개념: 네트워크 트래픽(데이터)이 "어디로 가야 하는지" 방향을 알려주는 표지판(규칙) / 모든 서브넷은 반드시 하나의 라우팅 테이블과 연결
  • 트래픽을 처리하는 두 가지 방식
    • Local (내부 통신): 도착지가 내부 > VPC 내에서 찾아 보냄
      이 규칙은 삭제할 수 없으며, VPC 내의 모든 서버끼리는 별도 설정 없이 통신이 가능
    • External (외부 통신): 도착지가 외부 > 인터넷 게이트웨이로 보냄
      이 규칙이 있느냐 없느냐가 Public/Private을 결정

4) Internet Gateway (IGW)

  • VPC와 외부 인터넷 세상을 연결해 주는 유일한 관문(하나의 VPC에는 오직 하나의 IGW)
  • VPC는 기본적으로 고립된 환경 > GW가 없다면 VPC 내부 인프라에서 인터넷 접속이 불가능

5) Public Subnet vs Private Subnet (라우팅 테이블의 설정 차이)

  • Public Subnet: 연결된 라우팅 테이블에 IGW로 향하는 경로가 있는 서브넷
  • Private Subnet: 라우팅 테이블에 IGW로 향하는 경로가 없는 서브넷

4. EC2

 

1) EC2 (Elastic Compute Cloud)

  • AWS에서 제공하는 클라우드 컴퓨팅 서비스
  • 환경을 로컬에서 아마존 데이터 센터로 옮길 수 있는 원격 컴퓨터

2) AMI (Amazon Machine Image)

  • EC2를 시작할 때 사용하는 설치 이미지
  • 운영체제(ex. Linux, Windows)
  • 기본 패키지/도구(ex. AWS CLI)
  • 초기 설정(ex. 보안 설정)

3) 인스턴스 유형

  • AWS에서 제공하는 가상 컴퓨터의 성능과 특징을 나타내는 이름
  • R5d.xLarge: 어떤 용도 / 세대 / 추가 기능 /크기

4) 인스턴스 상태

상태설명 EC2 비용 퍼블릭 IP 데이터
Pending 시작 중 - - 유지
Running 실행 중 과금 과금 유지
Stopped 중지됨 (재시작 가능) 무료 해제 (재시작 시 새 IP 할당) 유지
Terminated 삭제됨 (복구 불가) 무료 해제 삭제
  • 주의사항: 중지 > 재시작 시 퍼블릭 IP 바뀜

5) EC2 인스턴스의 IP 주소

 

  • Private IP: VPC 내부 통신용 IP로 인스턴스 생성 시 자동 할당되며 인터넷에서는 접근할 수 없음
  • Public IP: 인터넷 통신용 IP로 인스턴스 시작 시 자동 할당되지만 인스턴스를 중지 후 다시 시작하면 변경
  • Elastic IP(EIP): 변경되지 않는 고정된 Public IP로 필요할 때 인스턴스에 연결해 사용할 수 있음