콘텐츠로 이동

AWS 기본 가이드 🌥️


📖 목차

  1. AWS란 무엇인가요?
  2. AWS 글로벌 인프라
  3. 주요 AWS 서비스
  4. 보안
  5. 요금

AWS란 무엇인가요? 🤔

AWS(Amazon Web Services)는 아마존에서 만든 클라우드 컴퓨팅 서비스입니다.

🏠 쉬운 비유로 설명하면?

  • 전통적인 방식: 집에서 컴퓨터를 직접 사서 설치하는 것
  • AWS 방식: 필요할 때마다 PC방에 가서 컴퓨터를 빌려 쓰는 것

💡 AWS의 장점

graph TD
    A[AWS 장점] --> B[💰 저렴한 비용]
    A --> C[📈 필요한 만큼 확장]
    A --> D[🔒 높은 보안]
    A --> E[⚡ 빠른 속도]

    B --> B1[사용한 만큼만 지불]
    C --> C1[트래픽 증가시 자동 확장]
    D --> D1[24시간 보안 모니터링]
    E --> E1[전 세계 어디서든 빠른 접속]

AWS 글로벌 인프라 🌍

AWS는 전 세계에 컴퓨터 센터를 두고 서비스를 제공합니다.

🏢 인프라 구성

graph TB
    subgraph "🌍 AWS 글로벌 인프라"
        subgraph "📍 리전 (Region)"
            subgraph "🏢 가용영역 A"
                DC1[데이터센터 1]
                DC2[데이터센터 2]
            end
            subgraph "🏢 가용영역 B"
                DC3[데이터센터 3]
                DC4[데이터센터 4]
            end
            subgraph "🏢 가용영역 C"
                DC5[데이터센터 5]
                DC6[데이터센터 6]
            end
        end

        subgraph "⚡ 엣지 로케이션"
            Edge1[CDN 서버 1]
            Edge2[CDN 서버 2]
            Edge3[CDN 서버 3]
        end
    end

📍 1. 리전 (Region) - 현재 37개

쉬운 설명: 전 세계 각 나라/지역에 있는 큰 컴퓨터 단지

주요 리전 예시

리전 이름 코드 위치 🌟 현업에서 많이 쓰는 이유
서울 리전 ap-northeast-2 🇰🇷 대한민국 한국 사용자에게 가장 빠름
도쿄 리전 ap-northeast-1 🇯🇵 일본 아시아 서비스에 안정적
오하이오 리전 us-east-2 🇺🇸 미국 글로벌 서비스에 필수

🎯 리전 선택 기준

flowchart TD
    A[리전 선택하기] --> B{사용자가 어디에 있나요?}
    B -->|한국| C[서울 리전 선택]
    B -->|일본| D[도쿄 리전 선택]
    B -->|미국| E[오하이오/버지니아 리전 선택]

    C --> F[✅ 빠른 속도 보장]
    D --> F
    E --> F

🏢 2. 가용영역 (AZ) - 현재 117개

쉬운 설명: 한 지역 안에 있는 여러 개의 독립적인 컴퓨터 건물

graph LR
    subgraph "서울 리전"
        AZ1[가용영역 A<br/>강남구]
        AZ2[가용영역 B<br/>서초구] 
        AZ3[가용영역 C<br/>송파구]
    end

    AZ1 -.전용선.-> AZ2
    AZ2 -.전용선.-> AZ3
    AZ3 -.전용선.-> AZ1

    AZ1 --> Safe1[🔒 독립 전력]
    AZ2 --> Safe2[🔒 독립 네트워크]
    AZ3 --> Safe3[🔒 독립 냉각시설]

💪 가용영역의 장점

  • 장애 방지: 한 건물에 문제가 생겨도 다른 건물은 정상 작동
  • 현업 활용: 중요한 서비스는 반드시 2개 이상 AZ에 배치

⚡ 3. 엣지 로케이션 - 현재 700개 이상

쉬운 설명: 사용자 근처에 있는 작은 캐시 서버 (편의점 같은 개념)

graph TD
    A[😊 사용자] --> B{가까운 엣지 로케이션}
    B --> C[📦 캐시된 데이터 있음?]
    C -->|YES| D[⚡ 즉시 전달]
    C -->|NO| E[🏢 원본 서버에서 가져오기]
    E --> F[📦 엣지에 저장]
    F --> D

주요 AWS 서비스 🛠️

💻 1. 컴퓨팅 서비스

