들어가며,
AWS EC2로 서버를 실행시켜보는데 문득 의문이 들었다.
- AWS에는 종류가 왜이리 많은건지
- AWS EC2로만 서버를 실행할 수 있는지 → 다른 방법은 없는지
- EC2로 DB서버도 실행중이고 파일도 저장중인데 이게 옳은 방법인지
이런 간단한 궁금증은 결국 인프런 강의를 통해 내가 AWS 기초를 공부하게 되는 계기가 되었다.
IAM
“Identity and Access Management”
유저를 관리하고 접근 레벨 및 권한에 대한 권리
- 접근키(Access Key), 비밀키(Secret Access Key)
- 매우 세밀한 접근 권한 부여 기능 (Granular Permission)
- 비밀번호를 수시로 변경 가능하게 해줌
- Multi-Factor Authentication(다중 인증) 기능
- Only 비밀번호 X → 다른 인증 요소 (Facebook, Google 로그인 등)
- 그룹 Group
- 유저 User
- 역할 Role
- 정책 Policy
- IAM은 Universal하다.
- 지역 설정이 필요 없음!
- 근데 이 지역이 뭔지 잘 모르겠다..!
IAM 정책 시뮬레이터
- 개발환경(Staging or Develop)에서 실제 환경(Production)으로 빌드하기 전 IAM 정책이 잘 작동되는지 테스트하기 위함
- IAM과 관련된 문제들을 디버깅하기에 최적화된 툴
근데 IAM 정책 시뮬레이터는 그냥 JSON 읽고 여기에 권한이 있는 값만 Permission allowed 라고 뜨는걸까? 아니면 진짜 그 액션을 실행해보는걸까?
AWS IAM 정책 시뮬레이터(Policy Simulator) 는 실제로 액션을 실행하지 않는다고 한다.
정책 JSON을 해석해서 “이 요청이 허용되는지/거부되는지”를 논리적으로 계산하는 도구라고 한다.
아니 JSON 파싱 정도면 시뮬레이터가 왜 필요한거지..?
→ 실제로는 JSON으로 읽기에도 복잡히 얽힌 정책들이 많다고 한다.
EC2
“Elastic Compute Cloud”
크기가 유연하게 변동되는 장점⭐
EC2 사용시 내는 다양한 지불 방법
- On-demand
- 시간당 비용
- 단기간, 언제 끝날지 모를때 유리
- Reserved
- 미리 예약한 용량 사용 가능
- On-demand보다 저렴
- 프로젝트 기간이 정해져있을 때 유리
- Spot
- 가격을 경매로 구매함
- 갑자기 켜지고 꺼지는 것이 가능함
EC2를 사용하기 위해
EBS라는 디스크 볼륨을 요구한다.EBS
“Elastic Block Storage”
- 저장 공간이 생성되어지면 EC2 인스턴스에 부착된다.
- 디스크 볼륨 위에 File System이 생성된다.
- EBS는 특정
Availability Zone(백업)에 생성된다.
ELB
“Elastic Load Balancers”
- 수많은 서버의 흐름을 균형있게 흘려보내는데 중추적인 역할을 함
- 하나의 서버로 traffic이 몰리는 병목현상 방지
- Traffic의 흐름을 Unhealthy Instance → healthy Instace
Load Balancer Error: 504 Error
X-Forwarded-For 헤더를 사용하며 EC2가 public IP를 볼 수 있다.

Route 53
AWS에서 제공하는 DNS서비스
- EC2 instance
- S3 Bucket
- Load Balancer
RDS
“Relational DB Service”
Data Warehousing
- Business Intelligence
- 리포트 작성, 데이터분석시 이용 (Production Database → Data Warehousing)
- 매우 방대한 분량의 데이터 로드시 사용
- Transaction Processing에는 적합하지 않다.
OLTP vs OLAP
- OLTP: INSERT와 같이 종종 사용되어지는, 혹은 규모가 작은 데이터를 불러올 때 유용
- OLAP: 매우 큰 데이터를 불러올 때 사용. 주로 덩치가 큰 SELECT 쿼리가 사용됨
- Transaction Processing은 쓰이지 않는다.
Database Backup
- Automated Backups(AB) - 자동 백업
- 디폴트로 AB기능이 설정되어 있으며 백업 정보는 S3에 저장
- AB동안 약간의 I/O suspension이 존재할 수 있음
- 인스턴스를 삭제할 시 모두 삭제됨
- DB Snapshots
- 사용자에 의해 수동으로 실행됨
- 원본 RDS Instance를 삭제해도 스냅샷은 존재함
DB를 백업하면 1. RDS Instance 2. RDS Endpoint가 변경된다.


