이번 포스팅에서는 AWS의 대표적인 컴퓨팅 서비스 Amazon EC2를 중심으로 컨테이너 서비스, 서버리스 컴퓨팅, 오케스트레이션 서비스 등을 정리해보겠습니다.

AWS 컴퓨팅 서비스
Amazon Web Service는 다양한 컴퓨팅 서비스를 제공합니다.
- Amazon EC2
- Amazon EC2 Auto Scaling
- Amazon Elastic Container Registry(Amazon ECR)
- Amazon Clastic Container Service(Amazon ECS)
- AWS Elastic Beanstalk
- AWS Lambda
- Amazon Elastic Kubernetes Service(Amazon EKS)
컴퓨팅 서비스 분류
- Amazon EC2 = 인스턴스 기반 가상 머신, 서비스형 인프라(IaaS)
- AWS Lambda = 서버리스 컴퓨팅, 함수 기반 (관리할 필요 X)
- Amazon ECS, EKS, ECR = 컨테이너 기반 컴퓨팅, 인스턴스
- AWS Elastic Beanstalk = 서비스형 플랫폼(PaaS), 웹 애플리케이션
(신속한 배포 가능)
Amazon EC2란?
Amazon Elastic Compute Cloud는 클라우드에서 가상 서버를 생성하고 운영할 수 있도록 도와주는 AWS의 대표적인 컴퓨팅 서비스입니다. 사용자는 EC2 인스턴스를 실행하여 애플리케이션을 배포하고, 필요에 따라 확장 및 축소할 수 있습니다.
(AMI에서 인스턴스 시작)
Amazon EC2를 사용하는 이유
1. 유연한 확장성: 수요에 따라 서버의 크기와 개수 조정 가능
2. 비용 효율성: 사용한 만큼만 비용을 지불하는 요금제
3. 다양한 인스턴스 타입: 일반적인 애플리케이션부터 고성능 컴퓨팅까지 지원
4. 보안 및 관리 기능 제공: IAM을 활용한 권한 관리, VPC 네트워크 설정 등 지원
Amazon EC2 기본 기능
- 온디맨드 인스턴스: 사용한 만큼만 비용을 지불하는 방식
- 스팟 인스턴스: 남는 리소스를 저렴한 가격에 활용 가능
- Auto Scaling: 트래픽에 따라 자동으로 인스턴스 수를 조절
- ELB(Elastic Load Balancing): 부하를 여러 인스턴스로 분산
- EBS(Elastic Block Store): EC2 인스턴스의 영구적인 스토리지 제공
Amazon EC2 시작하며 선택하는 사항
- AMI
- 인스턴스 유형
- 네트워크 설정
- IAM 역할
- 사용자 데이터
- 스토리지 옵션
- 태그(메타데이터를 연결하는 방법, 키/값으로 구성)
- 보안 그룹(방화벽 규칙)
- 키 페어(퍼블릭/프라이빗 키)
AMI
Amazon Machine Image(AMI)는 EC2 인스턴스를 시작하는 데 필요한 정보를 제공하는 템플릿입니다. 운영체제를 포함하고 있으며, 일부 소프트웨어가 사전에 설치되어 있는 경우가 많습니다. (인스턴스의 루트 볼륨에 대한 템플릿)
스토리지 옵션
- Amazon EBS: 블록 수준 스토리지 볼륨, 인스턴스 중지한 후 다시 시작 가능하며 데이터가 그대로 유지됨
- Amazon EC2 인스턴스 스토어: 인스턴스가 중지되면 저장된 데이터가 삭제됨
컨테이너 서비스
컨테이너는 운영체제를 가상화하는 기술 중 하나로, 가상 머신보다 가볍고 빠른 배포가 가능합니다. AWS에서는 컨테이너 기술을 활용할 수 있는 다양한 서비스가 제공됩니다.
컨테이너란?
- 운영체제(OS)를 가상화하는 방법 중 하나
- 가상 머신보다 가볍고 빠름
- 독립적인 환경에서 애플리케이션 실행이 가능
컨테이너의 주요 이점
- 반복성 지원: 환경이 동일하므로 개발/테스트/운영에서 일관된 결과 보장
- 일관성 유지: 어디서 실행하든 동일한 환경에서 작동 가능
- 빠른 배포: 가상 머신보다 작은 크기로 배포 속도가 빠름
Docker(도커)
Docker는 애플리케이션을 컨테이너로 패키징하는 플랫폼으로, 간단한 명령어로 실행하고 관리할 수 있습니다.
- Docker 이미지: 컨테이너 실행을 위한 템플릿 역할
- Docker 컨테이너: 이미지 기반으로 실행되는 독립적인 환경
- 가상 머신과의 차이: 컨테이너는 OS 커널을 공유하지만, 가상 머신은 별도의 OS를 포함하고 있음
AWS 컨테이너 서비스
Amazon ECS(Elastic Container Service)
- AWS에서 제공하는 완전관리형 컨테이너 오케스트레이션 서비스
- Docker 컨테이너 실행을 오케스트레이션하고, 노드 유지 관리 및 확장 가능
- 인프라 구축의 복잡성을 해소함
Kubernetes(K8s)
- 컨테이너 오케스트레이션을 위한 오픈 소스 소프트웨어
- 대규모 컨테이너 배포 및 관리를 지원함
- 온프레미스 및 클라우드 환경에서 동일한 도구 사용 가능
Amazon EKS(Elastic Kubernetes Service)
- AWS에서 쿠버네티스를 실행할 수 있도록 지원하는 서비스
- 쿠버네티스의 호환 인증을 제공하여 간편한 마이그레이션 지원
- Linux 및 Windows 컨테이너를 지원함
- Kubernetes 클러스터를 자동으로 프로비저닝하고 관리함
Amazon ECR(Elastic Container Registry)
- Docker 컨테이너 이미지를 저장, 관리, 배포할 수 있는 완전관리형
Docker 레지스트리
- AWS IAM과 연동되어 보안이 강화됨
서버리스 컴퓨팅
AWS Lambda
AWS Lambda는 서버 없이 코드를 실행할 수 있는 이벤트 기반 서버리스 컴퓨팅 서비스입니다.
Lambda의 주요 이점
- 완전한 자동 관리: 인프라 관리 없이 코드 실행 가능
- 내결함성 제공: 인스턴스 장애 발생 시 자동 복구
- 사용량 기반 요금: 사용한 만큼만 비용 지불
- 다양한 프로그래밍 언어 지원
- 자동 확장: 트래픽 증가에 따라 자동으로 확장
Lambda 함수란?
- 특정 이벤트 발생 시 실행되는 사용자 지정 코드
- API Gateway, S3, DynamoDB 등과 연동 가능
- 이벤트 기반 실행(ex: 파일 업로드 시 자동 실행)
AWS 관리형 애플리케이션 서비스
AWS Elastic Beanstalk
Elastic Beanstalk는 웹 애플리케이션을 쉽게 배포하고 실행할 수 있도록 도와주는 관리형 서비스입니다.
Elastic Beanstalk의 주요 기능
- 인프라 자동 관리: 서버 설정, 배포, 로드 밸런싱, 자동 조정 등을 자동화
- 빠른 배포: 코드 업로드만으로 간단하게 애플리케이션 배포 가능
- 자동 모니터링: 애플리케이션 상태 확인 및 로깅 제공
- 비용 효율적: 기본 리소스 비용만 청구, 추가 요금 없음
- 다양한 언어 지원: Python, Java, Node.js 등 인기 있는 플랫폼 지원
Elastic Beanstalk 사용하는 이유
- 개발자가 인프라 설정 없이 코드에 집중할 수 있도록 지원
- 배포 속도 증가 및 운영 비용 절감
- 애플리케이션 규모 확장 시 자동 확장 기능 활용 가능
지금까지 AWS 컴퓨팅 서비스에 대해서 알아보았습니다. 이는 사용자의 요구 사항에 맞춰 유연하게 선택할 수 있으며, 클라우드 인프라의 복잡성을 줄이고 운영 효율성을 극대화하는 데 도움이 됩니다.
오늘도 하고픈걸 향해 떠나는 zooy였습니다.
감사합니다 :)