서론

EKS를 알아보던 중 EKS Fargate에서 사용하는 Firecracker을 우선 조사해보기로 했다. Firecracker는 AWS lambda, EKS 등에서 사용하는 경량화 VM 기반 가상화 기술이다.

 

경량화 VM 가상화가 필요한 이유

Lambda는 여러 고객의 코드를 같은 물리 서버 위에서 실행하는데, 고객마다 올리는 코드는 신뢰할 수 없으므로 각 함수는 보안적으로 완전히 분리되어야 한다. 이는 도커와 같은 컨테이너 기술로는 구현할 수 없다. EKS 를 Fargate 모드(Pod 단위로 서버리스처럼 사용)로 사용할 경우 비슷한 보안상의 이유로 보다 커널수준 격리가 필요한다. Firecracker는 VM을 이용해 커널까지 격리되는 완전한 운영체제 수준의 격리를 제공하면서도 성능 저하를 최소화할 수 있다.

Firecracker 가 가벼운 이유

커널까지 격리하는데도 속도가 느리지 않은 이유는 복잡한 하드웨어 에뮬레이션 없기 때문. 

전통적인 VM은 컴퓨터 시스템 전체를 가상화하는 것이 목적이었지만, 그렇지 않다면 생략하여 최소한의 장치(Virtio)만 제공할 수 있음

  • Virtio는 가상 머신 환경에서 표준화된 가상 디바이스 인터페이스로, 실제 하드웨어 대신 커널이 직접 입출력을 다뤄주는 방식

KVM

Firecracker는 KVM(커널 기반 가상화) 위에서 동작함.

KVM은 리눅스 커널에 내장된 하이퍼바이저 기능으로, 하드웨어 가상화 지원을 이용해서 VM을 돌리는 엔진

 

EKS와 Firecracker

EKS 모드

  • EC2 모드: EC2 인스턴스 안에서 컨테이너를 띄움
  • Fargate 모드: 파드 단위로 서버리스처럼 동작함. Firecracker 사용해서 파드를 MicroVM 위에서 띄움

참고

https://www.youtube.com/watch?v=BIRv2FnHJAg

https://firecracker-microvm.github.io/

+ Recent posts