Info
25년 1월 작업 내용을 간단히 요약한 글입니다.
문제 상황
회사의 일부 리소스가 배포되지 않는 이슈가 있었습니다.
해당 리소스는 비용 절감을 위해 리소스를 최소한만 일반 인스턴스를 사용하고 나머지는 Spot(스팟) 인스턴스를 사용하는 것을 의도했지만, 실제 설정은 그렇지 않았습니다.
문제 원인
인스턴스를 배치하는 코드는 다음과 같았습니다.
some_task = self.client.run_task(
# ...
capacityProviderStrategy=[
{
"capacityProvider": "FARGATE_SPOT",
"weight": 1,
},
{
"capacityProvider": "FARGATE",
},
],
)
여기서 weight
의 기본값은 0이며, FARGATE_SPOT
에만 weight
값을 주었기 때문에
의도와 다르게 모든 리소스가 Spot 인스턴스로 띄워졌습니다.
마침 해당 리전의 Spot 인스턴스 제한이 걸렸기 때문에 리소스가 배포되지 않았던 것으로 판단됩니다.
해결 방법
확인해 본 결과 관련해서 AWS에서 공식적으로 제공하는 Fallback 기능은 없는 것으로 보이며, 필요할 경우 직접 구현해야 합니다. 직접 구현한 예시 2가지는 다음과 같습니다.
하지만 당장은 이것을 구현할 수 없었기 때문에, 일단은 Spot 인스턴스를 사용하지 않도록 설정하여 문제를 해결했습니다.