소프트웨어 기술(스타트업 위주)

aws

aws 정리 입니다. 추가적인 자세한 설명 및 툴 이용 방법은 각 목차별로 공식문서 페이지로 하이퍼링크 참조하겠습니다.


AWS 개요

1. 소개

1.1 클라우드 컴퓨팅이란?

클라우드 컴퓨팅은 인터넷을 통해 IT 리소스를 온디맨드로 제공하는 서비스입니다. 기업과 개인은 서버, 스토리지, 데이터베이스, 네트워킹, 소프트웨어 등을 직접 구축하지 않고 필요에 따라 사용할 수 있습니다.

1.2 IaaS vs PaaS vs SaaS

  • IaaS (Infrastructure as a Service): 가상화된 컴퓨팅 리소스를 제공하는 서비스 (예: AWS EC2, S3)
  • PaaS (Platform as a Service): 개발자가 애플리케이션을 개발 및 배포할 수 있도록 플랫폼을 제공 (예: AWS Elastic Beanstalk)
  • SaaS (Software as a Service): 사용자가 인터넷을 통해 소프트웨어를 사용할 수 있도록 제공 (예: Gmail, Dropbox)

1.3 퍼블릭 vs 프라이빗 vs 하이브리드 클라우드

  • 퍼블릭 클라우드: 여러 고객이 공유하는 클라우드 환경 (AWS, Azure, GCP)
  • 프라이빗 클라우드: 단일 조직을 위한 독립적인 클라우드 환경
  • 하이브리드 클라우드: 퍼블릭과 프라이빗 클라우드를 결합한 환경

1.4 AWS 글로벌 인프라

AWS는 전 세계 여러 리전(Region)과 가용 영역(Availability Zone, AZ)으로 구성된 글로벌 인프라를 제공합니다.

1.5 공유 책임 모델

AWS와 고객 간의 보안 및 운영 책임을 나누는 모델로, AWS는 인프라 보안을 담당하고, 고객은 애플리케이션 및 데이터 보호를 담당합니다.

1.6 AWS Well-Architected Framework

AWS에서 모범 사례를 기반으로 안정적인 아키텍처를 구축하기 위한 6가지 원칙:

  1. 운영 우수성
  2. 보안
  3. 안정성
  4. 성능 효율성
  5. 비용 최적화
  6. 지속 가능성

2. EC2

2.1 인스턴스 유형

EC2 인스턴스는 용도에 따라 범용, 컴퓨팅 최적화, 메모리 최적화, 스토리지 최적화 등으로 구분됩니다.

2.2 CPU 크레딧

T 시리즈 버스트 가능한 인스턴스에서 사용되며, 일정량의 CPU 크레딧을 사용하여 성능을 일시적으로 높일 수 있습니다.

2.3 스토리지 / 볼륨

EBS(Elastic Block Store), 인스턴스 스토어, EFS(Elastic File System) 등 다양한 스토리지 옵션을 제공합니다.

2.4 키페어

SSH를 사용하여 인스턴스에 안전하게 접속할 수 있도록 하는 공개 키/개인 키 페어입니다.

2.5 탄력적 IP (Elastic IP)

고정 퍼블릭 IP 주소를 제공하여 인스턴스의 변경에도 동일한 IP를 유지할 수 있습니다.

2.6 사용자 데이터 스크립트

EC2 인스턴스 시작 시 실행되는 스크립트로, 초기 설정 및 소프트웨어 설치 등에 사용됩니다.

2.7 구매 옵션

  • 온디맨드
  • 예약 인스턴스
  • 스팟 인스턴스
  • 세이빙 플랜

3. VPC (Virtual Private Cloud)

3.1 CIDR 블록

IP 주소 범위를 정의하는 네트워크 블록입니다.

3.2 서브넷

  • 퍼블릭 서브넷: 인터넷과 직접 연결될 수 있는 서브넷
  • 프라이빗 서브넷: 인터넷과 직접 연결되지 않으며, NAT를 통해 외부 통신 가능

3.3 라우트 테이블

네트워크 트래픽이 흐르는 경로를 정의하는 테이블입니다.

3.4 보안 그룹

인바운드 및 아웃바운드 트래픽을 제어하는 방화벽 역할을 합니다.

3.5 인터넷 게이트웨이

VPC 내의 퍼블릭 서브넷이 인터넷과 통신할 수 있도록 하는 게이트웨이입니다.

3.6 NAT 게이트웨이

프라이빗 서브넷의 인스턴스가 인터넷에 접근할 수 있도록 하는 서비스입니다.

4. IAM (Identity and Access Management)

4.1 정책

  • Identity-Based Policies: 사용자, 그룹, 역할에 적용되는 정책
  • Resource-Based Policies: 특정 리소스에 적용되는 정책

