초보 개발자

[데보션 영] 5월 테크 세미나 후기 본문

기타 활동

[데보션 영] 5월 테크 세미나 후기

mandudu 2023. 6. 7. 17:27

안녕하세요, 데보션 영 2기로 활동 중인 10조 YOUNG WAVE의 오수영, 강경아입니다.

이번 세미나에서는 클라우드 비용 최적화에 대해 어떤 방식으로 클라우드 비용을 최적화하는지 실제로 어떻게 작동하고 운영되는지 자세하게 알 수 있었습니다!

AWS, GCP, 네이버 클라우드 플랫폼과 같은 서비스를 사용하면서 항상 비용에 대한 걱정과 궁금증이 있었는데, 이번 세미나를 통해 비용 최적화에 대해 배우고, 리소스르 더 효율적으로 사용하는 방법에 대해 생각할 수 있었습니다 ㅎㅎ

AWS 최적화

SKT 망 관리를 지원해주는 통합 시스템에서는 AWS 계정을 다양한 목적으로 나눠 사용하는데,

신규 기능 개발 및 테스트에 필요한 인프라를 개별로 생성하는 Dev account

인프라와 데이터 처리를 구성하는 Stg account 에서

EC2, RDS 를 많이 사용한다는 사실을 알게 되었습니다. 그리고 이러한 리소스를 미사용 시간대에 최적화할 방안에 대해 고민하셨다고 합니다.

세미나에서 소개된 실제 클라우드 비용 최적화를 위한 Auto Stop & Start 를 지원하는 과정은 다음과 같았습니다.

Schedule 은 Period의 집합인데 weekdays, weekends 시간대를 설정하여 AWS DynamoDB에 저장시키면,

이것을 람다가 가져와서 Schdule 이름과 동일한 Tag가 할당된 인스턴스를 조건에 맞게 상태를 변경시키는 방식으로 작동합니다.

이러한 자동화는 모든 Cloud 리소스에 대한 변경 관리가 Code 기반으로 이루어져서 비용 최적화에 대한 니즈를 바로 적용시킬 수 있었다고 하셨습니다.

또한 다른 계정 ID 를 전달받아 그 계정의 인스턴스도 관리할 수 있다는 점과 Slack Notification 을 통해 자동화 동작 상태를 확인할 수 있다는 점에서 활용성이 높아 큰 장점으로 다가왔던 것 같습니다.


이를 통해 여러 인스턴스를 다양한 주기로 관리를 햠으로써 플랫폼화 할 수 있다는 것 이 이번 클라우드 비용 최적화에서 가장 인상 깊었던 부분이었습니다.

K8S 최적화

이번 세미나의 두번째 세션에서는 Kubernetes 비용 최적화에 대해 자세하게 알 수 있었습니다.
요즘 관심있던 Kubernetes에 대해서 비용을 최적화할 방안을 알 수 있어 너무 흥미로웠던 시간입니다!

K8S 최적화에 대해서는 크게 두 가지의 방법을 말씀해 주셨습니다.
첫번째는 불필요한 리소스를 최소화하여 비용을 줄이는 방법,
두번째는 최신 기술 및 가격 정책을 잘 적용하여 가성비를 향상하는 방법이었습니다.


먼저 불필요한 EKS 리소스를 최소화하는 방법을 정리해보자면,

1. Auto Scaling

Auto Scaling은 Node와 Pod 단위에서 적용할 수 있고, 각 단위별로 조금 더 자세히 설명을 진행해주셨습니다.

1.1 Pod의 auto scailing

Pod는 HPA와 VPA중 하나를 사용할 수 있다고 말씀하며,
HPA와 VPA에 대한 간략한 설명과 함께 HPA를 추천해 주셨습니다.

1.2 Node의 auto scailing

이 부분이 auto scaling에서 가장 중요하다고 합니다.
CA와 Karpenter를 적용할 수 있으며 CA가 기본적인 기능을 제공하지만,
Karpenter는 조금 더 advanced한 기능들을 쓰고 싶을 때 적용하면 좋다고 추천해 주셨습니다.
하지만 Karpenter는 나온 지 얼마 되지 않아 레퍼런스가 부족하다고 하니 상황에 맞는 auto scaler를 선택하시면 좋을 것 같습니다!


