본문으로 바로가기 본문 바로가기
WIKI 기술 지식 베이스

Autostop/autostart Machines

원문 보기 위키 갱신

들어오는 요청에 따라 Fly Machines을 자동으로 중지하거나 시작(또는 일시 중지)하는 autostop/autostart 기능을 알려드릴게요. 이 기능을 잘 활용하면 피크 수요에 대응하면서도 불필요한 머신을 계속 돌리는 비용을 아낄 수 있습니다. 어떤 상황에 맞고, 어떻게 구성하고 권장하는 설정은 무엇인지 함께 살펴보아요.

출처: 문서

본문

앱이 추가 머신을 계속 실행하지 않고도 피크 수요에 대응할 수 있습니다. autostop/autostart를 사용해 들어오는 요청에 따라 기존 Machines를 자동으로 시작하고 중지하거나 일시 중지하세요. Fly Machines은 시작과 중지가 빠르며, stopped 또는 suspended 상태일 때 CPU와 RAM 비용이 부과되지 않습니다.

Fly Proxy autostop/autostart가 어떻게 동작하는지에 대한 모든 세부 사항을 확인하세요.

autostop/autostart를 사용해야 할 때

autostop/autostart는 변동성이 큰 워크로드를 가진 앱, 트래픽이 낮거나 간헐적인 소규모 앱, 그리고 요청을 지속적으로 받지 않는 대부분의 앱에 잘 맞습니다. 수요가 줄고 늘어남에 따라 autostop/autostart로 Fly Machines을 관리하면 리소스 사용량과 비용을 줄일 수 있습니다. 피크 부하를 처리하기 위해 과잉 머신을 실행할 필요가 전혀 없습니다. 필요한 머신 수만큼만 실행하고 비용을 지불하면 됩니다. 기본 지역에서 하나 이상의 머신을 계속 실행하도록 선택할 수도 있습니다.

autostop/autostart는 모든 워크로드에 맞는 것은 아닙니다. Fly Proxy의 중지 루프는 몇 분마다 실행되며 패스당 지역당 최대 한 대의 머신을 중지합니다. 일반 앱에는 괜찮지만, 단일 앱에서 수천 개의 머신을 실행한다면(예: 사용자별 개발 환경) 이 루프가 따라잡지 못할 수 있습니다. 그런 경우에는 동적 라우팅과 함께 사용자당 하나의 앱을 사용하거나, 유휴 상태일 때 앱 스스로 종료하도록 만드세요.

autostop/autostart 구성하기

autostop/autostart 설정은 앱 fly.toml 파일의 각 서비스의 일부입니다. \[\[services\]\] 또는 \[http\_service\] 문서에서 서비스 구성에 대한 세부 사항을 확인하세요. 사설 앱에 서비스를 추가할 수도 있습니다.

autostop/autostart 설정:

  • auto_stop_machines: 앱이 수 분간 유휴 상태일 때 Fly Proxy가 취해야 할 동작(있다면).
    • 옵션은 "off"(false와 동일), "stop"(true와 동일), 또는 "suspend"입니다.
    • "off"이면 Fly Proxy는 머신을 절대 중지하지 않습니다. "stop"이면 앱에 과잉 용량이 있을 때 Fly Proxy가 머신을 중지합니다. "suspend"이면 앱에 과잉 용량이 있을 때 Fly Proxy가 (가능하다면) 머신을 일시 중지합니다. suspended 상태에서 머신을 시작하는 것은 stopped 상태에서 시작하는 것보다 빠르지만, 알아두어야 할 몇 가지 주의사항이 있습니다.
  • auto_start_machines: Fly Proxy가 요청과 용량에 따라 머신을 자동으로 시작해야 하는지 여부.
  • min_machines_running: auto_stop_machines가 "stop" 또는 "suspend"로 설정되었을 때 기본 지역에서 계속 실행할 최소 머신 수.

구성 예시:

...
[[services]]
  internal_port = 8080
  protocol = "tcp"
  auto_stop_machines = "stop"
  auto_start_machines = true
  min_machines_running = 1
...

위 예시에서 Fly Proxy는 앱에 과잉 용량이 있을 때 머신을 자동으로 중지하고, 앱으로 가는 트래픽에 따라 필요할 때 다시 시작합니다. 트래픽이 없다면 앱은 결국 기본 지역에서 실행 중인 머신 하나로 줄어듭니다.

fly.toml 파일의 서비스에 대해 구성된 동시성 제한도 autostop/autostart가 동작하는 방식에 영향을 줍니다: Fly Proxy는 각 머신의 동시성 soft_limit 설정을 사용해 지역별 과잉 용량이 있는지 판단합니다.

autostop/autostart 구성 권장사항

