Firecracker

Firecracker

Firecracker 기반 경량 가상화 ⚡


1️⃣ Firecracker란? 🔥

📌 Firecracker는 AWS에서 개발한 경량 가상화(VMM, Virtual Machine Monitor) 솔루션으로,
서버리스 및 컨테이너 워크로드를 위한 초경량 가상 머신(MicroVM) 실행을 지원합니다.

🔹 Firecracker의 주요 특징

특징 설명
경량화 일반적인 VM보다 가벼운 MicroVM을 실행
빠른 부팅 125ms 이하의 부팅 속도
보안 강화 KVM 기반으로 프로세스 격리 지원
리소스 효율성 최소한의 메모리와 CPU 리소스 사용

📌 Firecracker 개념 아키텍처
Firecracker Architecture
(출처: AWS)

Firecracker는 AWS Lambda와 AWS Fargate에서 실제 사용되는 기술입니다!


2️⃣ Docker와 Firecracker 비교 🆚

🔹 Firecracker vs. Docker 차이점

항목 Firecracker Docker (containerd 기반)
격리 수준 KVM 기반 경량 VM 네임스페이스 & cgroups
부팅 속도 125ms 이하 즉시 실행 가능
리소스 사용량 더 적음 (경량 VM) 더 많음 (컨테이너 런타임)
보안성 하이퍼바이저 격리로 강화됨 프로세스 기반 격리
유즈 케이스 서버리스, 멀티테넌트 환경 일반적인 컨테이너 운영

📌 Firecracker는 Docker와 유사하지만 더 높은 보안성을 제공하는 경량 VM 기술입니다.


3️⃣ Firecracker 설치 및 사용법 💻

1. Firecracker 바이너리 다운로드

📌 Firecracker 공식 바이너리 다운로드

curl -LOJ https://github.com/firecracker-microvm/firecracker/releases/latest/download/firecracker-x86_64
chmod +x firecracker-x86_64

📌 firecracker 실행 확인

./firecracker-x86_64 --version

2. Firecracker 네트워크 설정

📌 TAP 네트워크 인터페이스 생성

ip tuntap add tap0 mode tap
ip link set tap0 up

📌 브리지 네트워크 설정

brctl addbr br0
brctl addif br0 tap0
ip link set br0 up

4️⃣ Firecracker로 컨테이너 실행하기 🚀

1. MicroVM 부팅을 위한 설정 파일 생성

📌 MicroVM 설정 파일(vm-config.json) 생성

{
  "boot-source": {
    "kernel_image_path": "./vmlinux",
    "boot_args": "console=ttyS0 reboot=k panic=1 pci=off"
  },
  "drives": [
    {
      "drive_id": "rootfs",
      "path_on_host": "./rootfs.ext4",
      "is_root_device": true,
      "is_read_only": false
    }
  ],
  "network-interfaces": [
    {
      "iface_id": "eth0",
      "guest_mac": "AA:FC:00:00:01:01",
      "host_dev_name": "tap0"
    }
  ],
  "machine-config": {
    "vcpu_count": 2,
    "mem_size_mib": 512
  }
}

2. Firecracker MicroVM 실행

📌 Firecracker 실행 및 VM 시작

./firecracker-x86_64 --api-sock /tmp/firecracker.socket

📌 MicroVM 생성 요청 보내기

curl --unix-socket /tmp/firecracker.socket -i \
    -X PUT "http://localhost/boot-source" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -d "@vm-config.json"

📌 MicroVM 상태 확인

curl --unix-socket /tmp/firecracker.socket -i \
    -X GET "http://localhost/machine-config"

결론 🎯

Firecracker는 Docker보다 더 가벼운 경량 VM을 제공
KVM 기반으로 높은 보안성을 유지하면서 빠른 부팅 속도를 가짐
AWS Lambda 및 Fargate에서 사용되는 기술로 서버리스 환경에 최적화
Docker와 비교하여 격리 수준이 더 높아 보안성이 강화됨

📌 추가 학습 리소스

RSS Feed