AWS 1~5

김기훈·2025년 10월 17일

AWS

목록 보기
1/5
post-thumbnail

1. AWS(= Amazon Web Services)

클라우드 + AWS의 기본 개념

  • 클라우드 컴퓨팅
    • 서버, 스토리지, 데이터베이스, 네트워크 등을 인터넷 상의 서비스로 빌려 쓰는 것
    • 자체 물리 서버를 관리하지 않아도 되고, 필요할 때만 쓰고 비용 지불 → 유연성 & 비용 효율성
    • 분산된 데이터 센터(리전 & 가용 영역) 위에서 이런 클라우드 서비스를 제공하는 플랫폼
  • 리전(Region) / AZ(Availability Zone)
    • WS는 여러 지역(예: 서울 리전, 도쿄 리전 등)에 데이터 센터를 두고 있음
    • 각 리전은 여러 가용 영역(AZ)으로 나뉘고, AZ는 물리적으로 분리된 데이터 센터 단위
    • 서비스 설계 시 가용성과 내구성을 고려해 리전/ AZ 구조를 이해해야 함
  • 비용과 과금 모델
    • 대부분의 서비스는 종량 요금(pay-as-you-go) 방식
    • 사용한 리소스 (컴퓨팅 시간, 저장 용량, 데이터 전송량 등)에 기반
    • 무료 티어(Free Tier)가 있고, 처음 1년은 일부 서비스가 무료로 제공되기도 함
    • 비용 빠르게 나가버리는 함정이 있으니, 리소스 할당 시 주의
      • (예: EC2 인스턴스 켜 놓고 안 끄는 경우)

IAM (Identity and Access Management)

  • AWS 계정의 사용자(User), 그룹(Group), 권한(Policy) 을 관리하는 서비스
구성요소설명예시
User (사용자)AWS 리소스에 접근하는 개별 계정developer1, admin, intern
Group (그룹)비슷한 역할을 가진 사용자 묶음Developers, Admins
Role (역할)특정 권한 세트를 가진 ‘임시 신분’EC2가 S3에 접근할 때 쓰는 역할
Policy (정책)실제 권한을 JSON 형식으로 정의"Action": "s3:ListBucket"
MFA (다중 인증)계정 보안을 강화하는 2단계 인증휴대폰 OTP로 로그인

Role

  • AWS 서비스가 각 학생들에게 반장이라는 역할(Role)를 주고 있다.

권한 구조(Policy 구조 예시)

  • Effect: 허용(Allow) 또는 거부(Deny)
  • Action: 가능한 작업들 (예: s3:GetObject)
  • Resource: 어떤 리소스(S3 버킷 등)에 적용할지
    • * 은 모든 리소스 대상
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket",
        "s3:GetObject"
      ],
      "Resource": "*"
    }
  ]
}

⚠️ 주의사항 ⚠️

  • Root 계정은 절대 일상용으로 사용하지 말것
    • 처음 가입할 때 만든 계정은 루트(root) 계정
    • 이 계정은 “신용카드 관리자 + 신 관리자 권한” 을 가짐
      • IAM User를 따로 만들어서 사용하는 것이 좋음
  • “최소 권한 원칙(Least Privilege)”
    • 꼭 필요한 권한만 줘야 함.
      • ex. S3 읽기만 필요하다면 ReadOnlyAccess 정책만 부여.
  • MFA는 무조건 켜두기
    • 휴대폰 OTP나 Authenticator로 로그인 2단계 보호.

S3 (Simple Storage Service)

  • 파일(객체)을 저장하는 클라우드 스토리지 서비스
    • 이미지, 동영상, 로그, 백업 등 모든 형태의 파일을 저장 가능
개념설명예시
Bucket (버킷)최상위 폴더 (파일 저장소 단위)my-first-bucket
Object (객체)버킷 안에 저장된 파일images/cat.png, logs/app.log
Key (키)객체의 경로 이름folder1/photo.jpg
Region (리전)버킷을 저장할 지역ap-northeast-2 (서울)

DB랑 다른점은?

  • 정형 데이터: 형태가 고정된 데이터 -> 행과 열로 구분되는 데이터
  • 비정형 데이터: 형태가 고정되는 않은 데이터
    • .jpeg / .png / .pdf = 바이너리 데이터

S3 접근 제어 방식

  • S3는 IAM과 연결돼서 접근 통제가 매우 정교
    • IAM Policy: 사용자 단위로 접근 제어
    • Bucket Policy: 버킷 전체에 접근 규칙 설정 (JSON)
    • ACL (Access Control List): 객체 단위의 접근 (지금은 거의 안 씀)