일반적으로, 앱이 유휴 상태일 때 스스로 종료되지 않는 한, auto_stop_machines와 auto_start_machines를 둘 다 활성화하거나 둘 다 비활성화하도록 설정하는 것을 권장합니다. 절대 시작되지 않거나 절대 중지되지 않는 머신이 생기는 것을 피하기 위해서입니다. 예를 들어 auto_start_machines = false이고 auto_stop_machines = "stop"이면 Fly Proxy는 트래픽이 낮을 때 머신을 자동으로 중지하지만 다시 시작하지는 않습니다. 머신이 모두 또는 대부분 중지되면 앱에 대한 요청이 실패하기 시작할 수 있습니다.

실행 중인 최소 머신 수

기본 지역에서 항상 하나 이상의 머신을 실행하려면 min_machines_running을 1 이상으로 설정하세요. min_machines_running = 1이고 앱으로 가는 트래픽이 없다면, Fly Proxy는 결국 기본 지역에 머신 하나만 남을 때까지 머신을 중지합니다. min_machines_running은 auto_stop_machines를 "stop" 또는 "suspend"로 설정하지 않는 한 효과가 없습니다.

**`min_machines_running`:** 이 설정은 앱의 기본 지역에서만 지정된 최소 실행 머신 수를 유지합니다. 앱이 배포된 다른 지역에는 영향을 주지 않습니다. 여러 지역에서 최소 실행 머신을 유지해야 한다면 [`fly scale count`](/flyctl/cmd/fly_scale_count#main-content-start) 같은 다른 수단으로 별도로 관리해야 합니다.

실행 중인 최대 머신 수

"최대 실행 머신 수(maximum machines running)" 설정은 존재하지 않습니다. 최대 머신 수는 앱의 총 머신 수이기 때문입니다.

Fly Proxy autostop/autostart는 여러분을 대신해 머신을 생성하거나 파괴하지 않습니다. 최대 실행 머신 수는 실행 시, 또는 fly scale count나 fly machine clone을 사용해 앱에 생성된 머신 수입니다. 예를 들어 요청을 처리할 수 있는 최대 10개의 머신을 갖고 싶다면 앱에 머신 10개를 생성해야 합니다. 머신 수 스케일링에 대해 자세히 알아보세요.

모든 머신을 계속 실행하기

앱의 모든 머신을 계속 실행해야 한다면 auto_stop_machines를 "off"로, auto_start_machines를 false로 설정해 autostop/autostart를 완전히 끌 수 있습니다.

앱의 특정 수의 머신만 계속 실행하면 된다면 auto_stop_machines를 "suspend" 또는 "stop"으로, min_machines_running을 1 이상으로 설정할 수 있습니다. min_machines_running은 앱의 기본 지역에만 적용된다는 점에 유의하세요.

사설 앱

사설 네트워크에서 서비스가 구성되지 않은 앱에 대한 요청은 Fly Proxy를 통해 라우팅되지 않으므로 Fly Proxy가 머신을 자동으로 중지하거나 시작할 수 없습니다. 사설 앱에 Fly Proxy autostart/autostart를 사용하려면 서비스를 설정하고 Flycast 사설 IPv6 주소를 사용하세요. Flycast - Private Fly Proxy Services와 Autostop/autostart private apps를 참조하세요.

유휴 상태일 때 종료되는 앱

auto_stop_machines로 앱이 과잉 용량일 때 머신을 자동으로 중지 또는 일시 중지하도록 설정하는 것은, 앱이 일정 기간 비활성 상태 후 스스로 종료하지 않을 때의 대안이 될 수 있습니다. 앱이 이미 유휴 상태일 때 종료한다면 auto_start_machines = true와 auto_stop_machines = "off"를 설정해 Fly Proxy가 앱이 중지한 머신을 자동으로 다시 시작하게 할 수 있습니다.

앱에 사용자 지정 종료 프로세스를 원한다면 유휴 상태일 때 종료되도록 앱을 코딩할 수 있습니다.

몇 가지 예시:

Fly Postgres도 zero로 스케일링을 지원합니다.

기본 설정

기본값은 fly launch로 생성한 새 앱과 autostop/autostart 설정이 전혀 없는 앱에서 다릅니다.

fly launch로 생성한 앱

fly launch 명령으로 새 앱을 만들면 fly.toml의 기본 설정은 다음과 같습니다:

...
[http_service]
  internal_port = 8080
  force_https = true
  auto_stop_machines = "stop"
  auto_start_machines = true
  min_machines_running = 0
...

autostop/autostart 설정이 없는 앱

fly.toml에 autostop/autostart 설정을 명시적으로 지정하지 않는 앱의 경우, Fly Proxy는 필요할 때 중지된 머신을 자동으로 시작하지만 자동으로 중지하거나 일시 중지하지는 않습니다.

관련 주제

더 알아보기 (Learn more)