컴퓨팅 서비스 개요
AWS 인스턴스 유형은 인스턴스 패밀리로 그룹화할 수 있으며, 각 인스턴스 유형은 특정 워크로드에 최적화되어 있습니다.
EC2 (Elastic Compute Cloud)
EC2는 AWS에서 제공하는 서비스로, 물리적인 서버 대신 인터넷을 통해 접근하는 가상화된 서버에 액세스할 수 있다.
EC2의 장점
- 뛰어난 유연성: 다양한 운영 체제, 애플리케이션, 데이터베이스, 소프트웨어 등을 물리적인 서버 구성 없이도 가상 환경에서 사용할 수 있습니다.
- 비용 효율성: 온프레미스 리소스 구축에 드는 시간과 비용을 절감합니다. EC2를 사용하면 컴퓨팅, 메모리, 네트워크 리소스를 사용한 만큼만 비용을 지불합니다.
- 빠른 속도: 필요할 때 빠르게 서버를 프로비저닝하고 사용할 수 있습니다.
- 멀티 테넌시: AWS 환경에서 여러 사용자가 호스트의 리소스를 공유하며, 서로 격리되어 안정성을 유지합니다.
- 수직 확장: 필요에 따라 인스턴스의 크기를 조정하여 성능을 높일 수 있습니다.
EC2 인스턴스 패밀리
각 인스턴스 패밀리는 특정 워크로드에 최적화되어 있습니다.
- 범용 인스턴스 (General Purpose): 컴퓨팅, 메모리, 네트워크 리소스를 균형 있게 제공합니다.
- 주요 사용 사례: 애플리케이션 서버, 게임 서버, 엔터프라이즈 애플리케이션용 백엔드 서버, 중소 규모 데이터베이스.
- 컴퓨팅 최적화 인스턴스 (Compute Optimized): 고성능 프로세서를 활용하는 컴퓨팅 집약적인 애플리케이션에 최적화되어 있습니다.
- 주요 사용 사례: 고성능 웹 서버, 컴퓨팅 집약적 애플리케이션 서버, 전용 게임 서버.
- 메모리 최적화 인스턴스 (Memory Optimized): 메모리 내에서 대규모 데이터 집합을 처리하는 워크로드에 빠른 성능을 제공합니다.
- 주요 사용 사례: 애플리케이션 실행 전 많은 데이터를 미리 로드해야 하는 워크로드 (예: 대규모 캐싱, 고성능 관계형/비관계형 데이터베이스).
- 액셀러레이티드 컴퓨팅 인스턴스 (Accelerated Computing): 하드웨어 액셀러레이터 또는 코프로세서(GPU, FPGA 등)를 사용하여 CPU에서 실행되는 소프트웨어보다 특정 기능을 더 효율적으로 처리합니다.
- 주요 사용 사례: 그래픽 처리, 데이터 패턴 인식, 부동 소수점 수 계산, 머신러닝 추론.
- 스토리지 최적화 인스턴스 (Storage Optimized): 로컬 스토리지에 대규모 데이터 집합에 대한 읽기 및 쓰기 액세스가 많이 필요한 워크로드를 위해 설계되었습니다.
- 주요 사용 사례: 분산 파일 시스템, 데이터 웨어하우징 애플리케이션, 고빈도 온라인 트랜잭션 처리(OLTP), 높은 IOPS(Input/Output Operations Per Second) 요구 사항을 가진 애플리케이션.
인스턴스 유형
AWS EC2 크기 조정 (Scaling)
EC2는 확장성과 탄력성을 제공하여 기업의 수요 변화에 맞춰 리소스를 유연하게 조정할 수 있습니다.
- 확장성 (Scalability): 필요한 리소스만으로 시작하고, 수요 변화에 따라 리소스를 **확장(Scale-up/out)**하거나 **축소(Scale-down/in)**할 수 있습니다. 피크 부하 시에도 서버를 원활하게 유지하면서 불필요한 비용 지출을 줄일 수 있습니다.
Auto Scaling
Auto Scaling은 애플리케이션 수요에 따라 EC2 인스턴스를 자동으로 추가하거나 제거하는 기능입니다. 이를 통해 트래픽 급증 시에도 안정적인 서비스를 제공하고, 트래픽 감소 시에는 비용을 절감할 수 있습니다.
Auto Scaling을 사용하는 두 가지 주요 방법:
- 수직 확장 (Vertical Scaling): 단일 인스턴스의 크기(CPU, 메모리 등)를 늘려 성능을 향상시키는 방식입니다. (일반적으로 Auto Scaling의 대상은 아니지만, EC2의 확장성 관점에서 설명 가능)
- 수평 확장 (Horizontal Scaling): 수요에 따라 인스턴스 수를 늘리거나 줄이는 방식입니다. 이것이 Auto Scaling의 주된 기능입니다.
ELB (Elastic Load Balancing)를 활용한 트래픽 리디렉션
- *Elastic Load Balancing (ELB)**은 들어오는 애플리케이션 트래픽을 Amazon EC2 인스턴스와 같이 여러 대상에 자동으로 분산하는 AWS 서비스입니다.
- 역할: Auto Scaling 그룹으로 들어오는 트래픽의 단일 진입점 역할을 함으로써, ELB는 워크로드를 여러 인스턴스에 적절히 분산하여 서비스의 가용성과 내결함성을 높입니다.
메시징 및 대기열 서비스
애플리케이션 간의 통신 방식은 아키텍처의 견고성에 큰 영향을 미칩니다.
- 밀결합된 아키텍처 (Tightly Coupled Architecture): 애플리케이션 구성 요소들이 직접적으로 연결되어 있어, 한 부분에 문제가 발생하면 전체 시스템에 오류가 전파될 수 있습니다. (예: App A -> App B 직접 호출 시 B에 문제 발생하면 A도 영향)
- 느슨하게 결합된 아키텍처 (Loosely Coupled Architecture): 구성 요소들이 직접 연결되지 않고 **메시지 대기열(버퍼)**을 통해 통신하여, 한 부분의 장애가 전체 시스템에 미치는 영향을 최소화합니다. (예: A -> 버퍼(메시지 대기열) -> B)
AWS의 주요 메시징 및 대기열 서비스:
- Amazon SQS (Simple Queue Service): 완전 관리형 메시지 대기열 서비스입니다. 메시지(데이터 페이로드 포함)가 처리될 때까지 대기열에 안전하게 저장됩니다.
- 역할: 메시지 전송, 저장, 수신 기능을 제공하여 소프트웨어 구성 요소 간의 안정적이고 비동기적인 통신을 지원하며, 모든 볼륨의 메시지를 처리할 수 있습니다.
- Amazon SNS (Simple Notification Service): 완전 관리형 게시/구독(Pub/Sub) 메시징 서비스입니다. 게시자는 SNS 주제(Topic)를 사용하여 구독자에게 메시지를 전달합니다.
- 역할: 이메일, 문자 메시지(SMS), 모바일 푸시 알림, AWS Lambda 함수, HTTP 엔드포인트 등 다양한 구독자에게 메시지를 대량으로 배포하는 데 사용됩니다.
추가 컴퓨팅 서비스: 서버리스 및 컨테이너
EC2 외에도 AWS는 다양한 컴퓨팅 서비스를 제공하여 워크로드 유형에 맞는 최적의 환경을 선택할 수 있도록 합니다.
서버리스 컴퓨팅 (Serverless Computing)
기존 EC2에서 애플리케이션을 실행하려면 인스턴스를 프로비저닝하고, 코드를 업로드하며, 애플리케이션이 실행되는 동안 인스턴스를 직접 관리해야 했습니다. 서버리스 컴퓨팅은 이러한 서버 관리 부담을 없애줍니다.
- 이점:
- 운영 부담 감소: 서버를 유지 관리하는 대신 제품과 기능 혁신에 집중할 수 있습니다.
- 자동 확장: 애플리케이션이 자동으로 확장 및 축소되어 유연성을 확보합니다.
- 사용량 기반 과금: 사용한 컴퓨팅 시간에 대해서만 비용을 지불합니다.
- 쉬운 용량 조정: 처리량, 메모리 소비 단위 등을 수정하여 용량을 조정할 수 있습니다.
AWS Lambda
AWS Lambda는 서버를 프로비저닝하거나 관리할 필요 없이 코드를 실행할 수 있는 서버리스 컴퓨팅 서비스입니다.
- 작동 방식:
- 코드를 Lambda에 업로드합니다.
- AWS 서비스(예: S3에 파일 업로드, DynamoDB 테이블 업데이트), 모바일 앱, 또는 HTTP 엔드포인트에 의해 트리거되도록 코드를 설정합니다.
- Lambda는 트리거 시에만 코드를 실행하고, 사용자는 실행된 컴퓨팅 시간에 대해서만 비용을 지불합니다.
컨테이너식 애플리케이션 빌드 및 실행
컨테이너는 애플리케이션 코드와 모든 종속성(라이브러리, 런타임 등)을 하나의 이식 가능한 객체로 패키징하는 표준 방식입니다. 이를 통해 개발 환경의 일관성을 유지하고, 애플리케이션을 안정적이고 확장성 있게 배포할 수 있습니다.
수백 개의 컨테이너와 수십 개의 호스트를 효율적으로 관리하기 위한 AWS 서비스:
1. Amazon ECS (Elastic Container Service)
Amazon ECS는 AWS에서 컨테이너식 애플리케이션을 실행하고 확장할 수 있는 고성능 컨테이너 오케스트레이션 서비스입니다. Docker 컨테이너를 지원합니다.
- Docker는 애플리케이션을 구축, 테스트, 배포할 수 있는 플랫폼이며, Amazon ECS는 Docker 지원 애플리케이션의 시작 및 중지를 API 호출을 통해 관리할 수 있도록 합니다.
2. Amazon EKS (Elastic Kubernetes Service)
Amazon EKS는 AWS에서 Kubernetes를 실행할 수 있는 완전 관리형 서비스입니다. Kubernetes는 컨테이너식 애플리케이션을 대규모로 배포하고 관리하는 오픈 소스 소프트웨어입니다.
- 이점: 사용자는 워커 노드와 애플리케이션 관리에 집중할 수 있으며, Kubernetes 버전 업그레이드, 고가용성(HA) 구성, etcd 백업 등 복잡한 작업은 AWS가 자동으로 처리합니다.
- EKS 구성 요소:
- Control Plane: AWS가 운영하는 고가용성 마스터 컴포넌트입니다.
- Worker Node: 실제 애플리케이션이 배포되는 EC2 또는 Fargate 인스턴스입니다.
- VPC / Subnet: 클러스터 네트워크 기반을 제공하며, Public/Private Subnet 구성으로 노드와 로드 밸런서(ALB/NLB) 분리가 가능합니다.
- IAM Role for Service Account: Pod 단위로 IAM 권한 제어를 위한 정책을 설정합니다.
- 보안 그룹 / NACL: 노드 간 통신 및 클러스터 외부 접근 제어를 위한 네트워크 보안 계층입니다.
- ALB Ingress Controller: 도메인 기반 라우팅을 제공하며, HTTPS 적용이 가능합니다 (ACM 연동).
AWS Fargate
AWS Fargate는 컨테이너용 서버리스 컴퓨팅 엔진으로, Amazon ECS 및 Amazon EKS에서 작동합니다.
- Fargate를 사용하면 사용자가 서버 인프라를 직접 관리할 필요 없이, 컨테이너 실행에 필요한 리소스에 대해서만 비용을 지불합니다.
정리
- 클라우드 컴퓨팅: 종량 과금제 요금으로 인터넷을 통해 IT 리소스(컴퓨팅, 스토리지, 네트워크 등)를 온디맨드로 제공하는 방식입니다.
- EC2 인스턴스 패밀리:
- 범용 (General Purpose): 컴퓨팅, 메모리, 네트워크 자원의 균형.
- 컴퓨팅 최적화 (Compute Optimized): 컴퓨팅 집약적 워크로드.
- 메모리 최적화 (Memory Optimized): 대규모 데이터셋 인메모리 처리.
- 액셀러레이티드 컴퓨팅 (Accelerated Computing): GPU/FPGA 등 하드웨어 가속기 활용.
- 스토리지 최적화 (Storage Optimized): 로컬 스토리지 I/O 집약적 워크로드.
- 가속 컴퓨팅 : GPU 포함 , 그래픽 처리, 기계학습
- HPC 최적화: 대규모 HPC
- Auto Scaling: 애플리케이션 수요에 따라 EC2 인스턴스를 자동으로 수평 확장/축소하는 시스템입니다.
- Elastic Load Balancing (ELB): 들어오는 트래픽을 여러 EC2 인스턴스에 자동으로 분산하여 가용성과 내결함성을 높입니다.
- Amazon SQS (Simple Queue Service): 시스템 구성 요소들을 서로 분리하여 메시지를 삭제 전까지 대기열에 위치하도록 하는 완전 관리형 메시지 대기열 서비스입니다.
- Amazon SNS (Simple Notification Service): 이메일, 문자 메시지, 푸시 알림 등 다양한 구독자에게 메시지를 전달하는 데 사용되는 게시/구독 메시징 서비스입니다.
- 컨테이너 오케스트레이션 도구:
- Amazon ECS: AWS에서 Docker 컨테이너를 관리하고 실행할 수 있는 고성능 컨테이너 관리 서비스입니다.
- Amazon EKS: AWS에서 Kubernetes를 실행할 수 있는 완전 관리형 서비스입니다.
- AWS Fargate: 컨테이너를 서버리스 컴퓨팅 플랫폼에서 실행할 수 있도록 하여 서버 관리 부담을 없애주는 서비스입니다.
- AWS Lambda: 서버를 프로비저닝하거나 관리할 필요 없이 코드를 업로드하여 트리거 기반으로 실행할 수 있는 서버리스 컴퓨팅 서비스입니다.
클라우드 환경에서 인프라를 설계하고 운영하기 위해서는 단순한 사용법을 넘어서 구조적 이해가 필요하다. 이 글에서는 서버와 클라이언트 구조, 온프레미스와 클라우드 인프라의 차이, AWS 인프라 구성 요소, 그리고 보안 책임 모델까지 핵심 개념을 정리한다.
1. 서버와 데스크탑의 차이
용도 | 서비스 제공 (웹, DB 등) | 사용자 개인 작업 (문서 작성, 웹 브라우징 등) |
운영 방식 | 24시간 무중단 운영 | 필요 시 수동 실행 |
하드웨어 구성 | 고성능 CPU, 대용량 메모리, 다중 디스크, 이중화 파워 가능 | 확장성 제한적 |
서비스 성격 | 다수 요청 처리, 지속적 서비스 | 단일 사용자 기반, 일시적 사용 |
서버는 단순한 고성능 컴퓨터가 아니라, 상시 운영되며 네트워크를 통해 서비스를 제공하는 시스템이다.
2. 클라이언트와 서버의 관계
- 클라이언트(Client): 서버에 서비스를 요청하는 주체 (예: 웹 브라우저, 모바일 앱 등)
- 서버(Server): 클라이언트의 요청을 수신하고 처리한 뒤 응답을 반환하는 시스템
대부분의 네트워크 서비스(HTTP, SSH, DNS 등)는 이 구조를 기반으로 동작한다.
3. 온프레미스와 클라우드 인프라의 차이
구축 위치 | 자체 데이터센터 | AWS, Azure, GCP 등 클라우드 사업자 |
초기 비용 | 고비용 (장비 구매, 설치 등) | 저비용 (필요 시 과금) |
리소스 구축 속도 | 느림 (물리 설치 필요) | 빠름 (콘솔 또는 API 기반) |
확장성 | 한계 존재, 과잉 설계 가능성 있음 | Auto Scaling 등 유연한 확장 가능 |
관리 책임 | 인프라 전체 고객 책임 | 일부 계층만 고객 책임 (공유 모델) |
온프레미스는 모든 레이어를 사용자가 직접 관리해야 하지만, 클라우드는 물리 인프라 관리를 클라우드 사업자가 담당함으로써 효율성과 확장성이 향상된다.
4. AWS 글로벌 인프라 구성
AWS는 전 세계적으로 분산된 인프라 구조를 기반으로 서비스를 제공한다.
- 리전(Region): 특정 지리적 위치에 있는 AWS 리소스 집합. 지연시간, 법률, 비용 등을 기준으로 선택한다.
- 가용 영역(Availability Zone): 하나의 리전에 포함된 독립된 데이터센터 그룹. 고가용성 구성에 활용된다.
- 엣지 로케이션(Edge Location): 사용자에게 더 가까운 위치에서 콘텐츠를 전송하고 캐싱하기 위한 인프라. CloudFront, Route 53 등에서 사용된다.
5. AWS 리소스 접근 방식
AWS는 모든 리소스 제어를 API 기반으로 제공하며, 다음과 같은 방식으로 호출할 수 있다.
관리 콘솔 | 웹 기반 GUI 환경 |
CLI | 명령줄 환경에서 API 호출 |
SDK | 프로그래밍 언어로 직접 AWS API 호출 가능 (예: boto3, Java SDK 등) |
모든 방식은 aws configure 명령어를 통해 인증 정보를 등록한 뒤 사용할 수 있다.
6. AWS 보안 책임 모델
AWS는 보안에 대해 다음과 같은 책임 분담 구조를 갖는다.
- AWS 책임
- 물리적 데이터센터 보안
- 하드웨어, 스토리지, 네트워크 인프라
- 가상화 계층
- 고객 책임
- 인스턴스의 운영 체제 및 애플리케이션 보안
- 방화벽(Security Group, NACL) 설정
- IAM 사용자 및 권한 구성
- 데이터 암호화 및 접근 통제
즉, AWS가 관리하지 않는 계층(OS, 네트워크 접근, 애플리케이션 보안 등)은 고객이 직접 관리해야 한다.
정리
클라우드 인프라 환경을 이해하고 설계하기 위해서는 하드웨어 구조, 네트워크 동작 방식, 보안 책임 범위 등을 구조적으로 이해하는 것이 필수적이다.
특히 AWS와 같은 퍼블릭 클라우드에서는 이러한 개념이 실질적인 설계, 운영, 자동화 구현에서 중요한 기준이 된다.
'AWS Developer BootCamp' 카테고리의 다른 글
[KSTA] NIPA-AWS Developer 부트캠프(2기) 학습 로드맵 (1) | 2025.06.25 |
---|---|
[Cloud] AWS Developer 공인교육 1일차 (0) | 2025.06.24 |