graph TD
    A[컴퓨팅 서비스] --> B[EC2<br/>가상컴퓨터]
    A --> C[Lambda<br/>서버리스 함수]
    A --> D[ECS/EKS<br/>컨테이너]
    A --> E[Elastic Beanstalk<br/>웹앱 배포]

    B --> B1[🌟 현업 활용: 80%]
    C --> C1[🌟 현업 활용: 60%]
    D --> D1[🌟 현업 활용: 40%]
    E --> E1[🌟 현업 활용: 30%]

🖥️ Amazon EC2 (Elastic Compute Cloud)

쉬운 설명: 클라우드에서 빌려 쓰는 가상 컴퓨터

현업에서 이렇게 사용해요:

# EC2 사용 예시 (개념 설명)
# 1. 인스턴스 생성
instance = create_ec2_instance(
    type="t3.medium",        # 컴퓨터 사양 (CPU 2개, 메모리 4GB)
    os="Ubuntu 22.04",       # 운영체제 선택
    storage="20GB",          # 하드디스크 크기
    region="ap-northeast-2"  # 서울 리전에 생성
)

# 2. 웹서버 설치 및 실행
install_web_server(instance)
start_application(instance)

💰 EC2 요금 방식:

graph LR
    A[EC2 구매 방식] --> B[온디맨드<br/>필요할 때 사용]
    A --> C[예약인스턴스<br/>1-3년 약정]
    A --> D[스팟인스턴스<br/>경매 방식]

    B --> B1[💵 비쌈<br/>언제든 사용 가능]
    C --> C1[💰 72% 할인<br/>장기 사용시]
    D --> D1[💸 90% 할인<br/>갑자기 꺼질 수 있음]

⚖️ Elastic Load Balancing (ELB)

쉬운 설명: 여러 서버에 일을 골고루 나눠주는 교통정리원

graph TD
    A[👥 사용자들] --> B[⚖️ 로드밸런서]
    B --> C[🖥️ 서버 1]
    B --> D[🖥️ 서버 2]
    B --> E[🖥️ 서버 3]

    C --> F[처리 완료]
    D --> F
    E --> F
    F --> A

현업 활용: - 쇼핑몰: 블랙프라이데이 때 갑자기 몰린 고객들을 여러 서버로 분산 - 게임: 동시 접속자가 많을 때 서버 과부하 방지

💾 2. 스토리지 서비스

graph TD
    A[스토리지 서비스] --> B[S3<br/>파일 저장소]
    A --> C[EBS<br/>컴퓨터 하드디스크]
    A --> D[EFS<br/>공유 폴더]
    A --> E[Glacier<br/>장기보관 창고]

    B --> B1[🌟 현업 활용: 95%]
    C --> C1[🌟 현업 활용: 90%]
    D --> D1[🌟 현업 활용: 30%]
    E --> E1[🌟 현업 활용: 50%]

🗂️ Amazon S3 (Simple Storage Service)

쉬운 설명: 인터넷상의 무제한 파일 보관함

현업에서 이렇게 사용해요:

# S3 사용 예시
# 1. 버킷(폴더) 생성
bucket = create_s3_bucket("my-company-files")

# 2. 파일 업로드
upload_file(
    bucket="my-company-files",
    file="product_image.jpg",
    path="images/products/"
)

# 3. 웹에서 접근 가능한 URL 생성
public_url = get_public_url("images/products/product_image.jpg")
# 결과: https://my-company-files.s3.ap-northeast-2.amazonaws.com/images/products/product_image.jpg

실제 활용 사례: - YouTube: 동영상 파일 저장 - Instagram: 사진 저장 - 넷플릭스: 영화 파일 저장

🗄️ 3. 데이터베이스 서비스

graph TD
    A[데이터베이스 서비스] --> B[RDS<br/>관계형 DB]
    A --> C[DynamoDB<br/>NoSQL DB]
    A --> D[Aurora<br/>고성능 DB]

    B --> B1[🌟 현업 활용: 85%<br/>MySQL, PostgreSQL]
    C --> C1[🌟 현업 활용: 70%<br/>빠른 속도]
    D --> D1[🌟 현업 활용: 40%<br/>대용량 처리]

🏪 Amazon RDS vs 직접 설치 비교

graph TB
    subgraph "🏠 직접 설치 (힘든 방법)"
        A1[DB 소프트웨어 설치] --> A2[보안 설정]
        A2 --> A3[백업 설정]
        A3 --> A4[모니터링 설정]
        A4 --> A5[24시간 관리 😵]
    end

    subgraph "☁️ RDS (쉬운 방법)"
        B1[클릭 한번으로 생성] --> B2[자동 보안 적용]
        B2 --> B3[자동 백업]
        B3 --> B4[자동 모니터링]
        B4 --> B5[AWS가 관리 😎]
    end

