Fargate
•
서버리스 컨테이너 서비스
•
서버 프로비저닝, 패치 적용, 클러스터 용량 관리 또는 인프라 관리를 AWS에서 자동으로 수행
•
ECS 또는 EKS 와 연동되는 서비스
•
ECS와 EKS 모두 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 수를 줄일 수 있어 비용 절감 효과가 있음.

