AI 스타트업의 클라우드 코스트 최적화
인프라 구성
: 거의 모든 서비스를 EKS위에서 운영
: 대부분의 비용 최적화는 EKS 리소스 관리 차원에서 이루어짐
: 노드는 모드 EC2 인스턴스를 사용 (서버리스는 사용하지 않음)
Kapenter를 이용한 스팟 인스턴스 최적화
: AWS에서 제공하는 저렴한 EC2 스팟 인스턴스와 클라우드 제공자 중립적인 쿠버네티스 노드 스케일러 Kapenter를 이용
- Kapenter의 장점
: 노드 스케일 아웃이 필요한 상황에서 최적의 인스턴스 타입을 찾아 프로비저닝
: 파드에 필요한 요구사항 등을 이해하여 알맞은 인스턴스를 프로비저닝
ML 모델을 위한 Karpenter와 스팟 인스턴스
: GPU 인스턴스 부족 문제를 해결하기 위해 쿠버네티스 설정에 nodeSelector 대신 nodeAffinity를 지정하여 preference만 설정
: 느린 파드 프로비저닝 속도를 해결하기 위해 온디맨드용 Deployment와 스팟용 Deployment를 분리하여 운영
: 온디맨드 Deployment는 최소 리소스를 항상 보장하여 서비스의 가용성을 개선시켜주며, 템플릿으로 관리하기 때문에 Deployment 관리 리소스가 두배로 들지는 앟음
KEDA를 이용한 자린고비 파드 오토스케일링
: MS에서 Azure Function을 팔기위해 만든 오픈소스 파드 오토스케일러인 KEDA의 프로메테우스 연동 기능을 활용
Istio를 이용한 Locality Load Balancing
: Availability Zone 간 네트워크 전송 비용을 줄이기 위해 Istio의 Locaility Load Balancing으로 같은 Availiability zone, 같은 리전을 선호하도록 설정
Descheduler를 이용한 리소스 Bin-Packing
: 노드에 할당된 파드를 제거하여 놀고 있는 노드를 비워지게 하여 노드를 Fit하게 프로비저닝 할 수 있도록 개선
Reference
AI 스타트업의 Cloud Cost Optimization
높은 정확도의 음성인식 AI는 정말 많은 서버 리소스를 요구합니다. 리턴제로에서 운영하고 있는 서비스들의 트래픽만 고려하더라도 안일하게 운영했다간 감당할 수 없는 비용을 떠안게됩니다.
medium.com