현업에서 RDS를 선택하는 이유: - 시간 절약: DB 관리 시간을 개발에 투자 - 안정성: AWS 전문가들이 24시간 관리 - 비용 효율: 관리 인력 비용 절약

🌐 4. 네트워킹 서비스

🏠 Amazon VPC (Virtual Private Cloud)

쉬운 설명: 클라우드 안에서 만드는 나만의 독립적인 네트워크 공간

graph TB
    subgraph "🏢 VPC (우리 회사 전용 네트워크)"
        subgraph "🌐 Public Subnet (인터넷 연결됨)"
            Web[웹 서버]
            LB[로드밸런서]
        end

        subgraph "🔒 Private Subnet (인터넷 차단됨)"
            DB[데이터베이스]
            APP[애플리케이션 서버]
        end

        IGW[인터넷 게이트웨이]
        NAT[NAT 게이트웨이]
    end

    Internet[🌍 인터넷] --> IGW
    IGW --> Web
    IGW --> LB
    Web --> APP
    LB --> APP
    APP --> DB
    APP --> NAT
    NAT --> IGW

현업 보안 구성:

# VPC 보안 설정 예시 (개념)
vpc_config = {
    "public_subnet": {
        "services": ["웹서버", "로드밸런서"],
        "internet_access": True,  # 인터넷에서 접근 가능
        "security": "기본 보안"
    },
    "private_subnet": {
        "services": ["데이터베이스", "백엔드 서버"],
        "internet_access": False,  # 인터넷에서 직접 접근 불가
        "security": "강화된 보안"
    }
}


보안 🔒

🛡️ AWS 공동 책임 모델

graph TD
    subgraph "☁️ AWS 책임 (클라우드의 보안)"
        A1[데이터센터 물리 보안]
        A2[하드웨어 관리]
        A3[네트워크 인프라 보안]
        A4[가상화 계층 보안]
    end

    subgraph "👤 고객 책임 (클라우드에서의 보안)"
        B1[운영체제 업데이트]
        B2[애플리케이션 보안]
        B3[사용자 계정 관리]
        B4[데이터 암호화]
    end

🔐 AWS IAM (Identity and Access Management)

쉬운 설명: 회사의 출입카드 및 권한 관리 시스템

graph TD
    A[👤 사용자] --> B[🏷️ 그룹]
    B --> C[📋 정책]
    C --> D[🔑 권한]

    A1[개발자 김씨] --> B1[개발팀 그룹]
    A2[개발자 이씨] --> B1
    B1 --> C1[EC2 읽기/쓰기 정책]
    C1 --> D1[EC2 인스턴스 생성/삭제 가능]

    A3[인턴 박씨] --> B2[인턴 그룹]  
    B2 --> C2[S3 읽기 전용 정책]
    C2 --> D2[파일 보기만 가능, 삭제 불가]

현업 보안 원칙:

# IAM 최소 권한 원칙 예시
user_permissions = {
    "신입_개발자": [
        "s3:GetObject",      # 파일 읽기만 가능
        "ec2:DescribeInstances"  # 서버 목록 보기만 가능
    ],
    "시니어_개발자": [
        "s3:*",              # S3 모든 권한
        "ec2:*",             # EC2 모든 권한  
        "rds:CreateDatabase" # DB 생성 권한
    ],
    "인턴": [
        "s3:GetObject",      # 파일 읽기만
        "cloudwatch:GetMetrics"  # 모니터링 보기만
    ]
}


요금 💰

💳 AWS 요금 원리

쉬운 설명: 전기세처럼 사용한 만큼만 내는 시스템

graph LR
    A[AWS 요금 특징] --> B[📊 사용량 기반]
    A --> C[⏰ 시간당 과금]
    A --> D[📈 많이 쓸수록 할인]
    A --> E[🎯 예약시 추가 할인]

    B --> B1[CPU 사용시간]
    B --> B2[저장공간 사용량]
    B --> B3[데이터 전송량]

🖥️ EC2 요금 방식 비교

graph TD
    A[EC2 구매 방식] --> B[온디맨드<br/>On-Demand]
    A --> C[예약인스턴스<br/>Reserved Instance]
    A --> D[스팟인스턴스<br/>Spot Instance]

    B --> B1["⏰ 시간당 과금<br/>💰 정가<br/>🎯 테스트/개발용"]
    C --> C1["📅 1-3년 약정<br/>💰 최대 72% 할인<br/>🎯 운영 서비스용"]
    D --> D1["🎲 경매 방식<br/>💰 최대 90% 할인<br/>🎯 배치 작업용"]

💡 현업 비용 최적화 팁