# 예시: 버킷을 “읽기 전용 공개”로 설정
## 실제 운영에서는 조심해야 함
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "PublicReadGetObject",
      "Effect": "Allow",
      "Principal": "*",
      "Action": ["s3:GetObject"],
      "Resource": ["arn:aws:s3:::my-bucket/*"]
    }
  ]
}

⚠️ 주의사항 ⚠️

  • 버킷 이름은 전 세계에서 유일해야 함
    • my-bucket 이런 버킷 이름은 무조건 중복이 생겨서 충돌 가능
    • ozhoonbucket 처럼 중복될 가능성이 없는 이름으로 하는게 좋음
  • 퍼블릭 접근 주의
    • “모두 접근 가능”은 매우 위험 (특히 개인정보, 백업 데이터)
    • 테스트용이 아니면 절대 Public Access 해제 금지
  • 버전 관리(Versioning) 켜두기
    • 파일을 실수로 덮어쓸 때, 이전 버전 복원 가능
  • 수명 주기(Lifecycle Rule)
    • 오래된 파일은 자동으로 Glacier(저비용 보관소)로 이동하게 설정 가능

사용

  • 1.버킷만들기
    • 객체 소유권(ACL): 객체에 대한 액세스를 지정할 수 있는 사용자를 결정 (비활성화 권장)
    • 퍼블릭 액세스(Public Access): 인터넷을 통한 접근
      • 안전을 위해서 차단하는게 좋음
      • 퍼블릭 엑세스를 차단했다면 콘솔 상에서 dev_user 는 버킷에 접근 가능
        • 관리자로 권한(IAM Policy)을 다 열어놨기 때문에 접근 가능
        • dev_user(AdministratorAccess)
        • 권한을 부여 받은 사람만 가능하다 -> Public Access 차단
    • 버전관리 (유료)
      • 버전 관리를 사용하여 Amazon S3 버킷에 저장된 모든 객체의 각 버전을 보존,
        • 검색 및 복원 가능, 의도치 않은 사용자 작업과 애플리케이션 장애를 모두 복구
    • LifeCycle
      • 시간을 지정해서 지우기 가능(ex. 10일뒤에 지우기)

2. AWS - 2

S3 데이터 관리

  • 공개적인 데이터 관리할 경우 (ex. 웹사이트 회사 로고)
    • 퍼블릭 엑세스 차단: 비활성
    • bucket policy 추가 (모두 Allow)
  • 비공개 버킷 + 개발자는 허용(ex. 대외비문서, 회사 백업자료)
    • 퍼블릭 엑세스 차단: 활성
    • bucket policy (특정 계정만 Allow)
  • 비공개 버킷 + 개발자도 비허용 (ex. 회원 개인정보)
    • 퍼블릭 엑세스 차단: 활성
    • bucket policy (모두 Deny)

정적 웹 사이트 호스팅

  • html 파일을 이용하여 간단한 배포 가능

스토리지 클래스

  • 데이터의 접근 빈도, 내구성, 비용 등을 기준으로 적절한 저장 방식을 선택할 수 있게 해주는 요금제·성능 구분 개념
    • “자주 쓰는 파일인가?”, “장기간 보관만 하면 되는가?”에 따라 다른 클래스를 쓰는 것
클래스 이름특징사용 사례비용복원 속도
S3 Standard높은 내구성(99.999999999%)과 가용성, 빠른 접근속도웹사이트, 자주 조회되는 데이터💰 비쌈즉시
S3 Standard-IA (Infrequent Access)가끔 접근하지만 즉시 접근 필요, 저장비용↓·요청비용↑백업, 로그💰 중간즉시
S3 One Zone-IA한 가용영역(AZ)에만 저장 → 저렴하지만 내구성 낮음재생성 가능한 데이터💰↓즉시
S3 Intelligent-Tiering접근 패턴 자동 분석 → 자동으로 Standard ↔ IA 전환접근 패턴이 불규칙한 데이터💰 중간 (자동 전환 수수료 있음)즉시
S3 Glacier Instant Retrieval거의 접근 안 하지만 접근 시 빠른 복원오래된 이미지, 아카이브💰↓수초~분 내
S3 Glacier Flexible Retrieval (구 Glacier)저비용, 복원에 수분~수시간장기 보관 백업💰 아주 저렴느림
S3 Glacier Deep Archive최저비용, 장기 아카이브용 (복원 12시간 이상)법적 문서, 규제 보관 데이터💰 가장 저렴매우 느림

EC2(Elastic Compute Cloud)

  • AWS에서 제공하는 가상 서버(가상 머신, Virtual Machine) 서비스
    • 사용자가 직접 물리 서버를 사지 않아도 AWS 클라우드에서 필요한 만큼
      • 컴퓨팅 자원을 빌려 쓸 수 있는 서비스
  • 즉, “필요한 만큼, 원하는 스펙으로, 즉시 실행할 수 있는 클라우드 서버”

