빠른 VM 부팅을 위한 API, Fly Machines

Engineer Edlin·2022년 9월 17일
0

Tech Talk

목록 보기
2/9
post-thumbnail

Fly.io 의 포스팅을 번역하였습니다.
이 포스팅을 읽으신 뒤, 일전에 정리한 AWS Serverless Snippet 를 읽으시면 더 쉽게 Serverless의 의미에 대해 이해하실 수 있습니다.
잘못된 내용이 있다면 알려주세요! 바로 반영하겠습니다!


0. 들어가기에 앞서

Slogan: Start machines close to your users

  • Fly 는 물리적 서버가 돌아가는 VM(Virtual Machine) 안의 가상 docker 이미지를 REST API로 설치, 부팅해주는 API 이다.
  • VM을 빠르게 부팅하기 위해서 REST API를 개발하였고 이 API를 이용하여 클라우드 위 서버를 동작시킬 수 있다.
    ▶ 즉, Fly Machines은 Http Request로 한 인스턴스를 약 300ms의 속도로 부팅할 수 있는 것이다.
  • 빠른 VM 부팅은 infrastructure latency를 줄여준다. (부팅 시간 감소로 인한 빠른 서비스 접근 및 제공 가능)
  • Fly Proxy를 두어 VM 머신들을 빠르게 부팅할 수 있고 idle 상태에 빠지면 VM을 강제 종료시킬 수 있다.

    ❓ Proxy란?

    • 클라이언트와 서버 중간에 위치하면서, 클라이언트와 서버의 대리로서 중계 기능을 한다.
    • 프록시 서버는 클라이언트 입장에서는 마치 서버의 역할을, 서버의 입장에서는 마치 클라이언트처러 동작한다.
    • 프록시 서버는 원격 서버에 접속하여 데이터를 가져올 필요 없이 캐시를 두어 빠르게 클라이언트의 요청에 응답가능한 서버이다.
  • 또한, Fly Machine은 하나의 VM으로서 오래된 이미지를 파괴시키고 새로운 VM을 운영할 수 있도록 지원한다.

    Scale-out(트래픽 대응을 위해 여러 대의 값싼 서버를 늘리는 것)은 상대적으로 Scale-down보다 쉽다. Scale-down 할 때, 네트워크 설정 등 연관 정보를 다시 세팅하는 것이 훨씬 어려운 작업이다. 따라서 이를 쉽게 지원하는 Fly Machines은 매력적일 수 밖에 없다.


1. Function-as-a-Service (FaaS)

  • 개발자가 자체 인프라를 유지할 필요 없이 user code를 패키징하여 빌드, 실행, 관리할 수 있도록 해주는 클라우드 컴퓨팅 서비스이다.
  • infrastructure(기반구조)를 유지할 필요 없이 API를 이용하여 클라우드에 존재하는 기반구조를 빌드하고, 실행하고, 관리할 수 있도록 돕는다.
  • Serverless computing 을 의미한다.

    Serverless Computing 이란? AWS EC2와 Lambda의 차이는?
    Serverless Computing이란, 인프라를 걱정하지 않고 클라우드의 자원을 이용하여 코드를 작성하고 배포하는 것이다. Serverless Computing을 위해 FaaS를 사용하여 API 호출 같은 독립적으로 실행하는 간단한 기능 및 동작을 지시할 수 있다. EC2가 서버의 세팅이 필요한 Serverless Computing이라면, Lambda의 경우 함수로 필요 자원 및 서버 세팅이 가능한 Serverless Computing이다. EC2는 인스턴스 추가를 통해 확장이 가능하다면, Lambda는 인스턴스 추가 없이도 요청량에 따른 유연한 서버 증설이 가능하다. EC2에서는 따로 서버 관리가 필요하다면, Lambda는 FaaS로서 별도의 서버 관리가 필요하지 않고 클라우드에 있는 서버를 실행시킬 수 있는 것이다.


2. Fly의 동작 방법

  • 여기서 host란 각 지역에서 운영중인 cloud server를 의미한다.
  • 빠른 응답을 보낸 host를 선택하면 API 요청을 통해 해당 host에 어떤 spec의 VM을 설치해달라고 명령할 수 있다.
  • 설치 후 호스트에 API 요청을 HTTP request를 통해 보내면 host는 응답을 통해 서버를 부팅할 수 있다.
  • 지금 현재 부산에 있는 클라이언트가 일본에 있는 서버를 동작시키고 싶을 때, 클라우드가 존재하는 Central Server에 부팅 요청을 보내고 응답을 받는 것이 아니라, 가까운 서버에 해당 VM을 실행시킬 수 있어 빠르게 부팅 가능하다.
  • 즉, 어느 위치에 있든 가까운 클라우드 서버에 HTTP 요청을 보내 실행할 수 있는 것이다.
profile
담대하게 도전하고 기꺼이 실패를 받아들이는 개발자

0개의 댓글