# 현업에서 사용하는 비용 절약 전략
cost_optimization = {
    "개발환경": {
        "방식": "스팟 인스턴스",
        "절약": "90%",
        "이유": "갑자기 꺼져도 괜찮음"
    },
    "운영환경": {
        "방식": "예약 인스턴스", 
        "절약": "72%",
        "이유": "안정적으로 24시간 실행"
    },
    "임시작업": {
        "방식": "온디맨드",
        "절약": "0%",
        "이유": "잠깐만 사용하고 바로 삭제"
    }
}

🌟 현업에서 가장 많이 사용하는 서비스 TOP 10

📊 사용률 기준 순위

graph LR
    A[1위 S3<br/>95%] --> B[2위 EC2<br/>90%]
    B --> C[3위 RDS<br/>85%]
    C --> D[4위 VPC<br/>80%]
    D --> E[5위 IAM<br/>100%]

    F[6위 CloudWatch<br/>75%] --> G[7위 Lambda<br/>60%]
    G --> H[8위 Route53<br/>55%]
    H --> I[9위 ELB<br/>50%]
    I --> J[10위 CloudFront<br/>45%]

🏗️ 전형적인 현업 아키텍처

graph TB
    User[👥 사용자] --> CF[CloudFront CDN]
    CF --> LB[로드밸런서]

    subgraph VPC[🏠 VPC]
        subgraph Public[🌐 Public Subnet]
            LB --> Web1[웹서버 1]
            LB --> Web2[웹서버 2]
        end

        subgraph Private[🔒 Private Subnet]  
            Web1 --> App1[앱서버 1]
            Web2 --> App2[앱서버 2]
            App1 --> DB[(RDS 데이터베이스)]
            App2 --> DB
        end
    end

    App1 --> S3[S3 파일저장소]
    App2 --> S3

    CW[CloudWatch 모니터링] -.-> Web1
    CW -.-> App1
    CW -.-> DB

💼 업종별 주요 사용 서비스

업종 주요 서비스 사용 목적
🛒 이커머스 S3 + CloudFront + RDS + EC2 상품이미지 저장 + 빠른 로딩 + 주문관리 + 웹서버
🎮 게임 EC2 + DynamoDB + ElastiCache 게임서버 + 실시간 점수 + 캐시
🏦 금융 RDS + Lambda + KMS + CloudTrail 거래데이터 + 자동화 + 암호화 + 감사로그
📱 모바일앱 API Gateway + Lambda + DynamoDB API 관리 + 서버리스 + 사용자데이터

🚀 AWS 시작하기 로드맵

🎯 단계별 학습 순서

graph TD
    A[1단계: 기본 개념] --> B[2단계: 핵심 서비스]
    B --> C[3단계: 실습 프로젝트]
    C --> D[4단계: 심화 학습]

    A1[클라우드 이해<br/>리전/AZ 개념] --> A
    B1[EC2, S3, RDS<br/>VPC, IAM] --> B  
    C1[간단한 웹사이트 배포<br/>데이터베이스 연동] --> C
    D1[보안 강화<br/>모니터링 구축<br/>비용 최적화] --> D

📚 추천 학습 자료

  1. 공식 문서: AWS 한국어 문서
  2. 실습 환경: AWS Free Tier (12개월 무료)
  3. 요금 계산: AWS 요금 계산기

❓ 자주 묻는 질문 (FAQ)

Q: AWS는 얼마나 비싸나요?

A: 사용량에 따라 다르지만, Free Tier로 1년간 무료 사용 가능합니다. - 개인 프로젝트: 월 10-50달러 - 중소기업: 월 100-1000달러
- 대기업: 월 10,000달러 이상

Q: 어떤 서비스부터 배워야 하나요?

A: 이 순서로 학습하세요: 1. EC2 (가상 컴퓨터) - 가장 기본 2. S3 (파일 저장) - 가장 많이 사용
3. RDS (데이터베이스) - 데이터 저장 4. VPC (네트워크) - 보안 설정

Q: 실수로 큰 요금이 나올까 봐 걱정돼요

A: 걱정하지 마세요! 이렇게 예방하세요: - 예산 알림 설정 (10달러 초과시 이메일 알림) - Free Tier 모니터링 활성화 - 불필요한 리소스 즉시 삭제


🎉 마무리

AWS는 처음에는 어려워 보이지만, 하나씩 차근차근 배우면 누구나 사용할 수 있습니다.

기억할 점: - 🎯 필요한 서비스만 먼저 배우기 - 💰 Free Tier 적극 활용하기
- 🛡️ 보안 설정 잊지 않기 - 📊 비용 모니터링 습관화하기

현업에서 가장 중요한 것은 "안정성"과 "보안"입니다. 화려한 기능보다는 기본을 탄탄히 하는 것이 성공의 열쇠입니다! 🔑