클라우드와 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을 결정
- Local (내부 통신): 도착지가 내부 > VPC 내에서 찾아 보냄
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로 필요할 때 인스턴스에 연결해 사용할 수 있음
'🔌 SPARTA > Courses' 카테고리의 다른 글
| [클라우드 기반 백엔드 설계] 운영형 Spring Boot (0) | 2026.03.10 |
|---|---|
| 스탠다드반 10회차: Filters & Proxy Objects (0) | 2026.03.09 |
| 스탠다드반 9회차: TDD와 단위 테스트 (0) | 2026.03.05 |
| 스탠다드반 8회차 : 로깅(AOP)와 인증/인가의 시작(JWT) (0) | 2026.03.04 |
| Spring Security와 SecurityContext (0) | 2026.03.03 |