아키텍쳐/Cloud

수제 FinOps - Trusted Advisor

gnidoc 2023. 8. 8. 18:59
반응형

https://gnidoc.tistory.com/entry/%EC%88%98%EC%A0%9C-FinOps-NAT%ED%8E%B8

 

수제 FinOps - NAT편

2023.07.14 - [개발스터디&모임/커뮤니티] - 수제 FinOps - Lambda편 수제 FinOps - Lambda편 https://www.meetup.com/ko-KR/awskrug/events/294199401/ Login to Meetup | Meetup Not a Meetup member yet? Log in and find groups that host online or in

gnidoc.tistory.com

위 글에서 이어집니다


Trusted Advisor란?

AWS 모범 사례를 따르는 데 도움이 되는 권장 사항을 제공해주는 서비스인데
리소스를 정기적으로 스캔해서 최적화하고 보안 및 성능을 개선해서 비용을 절감시킬 수 있는 서비스 중 하나입니다

아래 링크처럼 AWS에서는 주기적으로 매번 비용 절감할 수 있는 방법을 소개하지만
사실 귀찮아서 지키지 않는 항목들에 대해서
Trusted Advisor가 알아서 스캔해서 콘솔에 정리해서 보여준다는겁니다

https://aws.amazon.com/ko/blogs/korea/10-things-you-can-do-today-to-reduce-aws-costs/

 

AWS 비용을 줄일 수 있는 10가지 기법 | Amazon Web Services

AWS에서 제공하는 광범위한 서비스 및 요금 선택 옵션은 여러분의 인프라 비용을 효과적으로 관리하고 비즈니스 요구 사항에 따라 성능과 용량을 유지할 수 있는 유연성을 제공합니다. AWS 비용

aws.amazon.com

무려 공짜로 말이죠

 

저는 Trusted Advisor에 아무것도 안뜨는데요?

물론 무료라곤 했지만 모든 계정에 대해서 다 공짜로 해주는건 아니고 Support Plan에 따라서 적용되는 항목이 다릅니다

https://docs.aws.amazon.com/ko_kr/awssupport/latest/user/trusted-advisor-check-reference.html

 

AWS Trusted Advisor 참조 확인 - AWS Support

이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.

docs.aws.amazon.com

어차피 링크 안들어가보실 것 같으니 필요한 부분만 스크린샷으로 떠왔습니다
아래 이미지처럼 Basic ~ Developer Plan은 일부 항목만 제공해주기 때문에 개인 계정에서는 별 내용이 안나오긴합니다

제 개인계정도 이렇게 뜨거든요

DB 같은걸 안써서 그래도 0개는 좀 너무한거 아닌가...

하지만 저희 회사 계정은 Enterprise Support Plan이기도 하고
사용하는 리소스가 많기 때문에 요렇게 조치해볼만한 내용이 뜹니다

개발용 계정인데 월 200만원이나 절약할 수 있다는 사실!

 

제공되는 항목

일단 Trusted Advisor는 크게 5가지의 항목으로 나눠집니다
이 중에서 FinOps 랑 관련 없는것도 같이 한번 쓱 보면 아래와 같습니다

항목 설명 예시
비용 최적화 EBS, Lambda(오류율), EC2, RDS 등등
성능 EBS, Lambda, EC2, EFS에 대한 최적화
(과소, 과대 사용하는 리소스)
보안 지원 종료 버전, 스냅샷, 권한, 보안그룹 등등
내결함성 Multi AZ(이중화),
DB 백업(RDS, ElastiCache), S3 로깅
서비스 한도 계정 내 리소스가 서비스 한도에 도달하거나
도달할 가능성이 있는 경우

더 자세한 항목은 아래 링크에서 보실 수 있습니다

https://docs.aws.amazon.com/ko_kr/awssupport/latest/user/trusted-advisor-check-reference.html

 

AWS Trusted Advisor 참조 확인 - AWS Support

이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.

docs.aws.amazon.com

 

비용 최적화 톺아보기

글의 주제는 FinOps니깐 비용 최적화 항목만 톺아보면
일단 세부적인 검사 내용은 아래 링크를 보시면 좋을거 같네요