2.EKS Auto Stop & Start

Auto Stop & Start는 사용하지 않는 시점에는 scale down하거나 pause하는 기능으로, Kube-downscaler를 잘 쓰면 적용할 수 있습니다.
그러나 Kube-downscaler는 Pod를 scale-down하므로, 위에서 설명한 Node auto scaling을 필수적으로 적용해야 비용이 절감될 수 있고 효과는 약 35~44%의 비용이 절감된다고 합니다.
그러나 이를 위해서는 고려해야 할 사항들이 몇 가지 있는데, 예외적인 Workload를 고려해야 한다고 합니다. 예를 들면 kube-scaler, kube-system 등과 같은 pod 등은 꺼지면 안 되므로 예외로 설정을 해주어야 합니다.
혼자서 직접 설정하려면 어려웠겠지만, 세미나에서 설치 및 파라미터 설정 등과 같은 세세한 부분도 알려주셔 쉽게 따라할 수 있을 것 같습니다.


3.Right Sizing

앞에서는 이미 존재하는 Pod와 Node들을 어떻게 줄일 것인가에 대한 고민이었다면 이번 Right Sizing은 Pod와 Node의 기본 Size를 어떻게 정할 것인지에 대한 내용이었습니다.

3.1 Pod의 Size

Pod의 yaml file에서 requests 부분이 비용과 관련이 큰데, 이는 Pod의 최소 사이즈를 지정해주는 부분입니다.
이를 적정하게 지정해주기 위하여 VPA Recommender와 Kubecost Request Sizing Recommendation, 이 두 종류를 설명해 주셨는데 현재 부서에서는 Kubecost를 적용하고 있다고 언급해 주셨습니다.

3.2 Node의 Size

Node의 사이즈는 group별로 적절한 Instance Type을 선택하는 것이 중요하다고 하며, Type을 선택할 때 고려할 점에 대해 자세히 알려주셨습니다.
또한, Kubecost에 cluster sizing recommendation이 있으니 사용하는 것도 좋을 것 같습니다.



다음은 가성비를 향상할 수 있는 방안에 대해 말씀해 주셨습니다.

먼저 최신 기술로 지속적으로 업데이트하며, 비용을 절감하는 방법이 중요하다고 합니다.
예를 들어 docker에서 containerd로 기술을 바꾸며 약 12%의 비용이 절감되었다고 하며, 최신 Instance Family들을 잘 적용하는 것도 중요하다고 합니다.

다음은 AWS의 가격정책을 잘 활용하는 것입니다.
RI & Saving Plan 같은 약정할인을 적용하는 것이 도움이 될 수 있습니다. 그러나 비용이 절감되어도 유연성이 떨어지는 단점이 있으므로 상황에 맞게 고려한 후 적용하는 것이 좋다고 생각합니다.

마지막으로 가성비 좋은 Instance Type인 Spot Instance, Burst Instance를 사용하는 것입니다. 그러나 안정성과 성능 측면에서 기존 instance보다 떨어질 수 있으니 이를 잘 고려해야 한다고 언급해 주셨습니다.

후기

EC2, RDS, MSK, DMS의 동작 방식을 최적화와 연관지어 배우면서 더 고민해볼 수 있었던 시간이었고, Kubernetes의 비용을 어떻게 줄일 수 있을지 다양한 방면에서 알아볼 수 있었던 시간이었습니다.

클라우드에 대한 깊은 지식이 거의 전무한 상태에서 듣게 된 세미나였는데도 불구하고, 기술에 대해 차근차근 설명해 주셔서 이해하기 쉬웠던 것 같습니다.

특히, 이번 세미나에서 Auto Scaling과 Auto Stop&Start을 적용했을 때 실제로 35%의 비용이 절감될 수 있다는 부분이 가장 기억에 남습니다.
세미나에서 설치 방법은 물론 파라미터 설정까지 상세하게 설명해주셔 다음에 kubernetes 환경을 구축할 때 다시 돌려보며 따라해보는 것도 좋을 것 같습니다. ㅎㅎ

세미나를 진행해 주신 분들과 좋은 세미나를 들을 수 있게 자리를 마련해 준 데보션에게 감사 인사를 전하며 저희 조의 5월 세미나 후기를 마치겠습니다!