ElastiCache
- 클라우드 내에서 In-memory 캐시를 만들어줌
- 데이터베이스에서 데이터를 읽어오는 것이 아니라 캐시에서 빠른 속도로 데이터를 읽어옴
- Read-Heavy 어플리케이션에서 상당한 Latency 감소 효과 누림
ex. 실시간 검색어 top10
Memcached
- default
- EC2 Auto Scaling처럼 크기가 커졌다 작아졌다 가능함
- 오픈소스
Redis
- Key-Value, Set, List와 같은 형태의 데이터를 In-memory에 저장 가능함
- Multi-AZ 지원
S3
“Simple Storage Service”
AWS에서 가장 먼저 출시한 기능
- 안전하고 가변적인 Object 저장 공간을 제공 (ex. Google Cloud)
- 저장 공간 무제한
- Bucket이라는 이름을 사용 (디렉토리와 유사)
- Bucket 이름은 Unique
S3 Data Consistency Model
- Read after Write Consistency
- 읽고 쓰는 것을 동시에 가능하다.
- Eventual Consistency
- update, delete할 시 그 결과가 바로 나타나지 않는다.
요금
- GB당
- 다운로드 등 요청 개수당
S3 사용 용례
- 파일 저장소 (로그, 다양한 파일들)
- 웹사이트 호스팅
- 근데 이건 보안에 취약하다고 한다.
- CORS
- Region이 다를 때에도 연결이 가능하게 한다.
S3 암호화
x-amz-server-side-encryption-parameterCloudWatch
- AWS 리소스 사용의 실시간 모니터링 기능 지원
- 다양한 이벤트들을 수집하여 로그파일로 저장
- 이벤트?
- S3버켓 파일 업로드 & 삭제
- S3버켓 접근 시 접근 거부 발생
- RDS 데이터베이스에 접속 시도
- 이벤트 & 알람 설정을 통해 SNS, AWS Lambda 전송 가능
- CloudWatch 사용 가능 서비스들 : EC2, RDS, S3, ELB 등
사용 용례
- Use Case: 매일 얼마나 많은 사용자들이 모바일 앱을 사용하는지 알고 싶음
- Potential Issue: 특정날에 수많은 traffic이 몰릴 수 있어 병목현상이 생길 수 있음
- Solution: 매일 traffic rate와 특정 버튼의 유저 클릭 횟수를 분석하여 더 효율적인 앱개발을 할 수 있는 통찰력 얻을 수 있음
Alarm
- 임의로 정해놓은 값에 도달할 시 Alarm 울림
- Alarm이 울릴 시 특정 이벤트들을 작동시킬 수 있음
Lambda
- Serverless의 주축을 담당
- Events를 통하여 Lambda를 실행시킴
- 5분이 최대 → 실행 시간이 5분이 지나면 종료된다.
- 함수를 호출할 때마다 비용이 든다.
EC2 서버를 계속 열어두는 것이 좋을까? Lambda 함수를 쓰는 것이 좋을까?
→ 동기화 작업이 10분 이내에 끝나는 주기적 작업이라면 Lambda + EventBridge가 훨씬 효율적
→ 만약 대량 데이터 처리, 상태 유지, 장시간 작업이 필요하다면 EC2 상시 실행이 맞음
Q. AWS Lambda 함수에 IAM 실행 역할(Execution Role)이 필요한 주된 이유는 무엇일까요?
A. 다른 AWS 서비스에 접근할 권한을 부여하기 위해
CloudFront
- 정적, 동적, 실시가 웹사이트 컨텐츠를 유저들에게 전달
- Edge Location 사용
- Content Delivery Network (CDN) → 얘를 이해하는 것이 중요하다.
- 분산 네트워크 (Distributed Network)
용어 정리
- Edge Location: 컨텐츠들이 캐시에 보관되어지는 장소
- Origin: 원래 컨텐츠들이 들어있는 곳. 웹서버 호스팅이 되어지는 곳. S3, EC2인스턴스가 오리진이 될 수 있음.
- Distribution: CDN에서 사용되어지며 Edge Location들을 묶고 있다는 개념
얘는 Vercel같이 웹 배포 서비스가 아니라 CDN 서비스라고 생각하면 좋을 것 같다.
DynamoDB
- NoSQL 데이터베이스
- 매우 빠른 쿼리 속도
- Auto-Scaling 기능 탑재
- Key-Value 데이터 모델 지원
- 테이블 생성시 스키마 생성 필요 없음
- 모바일, 웹, IoT 데이터 사용시 추천됨
- SSD 스토리지 사용 → 매우 빠르다
이건 그냥 AWS에서 제공하는 DB이다.
API Gateway
대부분의 어플리케이션은 RESTful API 기반으로 운용됨
매우 힘든 RESTful API 관리
- Authentication & Authorization
- API 요청을 모니터링 해야함
- 더나은 성능을 위해 API 요청 캐시 시스템 필요
→ API Gateway가 해결해줌!!
- 뛰어난 확장성 제공 및 API를 만들고 운영하고 모니터링 가능
- Back-end 서비스 (웹 어플리케이션, EC2)에 들어있는 데이터 접근 허용
- API를 요청할 때, 시간이 얼마 걸리는지에 따라 요금 정산
API Gateway는 그럼 FastAPI처럼 API를 만들어주는 서비스인가?
많이 헷갈리는 부분인데, API Gateway는 FastAPI 같은 웹 프레임워크가 아니라 “API 엔드포인트 앞단의 관문” 이라고 한다.
- 직접 API 로직을 구현하지 않음
- *이미 존재하는 Lambda 함수, EC2, ECS, 다른 서비스(S3, DynamoDB 등)에 연결하는 “프록시 역할”
- 요청을 받아서 적절한 백엔드로 라우팅
예시)
- 클라이언트 → https://api.myservice.com/users 요청
- API Gateway → Lambda 함수 실행 → DynamoDB에서 사용자 정보 가져옴 → 결과 반환