https://docs.aws.amazon.com/ko_kr/awssupport/latest/user/cost-optimization-checks.html

 

비용 최적화 - AWS Support

해당 검사의 결과는 매일 여러 번 자동으로 새로 고쳐지며 새로 고침 요청은 허용되지 않습니다. 변경 사항이 표시되는 데 몇 시간이 걸릴 수도 있습니다. 현재 이 검사에서 리소스를 제외할 수

docs.aws.amazon.com

이 중에서 가장 비용을 많이 절감할 수 있는 포인트는 바로 
EC2, RDS, ElastiCache, OpenSearch, Lambda, EBS, ELB 입니다
네 사실 모두 절감 포인트긴합니다 ㅎ

하지만 여기서 중요한건 유휴 자원과 프로비저닝 최적화에 대해서 제공을 해준다는 점입니다
하나씩 정리해서 보자면

1. 낮은 사용률의 리소스 검사

주로 많이 검출되는 종류 중 하나인 낮은 사용률입니다.
검사되는 기준은 아래와 같습니다

서비스명 기준
EC2 14일 중 4일 이상 
인스턴스의 일일 평균 CPU 사용률이 10% 이하 네트워크 I/O가 5MB 이하
RDS 7일단 연결되지 않음
Lambda CloudWatch를 참고해서 알아서 판단
(알아서 적절한 메모리 크기를 제안해줌)
Elastic IP(EIP) EC2나 NAT 등에 연결되지 않음
EBS 볼륨에 연결되지 않거나 7일간 하루에 1 IOPS 미만인 경우
ELB 활성/정상 상태의 타겟 그룹 없음
7일간 요청이 하루에 100개 미만인 경우

여기서 RDS, EC2의 대부분은 검출되는 이유가
최대 트래픽을 버티기 위해서 최대 크기의 타입을 사용해서 그런 경우가 많은데
개인적인 경험상 1년에 1~2번 발생할까 말까인데 그 상황 조차도 1~2시간인 경우가 많았습니다

그렇다고 장애포인트을 안고 가자는건 아니고
단순하게 auto scaling 으로도 커버할 수 있는 상황도 눈에 보였는데
귀찮아서 방치하시는 경우도 종종 보긴했었습니다

물론 말은 이렇게 하면서 저희팀 계정도 크게 다르진 않습니다
(퇴근하면 서버 끄고 가세요)

개발용도의 EC2들

2. 프로비저닝 최적화

이게 참 애매한 경우가 많은데요
AWS가 알아서 이제까지 리소스 사용량을 보고 리소스 크기를 추천해주는겁니다
일단 과소/과대 프로비저닝에 대한 검사되는 서비스는 아래와 같습니다

서비스명 기준(CloudWatch 지표)
EBS IOPS, 처리량

Lamdba 과도한 실행 시간 초과, 높은 오류율
(7일 중 호출의 10% 이상이 timeout이거나 error)
메모리 크기에 대한 과다 프로비저닝

Lambda의 경우엔 사례가 있어서 스크린샷을 하나 가져와봤습니다
그냥 메모리를 기본값인 128MB 으로 쓰고 있었는데 너무 적게 할당했다고 하네요

평소엔 잘되던데...(바꾸기 귀찮)


다만 알아서 추천해주다보니 이게 문제가
EBS는 처음에 너무 적게 할당해버리면 나중에 mount하기 귀찮은데 비용도 사실 얼마 안되서 크게 잡는 경우가 많습니다
단순히 1TB 유지하는데 겨우 $91 = 10만원 정도거든요

https://aws.amazon.com/ko/ebs/pricing/

보통 SSD 수명은 5~10년을 잡지만
고가용성을 위해서 RAID로 구성한다면 수명이 극단적으로 짧아지게 됩니다
특히 API서버처럼 로그 파일이 양산하는 서버라면 쓰기 작업이 많아서 더 짧아질텐데
disk 100%가 되서 서버가 죽거나 데이터 유실해보신 경험을 가지신분들은
월 10만원이 결코 비싸지 않다는걸 아실겁니다 ㅎ
(물론 그런걸 감안해도 비싸다라고 하긴합니다 ㅋㅋ)

