본문 바로가기

분류 전체보기35

Terraform과 Shell Script를 통해 AWS 비용 절감하기 들어가기 전에 지난 6월부터 현재까지 소프트웨어 마에스트로 과정을 진행하면서 Kubernetes 기반 MLOps 서빙 플랫폼을 제작하고 있습니다. 핵심 목표로는 모델러가 Kubernetes, Backend 지식 없이 모델 버전 관리, 인퍼런스 서버 배포, A/B 테스트, 모니터링 등의 기능을 제공하는 것입니다. So1s Kubernetes 기반 MLOps 서빙 프레임워크 / 업스테이지 주관 SWM 벤처 프로젝트 - So1s github.com 저희 팀에서는 Kubernetes를 사용하기 위해서 클러스터를 사용할 수 있는 환경이 필요했습니다. 다행스럽게도 소프트웨어 마에스트로 측에서 AWS에 대한 비용을 일부 지원하고 있기 때문에 AWS EKS를 사용하기로 결정했습니다. 겪었던 문제점 단일 클러스터 사용으.. 2022. 11. 5.
HPA와 Metrics Server HPA 일반적으로 Deployment나 Statefulset 같은 워크로드를 사용하면 레플리카 수를 지정하여 가용성 있게 운영할 수 있게 해 준다. 그러나 레플리카 수를 과도하게 지정하여 리소스 낭비를 하는 경우가 발생하고 반대로 서비스에 과부하가 걸려 지정한 레플리카 수로 처리하기 벅찬 경우가 발생한다. 그래서 쿠버네티스에서는 워크로드 내에서 발생하는 메트릭 값을 기준으로 레플리카 수를 동적으로 조정하는 기능인 HPA를 제공하고 있다. HPA는 K8s에서 워크로드에 대한 부하가 발생하면 워크로드에 해당하는 파드의 개수를 수요에 맞게 늘려준다. 특징 HPA는 간헐적으로 컨트롤 루프 형태로 구현. → 기본적으로 15초마다 지정된 워크로드의 리소스를 확인한다. 주기적으로 scaleTargetRef에 정의된 .. 2022. 10. 10.
Helm hooks을 사용하여 Namespace에 istio-injection label 설정하기 문제점 Istio를 사용하려면 Istio 환경 설치 외에도 Istio(Envoy) Proxy를 각각의 파드에 Sidecar에 주입해서 사용해야 한다. Sidecar를 주입하기 위해서는 다양한 방법이 존재하는데 일반적으로 Namespace에 istio-injection=enabled 라벨을 추가하여 자동으로 Sidecar를 주입하는 방법이 있다. 파드를 생성하는 워크로드에도 라벨을 추가하여 파드가 생성할 때 사이드카를 자동으로 주입하도록 할 수 있다. 그러나 Helm을 통해 작성된 여러 차트 같은 경우에는 네임스페이스를 “생성”만 해주는 기능만 있을 뿐 위 같은 커스텀 라벨을 붙일 수 없다. 그렇다고 Namespace를 Helm Chart에 넣자니 해당 릴리스가 삭제되면 해당 네임스페이스에 있는 릴리스 외.. 2022. 9. 25.
Infrastructure Provisioning Tool, Terraform 과거 인프라 관리 과거에는 대부분의 인프라 관리를 온프레미스로 진행했다. 네트워크, 컴퓨팅, 냉각 설비 등의 인프라 리소스를 모두 구매하여 데이터 센터에 위치시키고 OS를 설치하거나 어플리케이션 구동에 맞게 설정하는 등의 복잡한 수동적인 절차가 필요했다. 인프라 관리에는 다음과 같은 문제가 발생했다. 각 인프라 분야의 엔지니어를 고용하는 비용과 서로 다른 분야의 인프라 엔지니어들이 소통하는 비용이 크게 발생했다. 갑작스럽게 인프라 리소스가 필요지면 해당 인프라를 데이터 센터까지 가져오고 환경 설정하는 작업이 오래 걸렸고 심지어 회사의 규모가 커질수록 여러 부서의 승인 절차까지 기다려야 하기 때문에 서비스 수요에 맞춰 빠르게 대응할 수 없었다. 인프라 성능에 대한 모니터링이 어려웠다. 인프라 단에 장애가 .. 2022. 9. 18.