안녕하세요🙂 DEVOCEAN YOUNG 2기 6조 DEVSHIP 팀의 정경륜입니다!
오늘은 5월 테크 세미나 후기를 적어보려 합니다.
동아리에서 개발한 서비스의 서버 비용이 한 달 만에 10만원이 나와서 이 비용을 어떻게 줄일지 고민하고 있었는데 마침 이번 테크 세미나 주제가 “클라우드 비용 최적화”여서 흥미롭게 들었습니다! (저희 서비스는 DB가 비용의 대부분을…🥲)
SKT에서는 SKT 망 관리를 지원해 주는 통합 시스템을 TANGO라 하고 있고 이를 AWS에 올려서 관리를 하고 있다고 합니다. 대부분의 회사들과 마찬가지로 SKT에서도 TANGO를 세 가지의 계정으로 나눠서 관리를 하고 있습니다.
이 중에서 Prd 서버는 상시 돌아가야 하기에 이를 제외한 dev와 stg 서버는 사용하지 않는 시간대에 리소스를 꺼서 비용 최적화를 실현했다는 점이 인상 깊었습니다. 평일 새벽 시간과 주말에는 리소스를 사용하지 않았고, 이러한 미사용 시간대엔 아예 RDS와 EC2를 off 하여 리소스 비용을 최적화했다고 합니다.
저희 동아리에서도 AWS를 사용하여 배포 및 개발 서버를 운용 중인데 강연에서 말씀해 주신 대로 개발 서버의 off time엔 RDS와 EC2를 off 하는 방법을 적용해 봐야겠다는 생각이 들었습니다!
EKS란 Amazon Elastic Kubernetes Service로 AWS에서 제공하는 k8s 서비스입니다. EKS를 사용해 본 적은 아직 없고 로컬에서 multipass로 k3s 클러스터를 구성하여 사용해 본 경험뿐이지만 클라우드에서 k8s를 사용할 때 어떤 식으로 비용 최적화를 할 수 있는지 배워볼 수 있어서 좋았습니다! 가장 관심이 갔던 부분을 꼽는다면 kube-downscaler를 사용하여 auto stop & start를 사용하는 것과 kubecost를 활용하는 부분입니다. 하나씩 간단하게 살펴보겠습니다.
불필요한 시간대 개발/검증 환경 EKS 리소스 최소화하기 위해 새벽 시간에 EKS Pod를 0으로 만드는 것을 kube-downscaler를 통해 적용했다고 합니다. 앞서 살펴본 RDS나 EC2를 새벽 시간엔 off 하는 것과 동일한 관점에서 나온 방법인 것 같습니다.
kube-downscaler는 이름에서도 알 수 있듯이 미리 설정해둔 조건에 충족하면 해당하는 pod를 scale down 시킵니다.
Pod의 최소 리소스를 정의하는 requests를 너무 크게 잡으면 불필요한 비용을 낭비하게 되고 그렇다고 너무 적게 잡으면 CPU 성능 한계로 인한 throttling이 일어나거나 메모리가 부족해 OOM Killed가 발생하기도 하는 문제점이 있습니다. 그렇기 때문에 적절한 requests를 설정하는 것이 중요합니다. 그래서 requests 대비 Pod의 CPU, Memory가 얼마나 사용되고 있는지, Node의 예약되지 않은 CPU, Memory 가 얼마나 있는지 잘 측정하고 kubecost를 활용하여 이 부분을 비용 최적화할 수 있다고 합니다.
Kubernetes 최적화를 위한 다양한 정보를 제공하는 툴로 Container의 CPU, Memory Request뿐만 아니라 PV, Network, Worker Node 등 거의 모든 Kubernetes Resource 비용 최적화 insight를 제공합니다.
사실 로컬에서 학습용으로 k8s를 사용할 땐 resource에 대해선 크게 신경을 안 쓰고 잡았었는데 비용 최적화를 위해서라도 낭비되거나 부족하지 않게 설정해 주는 것이 중요하다는 것을 배울 수 있었습니다. SKT에서 비용 최적화를 위해서 어떤 노력을 하고 계신지 엿볼 수 있어서 도움이 많이 되었습니다! 좋은 테크 세미나를 준비해 주신 두 강연자 분과 데보션께 감사드립니다 :)
이번 테크 세미나는 아래의 링크에서 다시 보실 수 있습니다.
DEVOCEAN 5월 테크 세미나 다시보기
학부생 입장에서 서버 비용을 고민할 일이 많지는 않아, 더욱 신선한 시각으로 주제를 바라볼 수 있었습니다. 기업 차원 혹은 동아리 차원에서 큰 프로젝트를 진행하게 된다면 참고할 만한 실무적인 지식을 많이 배워갈 수 있었던 것 같아요. 실제로 SKT에서 문제점을 마주했을 때 어떠한 방향성을 잡고 해결점을 찾아나가는지에 대한 전반적인 인사이트도 얻을 수 있었습니다. 좋은 강연 감사합니다 :)
서비스를 서버에 무료 기간 동안만 사용하고 장기간 동안 올려본 적이 없어서 비용에 대해서는 생각해 보지 못했었는데, 실제 서비스를 배포한다면 서버에 대한 비용도 만만치 않다는 것을 알게 되었습니다. 그리고 이것을 줄이기 위해 어떤 방법들이 있는지에 대해 자세하게 알려주셔서 새롭게 알게 되어 유익한 시간이었습니다.
홍보, 운영을 목적으로 동아리용 홈페이지를 내부적으로 자체 개발해서 운영하려고 하고 있는데 대기업은 물론이고 스타트업에서만큼의 서버 비용이 부담되지는 않아서 크게 고려해 보지 못했지만 앞으로 이를 고려해 봐야겠다는 생각이 들었습니다.