물론 SK하이닉스 SDD가격으로 비교해보면 EBS 1TB 1달 비용이 1개 값이긴 합니다 ㅎㅎ...
(이렇게 보니 또 EBS가 비싸긴 비싸네요)

어 분명 몇 년전에 15만원주고 샀는데...

그리고 Lambda도 메모리를 줄일 수 없는 이유는 1번에서 나왔던 내용과 같죠.
구현된 기능의 예상되는 최대치의 메모리를 잡아둬야하거든요

예를 들어서 주로 엑셀로 내보내기 기능을 많이 넣죠?
근데 그 엑셀 데이터가 1GB가 넘는다면...?
EC2에서 처리하나 Lambda에서 처리하나 어쨋든 예상되는 데이터 사이즈만큼의 메모리는 확보되어야합니다
물론 100MB씩 나눠서 파일 여러개로 받게할수도 있지만
요건이 그렇게 정리 안될때가 많죠 ㅎㅎ;;

다 안된다고 하는 이유가 있는건데...

아무튼 프로비저닝 최적화 부분은 참 좋지만 적용하기에는 애매한 친구입니다
그래서 이 부분은 필수가 아닌 권장 사항으로 나옵니다

3. 예약 인스턴트(RI, Savings Plan)

마지막은 가장 예측이 안되면서 잘못하면 돈날리기 좋은 부분인 예약 인스턴스입니다.
다만 통합 결제에 연결된 계정에서는 이 항목을 볼 수가 없어서
Enterprise Support Plan인분들은 오히려 볼 일이 없긴한데
아무튼 Trusted Advisor에서 제공해주는 RI 최적화 서비스는 아래와 같습니다

  • EC2
  • ElastiCache
  • OpenSearch(ElasticSearch)
  • RDS
  • Redshift

모두 30일동안 온디맨드 사용량을 분석해서 최적화된 RI 값을 추천해줍니다만
사실 참고 자료로만 쓰기 좋긴합니다

왜냐면
이미 Trusted Advisor에서 RI를 걱정하고 계신다면
이미 어느정도 규모의 리소스를 사용하시고
이미 어느정도 규모의 회사이실텐데
1달에 1번씩 Trusted Advisor에 나오는걸 그대로 믿고 1~3년치를 냉큼 살 순 없죠

RI는 당연히 기간과 할인율은 비례하기 때문에
아래처럼 주로 많이 쓰는 m타입만 봐도 1년과 3년 간의 할인율 차이가 18%나 납니다

https://aws.amazon.com/ko/savingsplans/compute-pricing/

만약에 할인율에 눈이 돌아가서 3년짜리를 샀다가
내년에 서비스를 종료해야되거나 사용자가 줄어서 구매한 서버가 남는다면 매우 큰 손해가 발생합니다

그리고 매달마다 사는것도 스트레스죠
흔히 대기업에서는 서버 1대 사려면 최소 3개월은 걸린다고 할 정도인데
완전 소유하는것도 아니고 "임대"하는걸로 "선결제"로 구매하겠다...?
게다가 1달 비용이 그냥 서버 1대 구매하는 비용인데...?
....정말 많은 설득이 필요합니다
그래서 보통 많아야 1년에 1~2번 정도만 구매를 하죠

물론 회사에서 돈 많이 벌때 RI 3년짜리로 땡겨두면 남은 2년이 편해지긴 합니다
특히 달러 환율 낮을때 미리 구매해두면 왠지 추가 할인받는 느낌(?)도 나고
이번 코로나때처럼 경기가 많이 위험할때 남들과 다르게 방탕(?)하게 서버를 쓸 수 있죠

암튼 뭐 그렇기 때문에 참고 자료 정도로 좋다는거였습니다

 

결론

Trusted Advisor 자체로 직접적인 비용 절감한 경우는 잘없지만
잘안쓰거나 남용하는 리소스에 대해서 모니터링이 가능하다

반응형