4.2 사용자 및 그룹

IAM 사용자는 AWS 리소스를 사용할 수 있는 권한을 가지며, 그룹으로 관리할 수 있습니다.

4.3 역할

  • 인스턴스 프로파일: EC2 인스턴스에서 IAM 역할을 사용할 수 있도록 연결하는 프로파일
  • 역할 가정 (Assuming Roles): 사용자가 다른 AWS 계정의 역할을 임시로 가질 수 있도록 하는 기능

5. Auto-Scaling

5.1 AMI (Amazon Machine Image)

EC2 인스턴스를 생성할 때 사용할 수 있는 운영체제 및 애플리케이션 설정이 포함된 이미지입니다.

5.2 런치 템플릿

인스턴스 시작 시 사용할 구성 정보를 포함하는 템플릿입니다.

5.3 오토스케일링 그룹 (ASG)

자동으로 인스턴스를 추가 또는 제거하는 그룹입니다.

5.4 스케일링 정책

CPU 사용량 등의 메트릭을 기반으로 자동 확장 설정을 조정할 수 있는 정책입니다.

5.5 Elastic Load Balancer (ELB)

트래픽을 여러 인스턴스에 분산하는 서비스입니다.

6. S3 (Simple Storage Service)

6.1 버킷 및 객체

S3는 데이터를 저장하는 컨테이너인 버킷과 개별 파일인 객체로 구성됩니다.

6.2 버킷/객체 수명 주기

객체의 자동 이동 및 삭제 정책을 설정할 수 있습니다.

6.3 스토리지 유형

  • 표준(Standard): 자주 액세스하는 데이터를 위한 기본 스토리지
  • S3-IA (Infrequent Access): 드물게 접근하는 데이터를 위한 저비용 스토리지
  • Glacier: 장기 보관용 아카이빙 스토리지

7. Amazon SES (Simple Email Service)

7.1 Sandbox / 발송 제한

  • SES는 처음 사용 시 샌드박스 모드에서 작동하며, 발송 제한이 적용됨.
  • 샌드박스 모드에서는 검증된 이메일 주소로만 발송 가능.
  • AWS Support를 통해 프로덕션으로 이동 가능.

7.2 Identity Verification (신원 인증)

  • 이메일 주소 및 도메인을 검증하여 스팸 및 피싱 방지.
  • 도메인 인증 시 DKIM 및 SPF 설정 필요.

7.3 DKIM Setup (도메인키 식별 메커니즘 설정)

  • 이메일 위변조 방지를 위한 기술로, 도메인에 TXT 레코드 추가 필요.
  • SES에서 DKIM 키를 생성하여 설정 가능.

7.4 Feedback Handling (피드백 처리)

  • SES는 수신 거부(Bounce) 및 불만 신고(Complaint) 이벤트를 처리할 수 있음.
  • Amazon SNS를 활용하여 피드백 이벤트를 처리 가능.

7.5 Configuration Sets (구성 세트)

  • SES의 발송 활동을 추적하고 관리할 수 있도록 구성하는 기능.
  • 이벤트 출력을 Amazon SNS, CloudWatch, Kinesis Firehose 등과 연계 가능.

7.6 Sender Reputation (발신자 평판)

  • 높은 반송률(Bounce Rate) 및 불만 신고(Complaint Rate) 발생 시 발신자 평판이 낮아질 수 있음.
  • 평판 대시보드를 활용하여 모니터링 가능.

7.7 Dedicated IP (전용 IP)

  • 높은 볼륨의 이메일 발송을 위해 전용 IP 사용 가능.
  • SES의 전용 IP 풀을 활용하여 발신 평판 관리 가능.

8. Route 53

8.1 Hosted Zones (호스팅 영역)

8.1.1 Private (사설 호스팅 영역)

  • VPC 내에서만 접근 가능한 DNS 영역.
  • AWS 내부 서비스 간 네트워크 트래픽을 위한 DNS 관리.

8.1.2 Public (공용 호스팅 영역)

  • 인터넷에서 접근 가능한 도메인 DNS 관리.
  • 도메인 등록 및 네임서버 설정 필요.

8.2 Routing Policies (라우팅 정책)

  • 단순 라우팅(Simple Routing)
  • 가중치 기반 라우팅(Weighted Routing)
  • 지리적 라우팅(Geolocation Routing)
  • 지연 시간 기반 라우팅(Latency Routing)
  • 다중 값 응답(Multi-Value Answer)
  • 장애 조치 라우팅(Failover Routing)

8.3 Health Checks (상태 확인)

  • 특정 엔드포인트의 가용성을 모니터링하고 자동 장애 조치 가능.
  • CloudWatch와 연계 가능.

