베하~! 탑신병자 듀오 팀 나르 입니다!
이번 포스팅에서는 AWS Container Serivce에 대해서 알아보도록 하겠습니다
AWS의 Container Service를 이전에 먼저 Container에 대해서 알아보고 가도록 하겠습니다
컨테이너란?
컨테이너란 논리적인 공간을 만들어 다양한 어플리케이션을 설치해 하나의 서버처럼 사용할 수 있는 패키지입니다.
물류에서 사용하는 컨테이너 처럼 하나의 공간에 다양한 물건을 담아 옮기고, 각 서버에서 컨테이너를 구동해 그 안에 존재하는 어플리케이션을 별도의 설정 없이 쉽게 사용할 수 있다.
☞ 여기서 말하고 있는 패키지는 코드, 운영체제, 설정 파일, 의존 파일(필요 라이브러리)를 의미하고 있습니다.
컨테이너의 장점
- 자원 낭비의 부담감이 적다
- 실행 속도가 빠르다
- 배포 및 관리를 단순하게 해준다
- 컨테이너 이미지를 쉽게 공유 및 사용이 가능하다
컨테이너와 VM의 차이
VM이란?
본 하드웨어에 대한 액세스 권한을 갖는 호스트 운영체제 위에서 Linux 또는 Windows 같은 게스트 운영 체제를 실행 ===> 즉, 하드웨어 수준에서의 가상화를 의미
- 컨테이너는 VM보다 훨씬 더 경량입니다.
- 컨테이너는 OS 수준에서 가상화되고 VM은 하드웨어 수준에서 가상화됩니다.
- 컨테이너는 OS 커널을 공유하며 VM에 필요한 것보다 훨씬 적은 메모리를 사용합니다
자 그럼 본격적으로 AWS의 Container Service에 대하여 알아보도록 할까요?
AWS의 Container Service에는 4가지가 있습니다.
바로 Amazon Elastic Container Service(ECS), AWS Elastic Kubernetes Service(EKS), AWS App Runner, AWS Lambda Container입니다.
위의 3가지 서비스에 대해서 자세히 알아보겠습니다.
Amazon Elastic Container Service(ECS)
☞ 컨테이너화된 애플리케이션의 손쉬운 배포, 관리 및 크기 조정에 도움이 되는 완전 관리형 오케스트레이션 서비스
ECS의 특징에 대해서 알아볼까요?
- 다른 AWS 서비스와 연동 가능하다
- AWS의 Docker Hub인 ECR(Elastic Container Registry)와 연동이 가능하다
- ALB, CloudWatch와 연동이 가능하다
- 2가지의 mode가 있다
- EC2: EC2를 활용한 컨테이너 서비스
- Fargate: Serverless 컨테이너 서비스
- 컨테이너를 실행하기 위해 가상 머신의 클러스터를 프로비저닝, 구성 또는 조정할 필요가 없다
- Fargate를 사용하기 위해서는 상위 개념에서 특정 오케스트레이션을 선택해야 한다 →Amazon ECS, Amazon EKS가 AWS Fargate를 지원한다
앞서 설명했던 2가지의 mode의 차이점을 표를 통해서 알아보도록 하겠습니다.
EC2 VS Fargate
EC2 | Fargate |
직접 관리 필요(스케쥴링 등) | Serverless |
VPC 안에 생성 | VPC 밖에 생성되어 VPC에서 접근 |
주로 대규모의 애플리케이션에 사용 | 대규모 어플리케이션과 단기적인 작업에 주로 사용 |
비용이 많이 소모된다. | 비교적 비용 관리가 쉽다 |
ECS의 사용 사례
- AWS상에서 컨테이너 기반 애플리케이션을 호스팅 할 때 일반적으로 사용한다
- 대규모의 애플리케이션의 구축/배포/실행시에 주로 사용한다
AWS Elastic Kubernetes Service(EKS)
☞kubernetes 컨트롤 플레인 또는 노드를 설치, 운영 및 유지 관리할 필요 없이 AWS의 kubernetes 실행에 사용할 수 있는 관리형 서비스
EKS의 특징
- 완전 관리형 kuberentes
- 부하에 따라 control plane 인스턴스를 자동으로 화장하고, 비정상 control plane 인스턴스를 감지 및 교체하며, 자동화된 버전 업데이트 및 패치를 제공합니다
- 가용성 보장
- eks는 사용자를 위해 여러 aws 가용 영역 전체에서 eks를 운영하여 단일 장애 지점을 제거합니다
- 많은 aws 서비스와 통합
- 애플리케이션에 확장성을 보안을 제공하기 위해 이미지 보관을 하는 ECR 부하분산을 하는 ELB 인증을 위한 IAM 등처럼 통합된다.
AWS App Runner
☞개발자가 사전 인프라 경험 없이도 컨테이너화된 웹 애플리케이션 및 API를 대규모로 빠르게 배포할 수 있도록 지원하는 완전관리형 서비스
AWS App Runner의 특징
- 컨테이너/인프라 경험이 없이도 몇 번의 클릭으로 애플리케이션을 구축 가능하기 때문에 서버 구성, 네트워킹, 로드벨런싱, 배포 파이프라인에 대한 지식이 필요 없다.
- 트래픽 기반으로 자동 확장 및 축소가 가능하다
- 임시 스토리지 기반 : 저장 공간이 영구적이지 않다
사용 사례
- 경량의 소규모 컨테이너 기반 애플리케이션의 실행에 적합하다
- 인프라 구축 및 관리 없이 애플리케이션을 배포/실행하고 싶을 때 사용이 적합하다
AWS Lambda Container
☞Lambda 함수를 컨테이너 기반 이미지로 배포할 수 있는 기능
AWS Lambda Container의 특징
- Lambda Base Image를 기반으로 이미지를 생성하여 배포한다
- Base Image: Node.js, Python, Java, .Net, Go, Ruby
- Lambda Runtime API 구현을 통하여 OS(Debian, Amazon Linux 등)이미지 기반을 이미지 생성이 가능하다
- 최대 10GB 사이즈
- CI/CD 방식을 이용하여 이미지를 배포하여 사용할 수 있다
사용 사례
- AWS Lambda의 다양한 기능(이벤트 기반 트리거, 동시성, Serverless 아키텍처의 활용 등)을 활용하여 컨테이너 기반 코드를 실행하고 싶은 경우 사용에 유리하다
- Lambda의 250mb 용량 제한을 우회하고 싶을 경우 사용할 수 있다.
지금까지 AWS Container Service에 대하여 알아봤습니다
다음 포스팅에는 더욱 흥미로운 주제로 돌아오겠습니다~!
그럼 베빠~!
'CSP (Cloud Service Provider) > AWS' 카테고리의 다른 글
[AWS] Site-to-Site VPN (0) | 2023.06.09 |
---|---|
[AWS] Direct Connect (0) | 2023.06.09 |
[AWS]Fargate (0) | 2023.06.09 |
[AWS] AWS CodeCommit (0) | 2023.06.08 |
[AWS] CloudWatch Loginsight Query 사용법 (0) | 2023.06.08 |
댓글