-
[4월 2주차-4/8(1)]AWS 서비스 3대장 기초부터 알아보기Why Not SW CAMP 5기/수업 기록 2025. 4. 8. 10:21
✅ 예시: 간단한 웹서비스 구조
상황: 웹 사이트 서비스(IFITV)
전체 그림:
[사용자] → [ELB] → [EC2] ↔ [RDS] ↕ [S3]
1. EC2(Elastic Compute Cloud) – 서버 역할
- 사용자가 웹사이트에 접속하면, 그 요청은 EC2에서 실행 중인 프로그램(예: Flask, Node.js 등)이 처리함
- 이 EC2는 웹 페이지도 렌더링하고, 사용자 요청에 따라 데이터도 처리함
✅ 핵심 개념
- AWS에서 가상의 컴퓨터(서버)를 임대해서 사용하는 서비스
- OS 선택 가능 (Ubuntu, Amazon Linux, Windows 등)
- 웹 서버, API 서버, 배치 처리 서버 등으로 활용 가능
📦 구성 요소
AMI (Amazon Machine Image) OS + 소프트웨어 패키지를 담은 템플릿 인스턴스 타입 CPU, RAM, 네트워크 성능을 조합한 사양 (예: t2.micro) 키 페어 SSH로 접속하기 위한 공개/개인 키 쌍 보안 그룹 이 인스턴스로 들어오고 나가는 트래픽을 제어하는 방화벽 퍼블릭 IP 외부에서 접속 가능하도록 부여된 주소 (필요시 Elastic IP로 고정 가능) 🔐 보안 그룹 설정 예시 (Django 서버용)
SSH 22 내 IP (접속용) HTTP 80 0.0.0.0/0 (모두 허용) HTTPS 443 0.0.0.0/0 Custom TCP 8000 S3나 프론트가 백엔드 호출 시 필요 📌 탄력적 IP(Elastic IP)란?
고정된 공인 IP 주소를 AWS가 제공해주는 서비스
쉽게 말해, EC2 인스턴스에 고정된 외부 IP 주소를 붙여주는 것❓ 왜 필요할까?
기본적으로 EC2를 만들면 퍼블릭 IP가 자동으로 할당됨. 그런데 EC2를 껐다 켜면 이 IP가 바뀜
→ 이러면 도메인이나 API 클라이언트 연결이 끊김 😥그래서 필요한 게 탄력적 IP!
- 한 번 발급받으면 내가 직접 붙였다 뗐다 할 수 있는 고정 IP
- EC2를 껐다 켜도 IP가 변하지 않음
- 여러 서버에 재사용 가능
💸 요금 주의 사항
- 사용 중이면 무료 (EC2에 연결되어 있으면)
- 연결 안 하고 방치하면 요금 발생!
- 탄력적 IP는 자원이니까, 놀리면 돈 받는다는 것
📌 요약 정리
항목설명목적 EC2에 고정된 공인 IP 제공 장점 재부팅해도 IP 유지, 다른 서버에 재사용 가능 요금 연결돼 있으면 무료, 미사용 시 유료 사용 예 고정 도메인 연결, API 서버 외부 통신, 서버 교체 대비
2. RDS(Relational Database Service) – 데이터 저장소
- 사용자의 이름, 선호 채널, 시청 기록 등은 전부 관계형 데이터베이스(RDS)에 저장
- EC2는 이 데이터를 읽고 쓰면서 맞춤 추천을 처리함
✅ 핵심 개념
- AWS가 DB 서버를 자동으로 관리해주는 서비스
- MySQL, PostgreSQL, Oracle 등 다양한 엔진 지원
- 백업, 복구, 모니터링, 장애 처리까지 자동으로 제공
📦 구성 요소
DB 엔진 MySQL, MariaDB, PostgreSQL 등 인스턴스 클래스 성능 사양 (db.t3.micro 등) 스토리지 SSD, 프로비저닝 IOPS 선택 멀티 AZ 장애 대비 이중화 구성 가능 엔드포인트 DB 주소 (mydb.xxxxxxx.us-east-1.rds.amazonaws.com) 🔐 보안 그룹 설정 예시
- 포트 3306 (MySQL 기본 포트)을 열어야 함
- 허용 대상은 "EC2가 속한 보안 그룹"으로 설정하면 보안적으로 좋음
MySQL/Aurora 3306 EC2의 보안 그룹 (예: sg-12345678)
3. S3(Simple Storage Service) – 파일 저장소
- 사용자 프로필 사진, 채널 썸네일, 추천 알고리즘 모델 파일 등 파일 형태로 된 건 S3에 저장
- EC2는 필요할 때 S3에서 파일을 불러와서 사용자에게 보여줌
✅ 핵심 개념
- 파일(정적 리소스)을 저장하고 제공하는 저장소 서비스
- 버킷(Bucket) 단위로 구분됨
- 무제한 저장 가능 / 안정성 99.999999999%
- 정적 웹 호스팅 기능 제공
🗃️ 자주 쓰는 활용 예
- 정적 웹사이트 호스팅 (React 빌드 파일)
- 사용자 업로드 파일 저장
- AI 모델/로그/이미지 저장소
🔐 권한 관리 방식
1. 퍼블릭 접근 설정
- 정적 웹사이트로 쓸 때 사용
→ "모든 사람에게 읽기 허용" 설정해야 됨
2. IAM 역할 + 정책 사용
- EC2가 S3에 접근할 때는 IAM 역할을 통해 권한 부여
🔐 보안 그룹 vs IAM 요약
항목 보안 그룹 IAM 역할
대상 네트워크 접근 제어 리소스(EC2, Lambda 등)의 AWS 서비스 접근 권한 작동 방식 포트/프로토콜 기반 허용/차단 서비스에 따라 API 접근 가능 여부 제어 예시 EC2에서 80포트만 열기 EC2가 S3에서 파일 읽도록 허용
💡 추가로 알아두면 좋은 AWS 서비스들
🌀 ELB (Elastic Load Balancer)
트래픽 분산기
- 사용자가 많아지면 EC2 하나로는 감당이 안 됨
→ 여러 개의 EC2를 실행해야 함
→ 그럼 누가 어떤 서버로 보내줄지 정해주는 게 필요함 - ELB가 이 역할을 해줘요: "사용자 요청을 여러 서버로 고르게 나눠줘요"
👉 쉽게 말해:
"사람 줄 세우는 안내원 역할!"
🌐 VPC (Virtual Private Cloud)
나만의 AWS 네트워크 공간
- AWS 안에 내 프로젝트만을 위한 가상의 네트워크 공간을 만드는 것
- 여기서 보안 그룹 설정도 하고, 외부에서 접근 가능한 것과 아닌 것을 세부적으로 설정 가능
👉 쉽게 말해:
"나만의 아파트 단지를 만들고, 입구에 경비도 세우는 느낌!"
🔐 IAM (Identity and Access Management)
권한 관리 시스템
- 누가 어떤 AWS 서비스에 접근할 수 있는지 설정하는 서비스
- 예를 들어, EC2는 S3에서 파일을 읽을 수 있지만, 삭제는 못하게 하고 싶을 때 IAM으로 설정
👉 쉽게 말해:
"열쇠랑 잠금장치를 관리하는 관리자!"
📊 CloudWatch
모니터링 시스템
- EC2가 CPU를 얼마나 쓰고 있는지, RDS가 얼마나 느린지, 에러가 얼마나 났는지 등을 실시간으로 볼 수 있음
- 알람도 설정할 수 있어서, 트래픽 폭주나 다운타임에 대비 가능
👉 쉽게 말해:
"CCTV + 상태판 역할!"
🎯 정리 요약
서비스 역할 비유
EC2 서버 컴퓨터 웹 프로그램 실행기 RDS 관계형 데이터 저장소 사용자 정보 저장소 S3 파일 저장소 이미지/영상/문서 보관함 ELB 트래픽 분산기 사용자 줄 세우기 VPC 가상 네트워크 우리 아파트 단지 IAM 권한 설정 누가 뭘 할 수 있을지 잠금 설정 CloudWatch 모니터링 실시간 상태 감시카메라
🎯 현실적인 팁
- EC2, RDS, S3를 같이 쓰면 보안 그룹 간 연결을 잘해야 데이터가 잘 오감
- RDS는 직접 퍼블릭하게 열지 말고, EC2만 접근 가능하게 설정
- S3는 업로드/다운로드만 하게 하고 삭제 권한은 제한하는 게 안전
- IAM 역할로 EC2 → S3 권한 연결할 땐 EC2 생성 시 IAM Role을 붙여야 함
'Why Not SW CAMP 5기 > 수업 기록' 카테고리의 다른 글
[4월 2주차-4/10][AWS 실습] S3 정적 웹 호스팅 & CloudFront CDN 연동하기 (1) 2025.04.10 [4월 2주차-4/9][AWS 실습] WordPress + RDS + Auto Scaling + ELB로 고가용성 아키텍처 구축하기 (1) 2025.04.09 [4월 2주차-4/7]🚀 Flask Pybo 프로젝트 운영 환경 배포 완전 정복 (with Gunicorn & Nginx) (0) 2025.04.07 [4월 1주차-4/4]🚀 Pybo Q&A 게시판 AWS Lightsail로 배포하기 (0) 2025.04.07 [4월 1주차-4/3]🧭 Pybo 프로젝트 GitHub에 올리고 SourceTree로 형상관리하기 (0) 2025.04.03