코딩마을방범대
AWS(Amazon Web Service)란? 본문
728x90
AWS(Amazon Web Service)
- 아마존이 제공하는 클라우드 컴퓨팅 플랫폼 및 서비스 모음
- 전 세계에 걸쳐 다수의 데이터 센터를 운영하고 있으며, 이들 데이터 센터는 여러 '리전'과 '가용 영역'으로 구성되어 있음
이를 통해 고객은 지역적으로 분산된 인프라를 활용할 수 있음
AWS 주요 서비스
축약형 | 확장형 | 설명 |
Amazone EC2 | Elastic Compute Cloud | 가상 서버를 제공하는 서비스 |
Amazone S3 | Simple Storage | 스케일링 가능한 객체 스토리지 서비스 |
Amazon RDS | Relational Database Service | 관리형 관계형 데이터베이스 서비스 |
Amazon VPC | Virtual Private Cloud | 사용자 정의 가상 네트워크를 제공 |
Amazon ECS | Elastic Container Service | 컨테이너 오케스트레이션 도구 AWS가 개발한 자체 컨테이너 오케스트레이션 서비스 |
Amazon EKS | Elastic Kubernetes Service | 컨테이너 오케스트레이션 도구 오픈소스 컨테이너 오케스트레이션 플랫폼인 Kubernetes를 기반 |
AWS Lambda | 서버리스 컴퓨팅 서비스로, 코드를 서버 관리 없이 실행할 수 있음 |
AWS 인스턴스
- 인스턴스 클라우드 플랫폼에서 제공하는 가상 서버
- AWS의 Elastic Compute Cloud(EC2) 서비스를 통해 제공
특징
- 메모리, CPU, 스토리지 및 네트워킹 용량을 기준으로 원하는 사양을 선택 가능
- 가상화된 환경에서 실행되므로, 여러 운영 체제 중에서 선택하고, 자신의 응용 프로그램과 데이터를 쉽게 호스팅할 수 있음
- 보안 및 네트워킹 기능을 제공하여, 보안 그룹과 네트워크 액세스 제어 목록을 통해 인스턴스에 대한 액세스 제어 가능
- 전 세계 여러 지역에 걸쳐 분산된 데이터 센터에서 인스턴스를 실행할 수 있으며, 이를 통해 레이턴시를 최소화하고 재해 복구 능력을 향상시킬 수 있음
- AWS의 다른 서비스와 쉽게 통합되며, AWS Management Console, AWS CLI, SDKs 등을 통해 관리할 수 있음
CPU (Central Processing Unit)
시스템의 모든 작업을 관리하고 실행
코어 (Core)
CPU 내의 처리 단위
ELB (Elastic Load Balancing)
- 애플리케이션 트래픽을 여러 서버, 컨테이너, 람다 함수 등으로 분산시킴
- 하나의 영역에 문제가 발생해도 애플리케이션이 계속 작동할 수 있도록 지원
- 연결된 인스턴스의 상태를 주기적으로 확인(건강 검사)하고, 문제가 있는 인스턴스로의 트래픽 전송을 중단하여 안정적인 서비스 운영을 지원
ELB의 세 가지 유형
확장형 | 축약형 | |
Application Load Balancer | ALB | HTTP 및 HTTPS 트래픽을 위해 최적화되었으며, 고급 라우팅 기능을 제공하여 요청을 특정 리소스에 전달 |
Network Load Balancer | NLB | TCP, UDP, TLS 트래픽에 최적화되어 있으며, 초저지연 및 매우 높은 처리량을 제공 |
Classic Load Balancer | CLB | 이전 버전의 ELB로, 간단한 로드 밸런싱 기능을 제공 (CLB는 점점 ALB와 NLB로 대체되고 있음) |
EBS(Elastic Block Store)
- AWS에서 제공하는 고성능 블록 스토리지 서비스
- 주로 Amazon EC2 인스턴스에 사용되며, 데이터를 저장하기 위한 지속적이고 확장 가능한 블록 스토리지를 제공
- EBS 볼륨은 EC2 인스턴스와 독립적으로 존재하여, 인스턴스가 종료되어도 EBS 볼륨에 저장된 데이터가 보존됨
- EBS 볼륨은 데이터를 암호화할 수 있으며, AWS Key Management Service(KMS)와 통합되어 보안 관리를 강화함
- 스냅샷을 생성하여 데이터를 백업할 수 있으며, 이 스냅샷을 사용하여 새로운 EBS 볼륨을 생성할 수도 있음
EBS 볼륨 유형
범용 SSD (gp2, gp3) | 가장 일반적인 사용 사례에 적합한 볼륨 유형으로, 균형 잡힌 가격 대비 성능을 제공 |
프로비저닝된 IOPS SSD (io1, io2) | 고성능을 요구하는 I/O 집약적인 데이터베이스 작업에 적합 |
처리량 최적화 HDD (st1) | 빅데이터, 데이터 웨어하우스, 로그 처리와 같은 대용량 순차 읽기/쓰기 작업에 최적화 |
Cold HDD (sc1) | 접근 빈도가 낮은 데이터에 적합한 비용 효율적인 스토리지 옵션 |
인스턴스를 생성하기 전 알아야 할 필수 상식
VPC (Virtual Private Cloud)
- 사용자가 클라우드 내에서 자신만의 격리된 네트워크 환경을 생성하고 관리할 수 있게 해줌
- AWS 클라우드 내에서 사용자의 리소스를 격리시켜 보안을 강화
- VPC 내에서 하나 이상의 서브넷을 생성할 수 있음.
서브넷은 VPC의 IP 주소 범위 내에서 분리된 구역으로, 특정 서브넷을 공용 또는 사설로 설정할 수 있음 - 보안 그룹과 네트워크 액세스 제어 목록(ACL)을 사용하여 VPC 내의 리소스에 대한 액세스를 제어할 수 있음
- VPC를 온프레미스 네트워크에 연결하기 위해 가상 사설 네트워크(VPN) 연결을 설정할 수 있음
서브넷 (Subnetwork)
- IP 네트워크를 더 작은 네트워크 세그먼트로 나누는 것
- 네트워크를 더 작은 그룹으로 나누는 것
네트워크 세그먼트란?
컴퓨터 네트워크에서 특정 부분 또는 구역
장점
- 서로 다른 서브넷에 있는 장치들은 직접적으로 통신하지 않음(보안 강화)
- 네트워크 트래픽을 더 효율적으로 관리할 수 있으며, 네트워크 충돌과 트래픽 병목 현상을 줄일 수 있음
- 서브넷팅을 통해 IP 주소 공간을 더 효율적으로 사용할 수 있음
트래픽이란?
인터넷 상에서 송수신되는 모든 통신의 양
라우터 (Router, 게이트웨이)
- 서로 다른 네트워크 간의 데이터 패킷을 전송하는 기능
- 네트워크 트래픽을 효율적으로 관리하기 위해 데이터 패킷의 출발지와 목적지 주소를 기반으로 최적의 경로를 결정
- 내부 네트워크와 외부 네트워크(예: 인터넷) 간의 연결을 담당
패킷이란?
컴퓨터 간에 데이터를 주고받을 때 네트워크를 통해서 전송되는 데이터 조각
라우터와 와이파이 공유기의 차이점?
- 라우터는 데이터 라우팅에 중점을 두고, 와이파이 공유기는 무선 인터넷 연결을 제공하는 데 중점을 둠
- 라우터는 네트워크 간의 연결 및 트래픽 관리에 초점을 맞추고, 와이파이 공유기는 무선 접속을 용이하게 하는 데 초점을 맞춤
그러나 현대의 와이파이 공유기는 라우터 기능을 포함하고 있어, 두 장치의 기능이 통합된 형태로 제공됨
AWS에서의 라우팅
- VPC 내에서 라우팅은 트래픽의 흐름을 제어하고, 인스턴스, 서브넷, 인터넷, 그리고 다른 네트워크 서비스 간의 통신을 가능하게 함
구성 요소 | 설명 |
라우팅 테이블 (Routing Table) | 네트워크 트래픽을 특정 목적지로 보내기 위한 규칙(라우팅 규칙)의 모음 |
라우트 | 라우팅 테이블 내의 각 라우트(경로)는 특정 IP 주소 범위(목적지)에 대한 트래픽을 어떻게 처리할지를 지정 |
인터넷 게이트웨이 (Internet Gateway, IGW) |
VPC를 인터넷과 연결하는 역할 |
NAT 게이트웨이 (NAT Gateway) | 사설 서브넷에 위치한 인스턴스가 인터넷과 통신할 수 있게 하면서, 인터넷에서 해당 인스턴스로의 직접적인 액세스는 차단 |
VPC 피어링 (VPC Peering) | 두 VPC 간에 트래픽을 직접 라우팅할 수 있게 하는 연결 |
트랜짓 게이트웨이 (Transit Gateway) | 여러 VPC 및 온프레미스 네트워크 간의 중앙 허브 역할을 하며, 대규모 네트워크 환경에서 라우팅을 단순화 함 |
VPC -> Gateway -> 라우팅테이블(라우트) -> 서브넷 -> EC2
AMI (Amazon Machine Image)
- EC2 인스턴스를 시작할 때 사용되며, 운영 체제(OS), 애플리케이션 서버, 애플리케이션 등 필요한 모든 정보를 포함
- 시스템의 상태를 AMI로 저장하여, 이 AMI를 사용해 시스템을 원래 상태로 복구할 수 있음(백업/복구)
- 동일한 구성의 서버를 여러 개 배포해야 할 때 AMI를 사용하여 일관된 환경을 신속하게 구축할 수 있음
특징
- 서버의 운영 체제, 애플리케이션, 필요한 라이브러리 등을 미리 구성한 상태로 제공됨
- 사용자 정의 AMI는 특정 애플리케이션 설정, 보안 패치, 도구 등을 미리 설치해 두어 효율적인 인스턴스 배포가 가능
- 다양한 AWS 지역에서 사용할 수 있으며, x86 아키텍처 또는 ARM 아키텍처를 기반으로 한 인스턴스 유형에 따라 다르게 제공됨
테넌시(Tenancy)
- Amazon EC2 인스턴스를 호스팅하는 방식에 대한 옵션
공유 테넌시(Shared Tanancy) | - 여러 AWS 고객이 동일한 물리적 서버의 리소스를 공유 - 일반적인 워크로드, 비용 감소가 중요한 경우, 특별한 규정 준수 요구 사항이 없는 경우에 적합 |
전용 인스턴스(Dedicated Instances) | - 인스턴스는 물리적 서버를 다른 AWS 계정과 공유하지 않지만, 동일한 AWS 계정 내의 다른 인스턴스와는 서버를 공유할 수 있음 - 보안이 중요한 비즈니스 애플리케이션, 규정 준수가 필요한 워크로드에 적합 |
전용 호스트(Dedicated Hosts) | - 특정 AWS 계정이 물리적 서버 전체를 독점(최고 수준의 격리와 제어를 제공) - 엄격한 규정 준수 요구 사항을 가진 워크로드, 소프트웨어 라이선스가 서버 기반 라이선싱 모델을 사용하는 경우에 적합 |
워크로드(Workload)
컴퓨팅 컨텍스트에서 시스템, 네트워크, 또는 서버 등이 처리해야 하는 작업의 양 또는 종류
오케스트레이션(Orchestration)
- 여러 시스템, 애플리케이션, 서비스 또는 작업을 자동화하고 조정하는 프로세스
- 일관된 프로세스와 정책 적용을 통해 시스템과 애플리케이션의 안정성을 유지
적용 분야 | 설명 |
클라우드 컴퓨팅 | 자원을 할당, 관리, 최적화하기 위한 자동화된 프로세스를 구현 |
컨테이너 오케스트레이션 | 도커(Docker)와 같은 컨테이너 기반의 애플리케이션을 관리(ECS, 쿠버네이트 등) |
서비스 오케스트레이션 | - 마이크로서비스 아키텍처에서 다양한 서비스 간의 상호작용을 조정 - 서비스 간의 의존성과 통신을 관리하여 복잡한 서비스 구성을 단순화 |
워크플로우 자동화 | 비즈니스 프로세스 또는 데이터 처리 파이프라인에서 여러 단계의 작업을 자동화하고 조정 |
네트워크 오케스트레이션 |
데이터 센터 또는 네트워크 환경에서 자동화된 네트워크 구성, 관리 및 최적화 |
쿠버네이트 (Kubernetes)
- 컨테이너화된 애플리케이션을 대규모로 배포하고 관리하기 위한 오케스트레이션 시스템
주요 기능
기능 | 설명 |
클러스터 관리 | 여러 서버(노드)에 걸쳐 컨테이너를 조정하고 관리 |
자동화된 롤아웃과 롤백 | 애플리케이션 업데이트를 자동으로 관리 |
부하 분산 | 트래픽을 여러 컨테이너 간에 분산 |
자동 스케일링 | 필요에 따라 컨테이너를 자동으로 확장하거나 축소 |
자체 치유 | 실패한 컨테이너를 대체 |
도커 (Docker)
- 컨테이너를 생성하고 관리하는 플랫폼
주요 기능
기능 | 설명 |
컨테이너 생성 | 애플리케이션을 컨테이너라는 격리된 환경에 패키징 |
이미지 관리 | 애플리케이션, 라이브러리, 도구, 종속성 등이 포함된 템플릿 관리 |
컨테이너 실행 | Docker를 사용하여 컨테이너를 실행, 중지, 시작 및 관리 |
Docker로 컨테이너를 생성하고 Kubernetes를 사용해 컨테이너를 관리(오케스트레이션)
Kubernetes는 Docker와 같은 컨테이너화 도구 없이는 작동하지 않지만, Kubernetes 없이도 Docker를 사용할 수 있음
728x90
'💡 백엔드 > AWS & Azure' 카테고리의 다른 글
AWS EC2 백업 및 초기화 (0) | 2024.11.28 |
---|---|
AWS EC2 인스턴스 용량 확장하기 (0) | 2024.06.07 |
Azure 구성도와 기본 상식 (0) | 2024.01.03 |
AWS의 지역(Region)과 가용 영역(AZ) (0) | 2024.01.03 |
AWS와 Azure의 비교 (0) | 2023.12.29 |