Fly.io에서 하드/소프트 동시성 한도 설정하기
Fly.io의 Machine은 트래픽에 따라 자동으로 생성되지 않지만, 생성된 Machine은 유휴 상태일 때 중지했다가(비용 절감) 부하가 오면 즉시 다시 시작할 수 있어요. autostart/autostop 기능을 제대로 사용하려면 soft_limit과 hard_limit을 잘 조정해야 합니다. 이 페이지에서는 동시성 한도를 측정·설정하는 방법과 용량 계획 예시를 다룹니다.
출처: 문서
본문
개요
Fly.io에서는 트래픽에 따라 머신이 자동으로 생성되지 않아요. 여러분이 직접 생성합니다. 하지만 일단 생성된 머신은 유휴 상태일 때 중지될 수 있고(즉 비용을 내지 않는 상태), 부하가 다시 몰리면 즉시 다시 시작됩니다. 우리의 "autostart/autostop" 기능이 이 과정을 대신 처리해 주지만, soft_limit과 hard_limit을 올바르게 조정했을 때만 잘 작동해요. 이 한도 값들은 Fly가 언제 머신이 너무 바빠서 추가 머신을 투입해야 하는지를 판단하는 기준이 됩니다.
동시성 한도 조정 방법
Fly Machines의 소프트/하드 한도는 어렵게 느껴질 필요가 없어요. 간단히 설명할게요.
- hard_limit: 머신이 처리할 최대 동시 요청 수.
- soft_limit: Fly가 추가 머신을 시작하기 전까지 머신이 편안하게 처리할 수 있는 요청 수. 들어오는 요청은 시작된 머신들에 라운드로빈 방식으로 분산됩니다.
이 값을 가장 잘 맞추는 방법은 실제로 테스트하는 거예요. 확장하려는 대상 앱을 기준으로 동일한 머신 설정을 가진 별도의 Fly 앱 복사본을 만드세요. 그런 다음 두 한도를 터무니없이 높게(예: 1000) 설정하고 wrk, hey, ab, Locust, k6 같은 도구로 부하를 가해 보세요. CPU, 메모리, 레이턴시를 관찰합니다.
여러분이 찾아야 하는 지점은 응답 속도가 편안함 기준치 아래로 느려지기 시작하는 지점이에요. 그것이 바로 하드 한도입니다 — 그 기준치 바로 아래. 편안함의 수준은 여러분의 몫이에요. 실시간 애플리케이션은 응답을 100ms 아래로 유지하고 싶을 테고, 일반적인 CRUD 애플리케이션은 요청 시간이 250ms 정도여도 괜찮을 수 있습니다.
이제 소프트 한도를 설정하세요. 소프트 한도는 사용자가 지연을 느끼기 전에 프록시가 다른 머신을 온라인 상태로 만들 시간을 주는 역할을 해요. 예: 20개의 동시 요청에서 응답이 느려지기 시작한다면 hard_limit: 18, soft_limit: 12로 설정하세요.
한도를 잘 조정했다면 auto_start_machines와 auto_stop_machines를 켜서, 설정한 경계를 존중하면서도 손이 덜 가는 확장 동작을 얻을 수 있어요. 앱이 스파이크를 처리하기 위해 관리자의 손길을 필요로 해서는 안 되고, 의도한 것보다 많은 머신을 실행하게 되어서도 안 됩니다. 탄력성과 통제 사이의 좋은 균형이에요.
용량 계획: 실제 예시
이런 경우를 가정해 봅시다.
- 각 요청을 서비스하는 데 약 ~100ms가 걸립니다.
- 초당 750개의 요청을 예상합니다.
- 한 머신이 느려지기 전에 약 10개의 동시 요청을 처리합니다.
그렇다면 처리 속도를 유지하려면 75개의 동시 요청 슬롯이 필요해요. 즉: 750 rps * 100ms = 75 동시 요청. 머신당 10개라면 8개의 머신이 필요합니다.
요청이 도착하는 대로 서비스하려면(즉 초당 750개를 분산 처리) 요청당 평균 처리 시간이 100ms이므로 75개의 "worker"(처리되는 동시 요청)가 필요해요. 위 머신 용량(10개 요청)을 기준으로 보면 8개의 머신이 제안된 부하를 처리할 수 있을 거예요.
관련 자료
- 동시성 설정 가이드라인
fly.toml에서 사용할soft_limit,hard_limit,type설정에 대한 자세한 내용은 이 레퍼런스를 읽어 보세요. - 앱 설정:
http_service.concurrencyfly.toml설정 레퍼런스에서 동시성 파라미터를 설명하는 이 섹션을 확인해 보세요. - Fly.io에서 로드 밸런싱 동시성 한도가 Fly Proxy가 머신들 사이에 트래픽을 라우팅하는 방식에 어떤 영향을 주는지, 그리고 소프트/하드 한도가 왜 중요한지 알아보세요.