주요 구성 요소

  • 인스턴스(Instance)
    • 실제로 실행되는 가상 서버. OS(리눅스/윈도우 등)를 선택해서 실행함
  • AMI (Amazon Machine Image)
    • 인스턴스 생성 시 사용하는 템플릿 (운영체제 + 설정 포함)
  • EBS (Elastic Block Store)
    • 인스턴스에 연결하는 하드디스크 역할 (데이터 저장소)
  • 보안 그룹(Security Group)
    • 방화벽 규칙. 인바운드(들어오는) / 아웃바운드(나가는) 트래픽을 제어
  • 키 페어(Key Pair)
    • SSH(리눅스) 또는 RDP(윈도우) 접속용 비밀키/공개키 쌍
  • 인스턴스 유형 (Instance Type)
    • CPU, RAM, 네트워크 성능 등 스펙 조합 (예: t2.micro, m5.large 등)

동작 과정 요약

    1. AWS 콘솔에서 EC2 인스턴스를 생성(Create Instance)
    1. 사용할 AMI(예: Ubuntu, Amazon Linux 등)인스턴스 유형 선택
    1. 키 페어(Key Pair) 생성 → 이걸로 SSH 접속
    1. 보안 그룹(Security Group) 설정 → 접근할 포트 지정 (예: 22, 80 등)
    1. EBS 볼륨 크기 설정 → 디스크 용량
    1. 런칭(Launch) → 클라우드 상에 서버가 실행
    1. 퍼블릭 IP로 접속해서 직접 서버 관리 가능

장점

  • 유연성
    • CPU, 메모리, 스토리지 크기 변경 가능
  • 확장성
    • 필요 시 인스턴스 수를 자동으로 늘리거나 줄일 수 있음 (Auto Scaling)
  • 다양한 OS 지원
    • Linux, Ubuntu, Amazon Linux, Windows 등
  • 비용 효율적
    • 사용한 시간만큼만 과금 (초 단위 과금도 가능)
  • 통합 관리
    • VPC, IAM, S3, RDS 등 다른 AWS 서비스와 쉽게 연동 가능

3

인스턴스 중지

  • 인스턴스를 중지한다면, 인스턴스 내에 실행되고 있던 프로그램이 종료된다.
    • 인스턴스의 httpd의 실행이 날라감
    • 인스턴스 내부에 있는 내용들은 유지됨
      • sudo systemctl start httpd 를 재실행할 때마다 해주어야 함
      • 이를 해결하기 위해 sudo systemctl enable httpd 를 사용
  • sudo systemctl enable httpd : 컴퓨터가 재시작 될 때, httpd를 재시작

Auto Scaling(오토 스케일링)

  • 애플리케이션의 트래픽이 증가하면 자동으로 EC2 인스턴스를 추가(Scale Out) 하고,
    • 트래픽이 줄면 자동으로 인스턴스를 제거(Scale In) 하는 기능
      • 즉, “필요할 때만 자원을 쓰고, 쓸데없이 비용이 나가지 않게 하는 자동화된 시스템”


구성 요소설명
Launch Template / Launch ConfigurationEC2 인스턴스의 템플릿. 어떤 AMI, 인스턴스 타입, 보안 그룹, 키 페어 등을 사용할지 정의
Auto Scaling Group (ASG)실제로 스케일링이 일어나는 단위 그룹. 최소/최대/기본 인스턴스 수를 설정
Scaling Policy (스케일링 정책)언제, 어떤 조건에서 인스턴스를 늘리거나 줄일지를 정의 (예: CPU 사용률 70% 이상일 때 2대 추가)
CloudWatch Alarm스케일링 조건을 감시하는 모니터링 시스템 (CPU, 메모리, 네트워크 트래픽 등 지표 기반)

동작 원리

    1. ASG 생성
    • 먼저 Auto Scaling Group을 만들고, 사용할 Launch Template(인스턴스 설정)을 연결
    1. CloudWatch와 연동
    • 예를 들어 “CPU 사용률이 70%를 초과하면 스케일 아웃” 이라는 정책을 추가
    1. 트래픽 증가
    • 실제 서비스 트래픽이 늘어나면 CloudWatch가 CPU 사용률을 감지
    1. 스케일 아웃 (확장)
    • 설정된 조건에 따라 새로운 EC2 인스턴스를 자동으로 생성
    1. 트래픽 감소
    • CPU 사용률이 일정 시간 30% 이하로 떨어지면 CloudWatch가 알람을 발생
    1. 스케일 인 (축소)
    • 불필요한 인스턴스를 자동으로 종료하여 비용을 절감