9. CloudWatch

9.1 Metrics (메트릭)

  • AWS 서비스의 성능 지표를 모니터링하는 기능.
  • EC2, RDS, Lambda 등 다양한 AWS 리소스의 메트릭 수집 가능.

9.2 Events (이벤트)

  • 특정 AWS 리소스에서 발생하는 이벤트를 감지하고 대응할 수 있음.
  • Amazon EventBridge와 연계 가능.

9.3 Logs (로그)

  • CloudWatch Logs를 통해 애플리케이션 로그, 시스템 로그 저장 가능.
  • 로그 그룹 및 스트림을 생성하여 로그 관리 가능.

10. CloudFront

10.1 Distributions (배포)

  • 전 세계 엣지 로케이션을 활용하여 콘텐츠 캐싱 및 배포.
  • 웹 사이트, API 가속화 가능.

10.2 Policies (정책)

  • 캐싱 정책(Caching Policies), 오리진 정책(Origin Policies), 접근 제어 정책(Access Policies) 설정 가능.

10.3 Invalidations (무효화)

  • 캐시된 콘텐츠를 무효화하여 최신 버전 제공.
  • 비용이 발생할 수 있음.

11. RDS (Relational Database Service)

11.1 DB Instances (데이터베이스 인스턴스)

  • 관리형 관계형 데이터베이스 서비스.
  • MySQL, PostgreSQL, SQL Server, Oracle 지원.

11.2 Storage Types (스토리지 유형)

11.2.1 General Purpose (범용 SSD)

  • 일반적인 사용 사례에 적합한 스토리지.

11.2.2 Provisioned IOPS (프로비저닝된 IOPS)

  • 높은 성능이 필요한 워크로드에 적합.

11.2.3 Magnetic (마그네틱 스토리지)

  • 이전 세대의 스토리지로, 낮은 비용의 옵션.

11.3 Backup / Restore (백업 및 복원)

  • 자동 백업 및 수동 스냅샷 지원.
  • 장애 발생 시 복구 가능.

12. DynamoDB

12.1 Tables / Items / Attributes (테이블 / 아이템 / 속성)

  • 키-값(NoSQL) 기반의 데이터 모델.

12.2 Primary Keys / Secondary Indexes (기본 키 / 보조 인덱스)

  • 기본 키: 파티션 키 및 정렬 키 지원.
  • 보조 인덱스를 활용한 쿼리 성능 최적화.

12.3 Data Modeling (데이터 모델링)

  • NoSQL 방식에 맞는 스키마 설계 필요.

12.4 Streams (스트림)

  • 테이블 변경 사항을 실시간으로 감지하고 처리 가능.

12.5 Capacity Settings (용량 설정)

  • 온디맨드(On-Demand) 및 프로비저닝된 용량 설정 가능.

12.6 Limits (제한)

  • 테이블 크기, 아이템 크기, API 요청 속도 제한 존재.

12.7 Backup / Restore (백업 및 복원)

  • 온디맨드 백업 및 자동 스냅샷 제공.

12.8 DynamoDB Local (로컬 실행)

  • 로컬 환경에서 테스트를 위해 DynamoDB 실행 가능.

13. ElastiCache

13.1 Quotas (제한 사항)

  • Redis 및 Memcached 지원.
  • 노드 크기, 연결 제한, 클러스터 제한 존재.

14. ECS (Elastic Container Service)

14.1 Clusters / ECS Container Agents (클러스터 / 컨테이너 에이전트)

  • ECS 클러스터를 활용한 컨테이너 오케스트레이션 가능.

14.2 Tasks / Services (작업 / 서비스)

  • 컨테이너 실행 단위인 태스크(Task) 및 서비스 관리.

14.3 Launch Config / Autoscaling Groups (출시 구성 / 자동 확장 그룹)

  • EC2 기반 컨테이너 배포 설정 가능.

14.4 Fargate (서버리스 컨테이너 실행)

  • EC2 인프라 관리 없이 컨테이너 실행 가능.

15. ECR (Elastic Container Registry)

  • Docker 컨테이너 이미지를 저장하는 AWS 서비스.

16. EKS (Elastic Kubernetes Service)

  • Kubernetes 클러스터를 AWS에서 관리형으로 운영 가능.

17. Lambda

17.1 Creating / Invoking Functions (함수 생성 / 호출)

  • 서버리스 컴퓨팅 실행.

17.2 Layers (레이어)

  • 공통 라이브러리 및 종속성 관리.

17.3 Custom Runtimes (커스텀 런타임)

  • 고유한 실행 환경 구성 가능.

17.4 API Gateway / Lambda@Edge

  • API 호출 및 엣지 컴퓨팅 활용 가능.
Previous
React Native
Next
Redis