ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [4월 3주차-4/14]AWS 실무 핵심 개념 총정리 💡 | DynamoDB, Lambda, SDK, CLI 완전 이해
    Why Not SW CAMP 5기/수업 기록 2025. 4. 14. 15:05

    🧠 1. NoSQL의 개념과 특징

    ✅ NoSQL이란?

    • Not Only SQL: 전통적인 관계형 데이터베이스(RDBMS)가 아닌 방식
    • 주로 대용량, 유연성, 확장성에 초점을 맞춘 데이터베이스

    ✅ 주요 특징

    특징 설명

    스키마 없음 미리 컬럼을 정의하지 않아도 데이터 삽입 가능
    수평 확장성 서버를 가로로 늘려도 잘 작동함 (scale-out)
    다양한 데이터 모델 키-값, 문서형, 그래프형, 컬럼형 등
    높은 성능 빠른 읽기/쓰기 처리에 강함

    🧰 2. DynamoDB란?

    AWS에서 제공하는 NoSQL 기반의 완전관리형 키-값/문서형 데이터베이스

    ✅ DynamoDB의 역할

    • 실시간 데이터 저장소 (로그인 정보, 게임 기록, IoT 센서 등)
    • 고속 읽기/쓰기 처리 + 자동 확장 + 서버 관리 불필요

    📥 3. DynamoDB의 Read 방식

    방식 설명 요금

    Strongly Consistent Read 최신 데이터 보장 더 많은 처리량 필요
    Eventually Consistent Read 약간의 지연 뒤 데이터 일치 저렴하고 빠름 (기본값)

    ⚙️ 4. DynamoDB의 기본 구성 요소

    요소 설명

    테이블(Table) 데이터를 담는 공간. item의 집합
    아이템(Item) 테이블 내 하나의 데이터 (RDB의 행). attribute의 집합
    속성(Attribute) 아이템의 속성들 (RDB의 컬럼 개념) key-value 방식의 데이터

    📋 5. DynamoDB의 데이터 타입

    타입 설명

    스칼라 타입 문자열(String), 숫자(Number), 불리언(Boolean), NULL 등
    문서 타입 리스트(List), 맵(Map)
    집합 타입 문자열 집합(String Set), 숫자 집합(Number Set), 바이너리 집합(Binary Set)

    🧩 6. 파티션과 키 개념

    파티션은 데이터를 저장하는 곳

    ✅ 파티션 키 (Partition Key)

    • 데이터를 어떤 파티션(서버)에 분산 저장할지 결정하는 키
    • 값이 같으면 같은 파티션에 저장됨

    ✅ 정렬 키 (Sort Key)

    • 파티션 키가 같은 데이터들 사이에서 정렬/조회 조건으로 사용
    • 예: 유저 ID(파티션 키) + 날짜(정렬 키)로 정렬

    🗂️ 7. 보조 인덱스 (LSI vs GSI)

    인덱스 유형 설명 구성 키 제약

    LSI (Local Secondary Index) 같은 파티션 키 + 다른 정렬 키 Partition Key + 다른 Sort Key 생성 후 변경 불가
    GSI (Global Secondary Index) 완전히 다른 파티션 키와 정렬 키로 조회 다른 Partition + Sort Key 나중에 생성/삭제 가능

    📌 LSI: 기존 키와 연결된 “보조 조회”

    📌 GSI: 아예 다른 조회 패턴을 위한 "새로운 인덱스"


    🔎 8. 데이터 조회 방식 (Query vs Scan)

    방식 설명 특징

    Query 특정 키 기반으로 조회 빠르고 효율적 (필터 조건 가능)
    Scan 테이블 전체를 스캔 느리고 비용 큼 (필요할 땐 제한적으로 사용)

    ☁️ 서버리스(Serverless)란?

    서버를 직접 구축하거나 관리하지 않아도 되는 클라우드 실행 방식

    ✅ 특징

    항목 설명

    서버 없음? ❌ 서버가 없다는 뜻이 아님! → ✅ 서버 관리가 필요 없는 구조
    완전 관리형 인프라/OS/보안패치 등 AWS가 자동 처리
    이벤트 기반 실행 특정 이벤트 발생 시 함수 실행 (트리거 기반)
    과금 사용한 만큼만 과금 (실행 시간 + 리소스 기준)
    확장성 자동으로 수천 개 인스턴스로 확장 가능

    🧠 예시

    • "S3에 파일 업로드" → Lambda 실행 → 썸네일 자동 생성
    • "API 호출" → Lambda 실행 → DB 저장
    • "Cron 스케줄" → Lambda 실행 → 이메일 발송

    🌀 Lambda란?

    AWS에서 제공하는 대표적인 서버리스 컴퓨팅 서비스

    ✅ Lambda의 역할

    • 코드 블록(함수)을 클라우드에서 실행해주는 서비스
    • 트리거 기반으로 자동 실행
    • 다양한 언어(Python, Node.js, Java 등) 지원

    ✅ Lambda의 주요 특징

    항목 설명

    이벤트 기반 실행 API Gateway, S3, DynamoDB, CloudWatch 등과 연동
    단위 과금 함수 실행 시간 + 사용한 메모리 기준
    무한 확장성 호출 수에 따라 자동 확장
    코드만 배포 서버 구축 필요 없음 (index.handler 함수만 있으면 됨)
    짧은 실행 시간 기본 최대 실행 시간: 15분

    📦 Lambda의 활용 예시

    • 웹 백엔드 API (API Gateway + Lambda)
    • 이미지 리사이징 (S3 트리거)
    • DynamoDB 트리거 처리
    • Slack/메일 자동 알림
    • 정기적인 데이터 백업(Cron 스케줄링)

    ✅ Lambda vs EC2 간단 비교

    항목 EC2 Lambda

    서버 관리 직접 필요 ❌ 필요 없음
    비용 항상 과금 사용 시에만 과금
    확장성 수동 or Auto Scaling 설정 필요 자동 확장
    실행 시간 무제한 기본 최대 15분
    배포 방식 서버에 직접 배포 함수 코드만 업로드

    📦 SDK (Software Development Kit)

    ✅ SDK란?

    소프트웨어를 만들기 위한 도구 모음

    개발자가 API를 쉽게 사용할 수 있도록 도와주는 코드 라이브러리 + 도구 세트

    ✅ AWS SDK란?

    AWS 서비스를 내 애플리케이션 코드에서 직접 사용할 수 있도록 도와주는 도구

    📚 지원 언어별 SDK 예시

    언어 SDK 이름

    JavaScript/Node.js AWS SDK for JavaScript
    Python Boto3 ← 가장 많이 사용됨
    Java AWS SDK for Java
    Go AWS SDK for Go
    C# AWS SDK for .NET
    PHP AWS SDK for PHP
    Ruby AWS SDK for Ruby

    ✅ SDK를 쓰면 좋은 이유

    • 코드 한 줄로 S3에 업로드, EC2 생성 등 가능
    • 인증, 서명, 요청 형식 등을 자동 처리
    • REST API 직접 호출보다 훨씬 간편함

    💻 CLI (Command Line Interface)

    ✅ CLI란?

    명령줄에서 AWS 서비스를 직접 제어할 수 있게 해주는 도구

    ✅ AWS CLI의 특징

    항목 설명

    설치 로컬 PC에 설치 후 aws 명령어 사용
    로그인 방식 aws configure로 Access Key, Secret Key 설정
    스크립트화 반복 작업을 쉘 스크립트로 자동화 가능
    강력한 툴 수천 개의 AWS 리소스를 CLI로 관리 가능

    ✅ 자주 쓰는 AWS CLI 명령어 예시

    목적 명령어 예시

    EC2 목록 조회 aws ec2 describe-instances
    S3 업로드 aws s3 cp hello.txt s3://mybucket/
    Lambda 함수 배포 aws lambda update-function-code --function-name myFunc --zip-file fileb://code.zip

    🔁 SDK vs CLI 비교

    항목 SDK CLI

    방식 프로그래밍 언어로 직접 작성 터미널에서 명령어로 실행
    사용 위치 앱, 백엔드 코드 내부 터미널, 스크립트
    자동화 코드 로직에 통합 가능 배치, 운영 자동화에 강함
    난이도 약간 높음 (코딩 필요) 쉬움 (명령어만 익히면 됨)

    💡 결론

    • SDK: 애플리케이션 안에서 AWS를 조작하고 싶을 때 (ex. S3 업로드 기능 포함된 웹앱)
    • CLI: 빠르게 테스트하거나 배포 자동화 스크립트를 만들고 싶을 때

Designed by Tistory.