유형설명예시
Dynamic Scaling (동적 스케일링)CloudWatch 지표를 기반으로 자동 조정CPU 80% 초과 → 인스턴스 2대 추가
Scheduled Scaling (예약 스케일링)특정 시간에 맞춰 자동 조정평일 오전 9시에 5대, 오후 6시에 2대로 줄이기
Predictive Scaling (예측 스케일링)과거 트래픽 패턴을 분석해 미리 스케일링매일 점심시간 트래픽 급증 예상 시 사전 확장

Auto Scaling 장점

  • 비용 효율성 – 필요한 시점에만 인스턴스를 실행해 비용 절감
  • 가용성 향상 – 인스턴스 장애 시 자동으로 새 인스턴스 생성
  • 확장성 – 갑작스러운 트래픽 급증에도 자동 대응
  • 운영 자동화 – 인력 개입 없이 시스템이 자체 조정

4

auto_scailing

대상 추적 크기 조정 정책(Target Tracking Scaling Policy)

  • 가장 많이 쓰이는 자동 확장 방식으로,
  • 사람이 일일이 규칙을 짜지 않아도 지표(Target Metric) 를 기준으로 인스턴스 개수를 자동으로 조절
    • ex. CPU 사용률을 50%로 유지하겠다고 설정하면,
      • 사용률이 80%로 오르면 인스턴스를 추가하고, 30%로 떨어지면 인스턴스를 줄이는 식

로드 밸런서(Load Balancer)

  • 사용자 요청(트래픽)을 여러 서버(EC2 인스턴스)에 균등하게 분배하는 장치
  • 로드 밸런서 서비스: ELB (Elastic Load Balancing)
    • AWS에서 제공하는 관리형 로드 밸런서 서비스로,
    • 부하 분산, 헬스 체크, 보안, SSL/TLS, Auto Scaling 연동을 자동으로 처리

ELB의 주요 종류

종류이름주요 특징
🌐 ALB (Application Load Balancer)HTTP / HTTPS7계층 (애플리케이션 레벨)에서 작동
URL·경로·헤더 기반 라우팅 가능
FastAPI, Flask 등 웹 API에 가장 자주 사용
⚙️ NLB (Network Load Balancer)TCP / UDP4계층 (전송 레벨)에서 작동
고성능, 저지연 트래픽 처리용
실시간 게임, 금융, IoT 등에 적합
🧩 CLB (Classic Load Balancer)HTTP / TCP구버전 로드 밸런서 (현재는 거의 비추천)
🧭 GWLB (Gateway Load Balancer)VPC 네트워크 트래픽 분산용보안/방화벽 장비 앞단에 배치하는 특수용도

핵심기능

기능설명
트래픽 분산여러 EC2 인스턴스에 자동 부하 분산
Health Check인스턴스 상태를 주기적으로 확인, 비정상 인스턴스 제외
SSL/TLS 암호화HTTPS 통신용 인증서 적용 (ACM과 통합 가능)
라우팅 규칙URL 경로(/api, /admin 등), 호스트 기반(www.example.com) 분기
Auto Scaling 연동인스턴스가 늘어나거나 줄어도 자동으로 Target Group 업데이트
Sticky Session특정 사용자를 동일 인스턴스에 고정 가능 (세션 유지용)

5

RDS (관계형 데이터베이스 서비스)

  • AWS가 제공하는 완전관리형(Managed) 관계형 데이터베이스 서비스
    • 사용자가 직접 DB 서버를 설치하고 운영하는 대신,
    • AWS가 알아서 백업, 패치, 모니터링, 장애 복구 등을 처리해주는 서비스

특징

항목설명
관리형 서비스DB 설치, 설정, 백업, 패치, 복구 등을 AWS가 자동으로 수행
확장성CPU, 메모리, 스토리지 크기를 즉시 조정 가능 (Auto Scaling도 가능)
고가용성(HA)Multi-AZ(다중 가용 영역) 배포로 장애 시 자동으로 대기 인스턴스로 전환
보안VPC, 서브넷, 보안그룹, 암호화(KMS), IAM 등과 통합
모니터링CloudWatch를 통한 성능, 연결 수, CPU, IOPS 모니터링 지원
자동 백업매일 자동 백업 + 시점 복원(Point-in-Time Recovery) 가능

지원되는 데이터베이스 엔진

엔진설명
MySQL가장 널리 쓰이는 오픈소스 DB
PostgreSQL오픈소스 고급 DB, JSON/BLOB 등 지원
MariaDBMySQL 기반, 경량형
Oracle상용 DB, 라이선스 필요
Microsoft SQL ServerMS 환경용, .NET 연동 쉬움
Amazon AuroraAWS가 직접 개발한 MySQL/PostgreSQL 호환 DB, 성능 최대 5배↑
profile
안녕하세요.

0개의 댓글