Search

Fargate

Fargate
서버리스 컨테이너 서비스
서버 프로비저닝, 패치 적용, 클러스터 용량 관리 또는 인프라 관리를 AWS에서 자동으로 수행
ECS 또는 EKS 와 연동되는 서비스
ECSEKS 모두 Fargate를 통해 프로비저닝된 컨테이너를 사용하여 Auto Scaling 하고 로드 밸런싱 가능
Firecracker
Firecracker는 AWS Lambda 및 AWS Fargate와 같은 서비스의 속도와 효율성을 가속화하기 위해 Amazon Web Services에서 개발되었다.
Firecracker는 서버리스 운영 모델을 제공하는 안전한 다중 테넌트 컨테이너 및 기능 기반 서비스를 만들고 관리하기 위해 특별히 제작된 오픈 소스 가상화 기술이다.
Firecracker는 하드웨어 가상화 기술이 제공하는 보안 및 격리 속성과 컨테이너의 속도 및 유연성을 결합한 microVM이라고하는 경량 가상 머신에서 워크로드를 실행한다.

Firecracker 특징

경량 가상화 (Lightweight Virtualization)
일반적인 VM보다 빠르게 부팅 (125ms 이하)
메모리 오버헤드가 낮음 (~5MB)
컨테이너보다 보안성이 높고, 기존 VM보다 가벼움
보안성 (Security)
Jailer를 이용한 격리 환경 제공
네트워크 및 디스크 I/O 보안을 위한 Virtio 기반의 장치만 지원
최소한의 기능만 제공하여 공격 표면을 줄임
고성능 (Performance)
수천 개의 MicroVM을 단일 호스트에서 실행 가능
AWS Lambda, AWS Fargate에서 활용
컨테이너와 VM의 장점 결합
VM 수준의 격리와 컨테이너 수준의 빠른 실행

Firecracker 주요 활용 사례

AWS Lambda : 서버리스 함수 실행 환경에서 사용
AWS Fargate : 컨테이너 실행을 위한 보안 VM 환경 제공
CI/CD 환경 : 빠른 프로비저닝과 격리된 빌드 실행
멀티 테넌트 환경 : 여러 사용자를 위한 안전한 실행 환경 제공

Firecracker 구성 요소

MicroVM: 경량 가상 머신
Jailer: 프로세스 격리를 위한 샌드박싱 도구
Virtio 장치: 최소한의 가상화된 네트워크 및 디스크 I/O 지원
REST API: VM을 관리하기 위한 인터페이스

Fargate가 Firecracker를 사용하는 이유

Fargate가 Firecracker 기반인 이유는 보안, 성능, 확장성의 세 가지 핵심 요건을 충족하기 위해서입니다.

1. 보안 (Security)

Fargate는 멀티 테넌트 환경에서 실행되므로, 하나의 물리적 서버에서 여러 사용자의 컨테이너가 동시에 실행됨.
Firecracker는 VM 수준의 격리를 제공하여, 한 사용자의 컨테이너가 다른 사용자의 컨테이너를 침범하지 않도록 보호.

2. 성능 (Performance)

기존의 VM 기반 환경은 부팅 속도가 느리고 리소스 사용량이 많음.
Firecracker는 125ms 이내에 부팅 가능하고, 실행 오버헤드가 적어 성능이 뛰어남.
기존의 가상화 솔루션보다 더 적은 메모리와 CPU를 사용하면서도, 컨테이너 수준의 빠른 실행을 제공.
서버리스 워크로드에서 중요한 "빠른 프로비저닝 및 확장"이 가능.

3. 확장성 (Scalability)

Fargate는 AWS의 서버리스 컨테이너 서비스로, 사용자 요청에 따라 빠르게 컨테이너를 시작하고 종료해야 함.
Firecracker는 수천 개의 MicroVM을 하나의 호스트에서 실행 가능하여, 고밀도 실행을 지원.
AWS Lambda에서도 Firecracker를 활용하여 대규모 서버리스 환경을 효율적으로 운영.

Fargate + Firecracker의 구조

1.
사용자가 Fargate를 통해 컨테이너 실행 요청을 보냄.
2.
AWS 내부에서 Firecracker 기반 MicroVM이 생성됨.
3.
Firecracker는 해당 MicroVM에서 컨테이너를 실행.
4.
컨테이너가 종료되면 Firecracker MicroVM도 제거됨.
왜 Fargate에 생성된 컨테이너의 IP와 Fargate의 IP는 1대1 매칭이되는지
AWS Fargate에서 생성된 컨테이너의 IP와 Fargate의 IP가 1:1로 매칭되는 이유Firecracker 기반의 MicroVM 네트워크 구조AWS의 ENI(Elastic Network Interface) 할당 방식 때문입니다.

1. Firecracker는 컨테이너를 MicroVM 내에서 실행

Fargate에서 컨테이너는 Firecracker 기반 MicroVM에서 동작함.
MicroVM 자체가 독립적인 네트워크 인터페이스를 가지며, 컨테이너는 MicroVM 내부에서 실행됨
따라서, MicroVM의 IP = 컨테이너의 IP가 동일하게 매핑됨.

2. ENI (Elastic Network Interface) 독립 할당

Fargate는 각 컨테이너에 AWS VPC의 ENI를 직접 연결함.
일반적인 EC2 기반의 컨테이너 환경에서는 여러 개의 컨테이너가 하나의 ENI를 공유하지만, Fargate는 컨테이너당 1개의 ENI를 할당하여, 각 컨테이너가 독립적인 IP를 가짐.

3. 보안 강화 (Security Isolation)

Fargate는 멀티 테넌트 환경이므로, 컨테이너 간 네트워크 격리가 중요함.
만약 여러 컨테이너가 같은 ENI를 공유하면, 컨테이너 간 네트워크 침범이 가능할 수 있음.
각 컨테이너가 개별 ENI를 사용하면 보안 격리가 강화됨.
ENI Trunking Mode
ENI Trunking Mode는 AWS Fargate에서 단일 ENI(Elastic Network Interface)에 여러 개의 가상 네트워크 인터페이스(VNIs)를 연결하여 더 많은 컨테이너를 실행할 수 있도록 하는 네트워크 최적화 기능입니다.
기본적으로 Fargate는 컨테이너마다 ENI를 1:1로 할당하지만, ENI Trunking Mode를 사용하면 단일 ENI에 여러 개의 컨테이너를 연결할 수 있음으로써, IP 주소 할당 효율을 높이고 성능을 향상시킵니다.

사용하는 이유

1. 더 많은 컨테이너 실행 가능

기본적으로 AWS VPC에서 하나의 EC2 인스턴스에 할당할 수 있는 ENI 수에는 제한이 있음.
ENI Trunking을 사용하면 하나의 ENI에 여러 개의 컨테이너를 연결할 수 있으므로, 더 많은 Fargate 컨테이너를 실행할 수 있음.

2. IP 주소 공간 절약

기본 1:1 ENI 할당 방식에서는 컨테이너마다 하나의 IP 주소를 소비하므로, IP 주소가 빠르게 소진됨.
Trunking Mode에서는 하나의 ENI 내에서 여러 개의 가상 인터페이스(VNIs)를 활용하므로, IP 주소를 보다 효율적으로 관리할 수 있음.

3. 비용 절감

Fargate에서 ENI를 개별적으로 할당하면 관리 오버헤드 및 리소스 사용량 증가로 비용이 상승할 수 있음.
ENI Trunking을 활용하면 필요한 ENI 수를 줄일 수 있어 비용 절감 효과가 있음.