여는 말
안녕하세요. SK텔레콤 최준승입니다. 오늘은 연재 마지막 회차입니다. 연초에 벌려 놓은 일들을 매달 한 번씩 수습하다 보니 어느새 끝이 오긴 왔네요. 1회차부터 9회차까지는 매 회차의 주제가 있었고 해당 주제를 벗어나지 않는 것들만 취해서 글(그림)을 쓰다 보니 사실 힘든 점도 많았는데요. 오늘은 그런 제약에서 벗어나 숲을 보는 마음으로 조금은 자유로운 톤으로 그동안 했던 이야기들을 복습해 보도록 하겠습니다.
그동안 무슨 이야기를 했나
올해 연재는 크게 프롤로그-본론-에필로그 순서로 진행했고요. 프롤로그에서는 콘텐츠의 전체적인 방향성과 함께 클라우드 비용의 기본 특성을 알아봤습니다. 본론에서는 6회차에 걸쳐서 각 영역(컴퓨팅/스토리지/네트워크)의 단가와 사용량을 최적화하는 법을 구체적으로 소개했고요. 에필로그에서는 이전 회차의 내용을 다른 관점으로 재구성해 보고 비용 최적화의 핵심을 최종 정리하면서 연재를 마무리하려고 합니다.
제가 이번 콘텐츠를 기획할 때 가장 중요하게 생각했던 포인트는 "독자가 비용 최적화에 최대한 구조적으로 접근할 수 있도록" 만드는 것이었습니다. 그래서 처음부터 최적화 영역을 기계적으로 구분(컴퓨팅-단가, 네트워크-사용량 등) 하고 각 범주 안에서 다양한 최적화 방법론을 다루고자 했습니다. 개별 방법론은 CSP와 상관없이 공통 적용할 수 있는 것으로 추상화하되 이해를 돕기 위한 사례는 부득이하게 AWS 기준으로 작성했습니다.
제 기획 의도가 제대로 전달되었다면 여러분은 이제 클라우드 환경의 과금 구조가 어떻고 어떤 전략을 통해 비용을 최적화할 수 있는지를 이해할 수 있게 되었습니다. 각 최적화 방법론이 단위 비용의 어떤 변수(단가, 사용량)를 조정하는 전략인지는 알게 되었지만 그 전략을 구체적으로 어떻게 적용할지는 좀 더 공부가 필요한 상황입니다.
최적화 영역을 구분해서 보는 것은 이론을 학습할 때에는 효과적인 방법이었으나 현실의 실전은 역시 달랐습니다. 실제 최적화 전략을 계획하고 반영하는 일은 특정 영역에 국한되지 않는 복합적이고 난해한 성격의 작업이었기 때문입니다. 이 영역까지 커버하려면 기존 관점과 다른 새로운 무언가가 필요할 듯한데요. 다음 장에서는 그동안 각 회차의 주제에 부합하지 못해 언급하지 못했던 이야기들을 모아서 해보도록 하겠습니다.
그동안 못 다한 이야기
이번 장에서는 비용 최적화와 관련된 이야기들을 특정 주제 없이 풀어 보겠습니다. 실제 최적화 작업을 수행하는 과정에서 고민해 볼만한 포인트들을 보충하는 개념으로 보시면 되고요. 아이디어 차원이기 때문에 지나치게 구체적인 예시는 지양하겠습니다.
첫 번째는 2가지 이상의 서비스 요금을 복합적으로 고려해야 하는 경우입니다. 클라우드 환경의 서비스 자원들은 다른 서비스 자원과 상호작용이 비교적 빈번하기 때문에 각 서비스 요금의 유불리를 함께 고민해야 합니다. 예를 들어 AWS의 Lambda 함수에서 S3에 저장된 데이터를 읽어 들인 후 프로세싱 하는 로직이 있고, 데이터를 읽는 시간이 전체 실행 시간의 80%를 차지한다고 가정해 봅시다. 이때 Lambda 서비스는 함수의 실행 시간 기반으로 과금하기 때문에 S3의 저장 계층을 express one zone으로 바꿔서(=읽기 시간을 최소화) "Lambda 비용의 감소폭"과 "S3 비용의 증가폭"의 유불리를 비교할 수 있습니다.
특정 서비스의 사용 여부가 다른 서비스의 과금 정책에 영향을 주는 경우도 있습니다. 예를 들어 AWS의 Shield 서비스에서 Advanced 등급을 사용할 경우 과금 정책상 (기존에는 과금하던) AWS WAF의 일부 항목을 부과하지 않습니다. 물론 이것이 Shield Advanced에서 추가되는 비용을 상쇄할 수준은 아니지만 전체 비용을 새로 산정하거나 AWS WAF의 신규 도입을 검토하는 상황에서는 유용한 정보일 수 있습니다.
두 번째는 "대체 서비스를 고려하기"입니다. 클라우드 환경에서는 같은 역할을 하는 모듈을 다양한 방식으로 구현할 수 있습니다. 필요한 애플리케이션을 서버 노드에 직접 올려서 구성할 수도 있고 클라우드가 제공하는 관리형 서비스를 활용할 수도 있습니다. 관리형 서비스 내에서도 다양한 유형의 자원을 선택적으로 활용할 수도 있습니다. 다른 기능/비기능 요소들을 모두 충족한다는 가정 하에 비용을 감안하여 대체 서비스를 고려할 수 있습니다.
예를 들어 AWS의 Lambda@Edge에서 처리하던 프로세싱이 비교적 단순한 로직이라면 CloudFront Function으로 전환을 검토할 수 있습니다. CloudFront Function은 Lambda@Edge에 비해 기능상 제약사항이 많지만 과금 정책상 Duration에 비용을 부과하지 않고 Invocation 단가도 Lambda@Edge에 비해 저렴합니다. 동일 트래픽 패턴에서 로드 밸런서 유형도 비용에 영향을 끼칠 수 있습니다. AWS 환경에서 로드 밸런서를 구성하는데 L7 계층의 제어가 필요하지 않다면, Application LB보다 Network LB가 비용 측면에서 유리할 수 있습니다. 물론 앞서 언급했던 것처럼 다른 전제조건을 충족한다는 가정하에, 서비스를 선택하는 또 다른 기준으로 비용을 참조할 수 있습니다.
세 번째는 "서비스별 무과금 조건을 감안하기"입니다. 여기서 "서비스별 무과금 조건"은 AWS의 Free Tier 같이 맛보기 사용량 개념을 지칭하는 것은 아니고요. Free Tier에서 제공하는 무료 사용량은 실제 프로덕션 환경에서는 매우 미미한 수준이기 때문에 전체 비용에 큰 영향을 주지 않습니다. 위에서 말한 무과금 조건의 의미는 각 서비스별로 1) 과금 조건에 해당되지 않거나 2) 사용량은 집계하나 단가를 0으로 적용하는 특수 케이스를 지칭합니다. 예를 들어 CloudTrail 서비스에서 관리 이벤트 수집은 1벌까지는 과금을 하지 않고요. RDS 서비스에서는 프로비저닝한 스토리지 크기만큼의 백업 공간을 무료로 활용할 수 있습니다. Aurora 서비스는 자동 백업에서 설정한 Retention Period 기간 내 수동 백업본에 대해서 과금을 하지 않습니다.
위와 같이 서비스별 무과금 조건에 해당하는지(또는 해당하지 않는지) 여부는 전체 비용에 큰 영향을 끼치는 경우가 많습니다. 왜냐하면 보통 CSP에서 서비스별 과금 정책을 설계할 때 "일반 사용 패턴에서 발생하는 기본 사용량"을 무과금 조건의 임계점으로 설정해 놓았기 때문입니다. 해당 임계점을 초과한다는 것은 일반적인 사용 패턴에 벗어난다는 뜻이고, 여기에 해당하는 자원의 수가 많아졌을 때 전체 비용은 비례해서 증가하게 됩니다.
네 번째는 "서비스 요금 외의 부대 비용 고려하기"입니다. 여기서 부대 비용이란 CSP의 순수 서비스 사용료를 제외한 기타 비용을 통칭합니다. 예를 들어 CSP의 Support Program 요금이 될 수도 있고 MSP의 운영 대행 요금이 될 수도 있습니다. BYO(Bring Your Own) 형태의 라이선스 요금이 될 수도 있습니다. 결국 이 모든 요금의 합계가 하나의 워크로드를 운영하는데 소요되는 총비용이기 때문에, CSP 사용료 외의 부대 비용을 최적화할 요소가 없는지도 주기적으로 살펴볼 필요가 있습니다.
위 4가지 새로운 관점을 소개한 이유는 비용 최적화 작업을 진행할 때는 다양한 관점이 필요하기 때문입니다. 때로는 미시적으로 서비스의 단가와 사용량을 최적화하는 시점이 있고, 때로는 거시적으로 대체 서비스를 고려하거나 부대 비용을 최적화하는 시점이 있습니다. 그리고 이런 관점의 전환은 사용자 환경의 특수성에 따라 또는 FinOps 수준의 성숙도에 따라 각기 다른 빈도로 반복될 수 있습니다.
결국 무엇이 핵심인가
그렇다면 클라우드 비용 최적화 여정에서 가장 중요한 핵심은 무엇일까요? 제가 생각하는 3가지 핵심 포인트를 정리하면서 마무리하도록 하겠습니다.
첫 번째, "효과가 나오는 영역을 빠르게 계량하고 판단" 하는 것이 가장 중요합니다. 즉, 어떤 개선사항을 가정하고 그것을 적용했을 때 어느 수준의 비용 효과가 있는지를 "미리" 예측할 수 있어야 합니다. 그리고 여기서 개선사항의 디테일은 단순 Action Item이 아니라 "어떤 자원을 대상대상 할 것이냐"를 포함해야 합니다. 이를 통해 최적화 활동의 우선순위를 정하고, 적용 후 효과를 측정하고, 예측값과의 대조를 통해 잔여 작업의 기준점을 수립할 수 있습니다.
두 번째, CSP의 최신 과금 정책에 귀 기울여야 합니다. 결국 클라우드라는 잡화상에서 요금표를 만들고 적용하는 주체는 CSP입니다. 사용자는 그 요금표에 대응하여 사용량을 조정하고 가성비를 개선하는 작업을 반복해야 합니다. 또한 주기적으로 변경되는 과금 정책을 모니터링하고 비용 영향도를 평가할 수 있어야 합니다. 서비스별 과금 정책 외에도 AWS CUR 같은 빌링 데이터 포맷이 바뀌는 경우도 있는데요. 이 또한 변경된 원본 데이터 포맷에 따라 분석 템플릿을 업데이트해서 관리해야 합니다.
세 번째, 모든 기술적 의사결정에 비용 요소가 함께 고려되어야 합니다. 어찌 보면 당연한 말인데요. 성능이나 보안같이 우선순위가 더 높은 것들을 먼저 고려하다 보면 비용 지표는 후순위로 미뤄지는 경우가 많습니다. 하지만 클라우드 비용에 대한 통제 능력이 어느 정도 궤도에 오르고 나면 이 비용 요소를 다른 기준점(성능/보안/운영 등)과 동시에 저울질할 수 있는 시점이 옵니다. 다른 말로 cost-aware culture가 정착되는 셈입니다. 해당 문화를 바탕으로 비용 요소가 잘 가꿔진 밭(?)의 효과는 긴 시간에 걸쳐 지속됩니다.
마치며
마칠 시간입니다. 제가 1년간 글을 작성하면서 글감 재료를 모아놓은 메모장이 하나 있는데요. 여기에 문득 눈에 띄는 영어 문구가 몇 개 보여서 붙여 넣습니다.
만약 여러분이 클라우드 비용 최적화와 맞물려서 이 문장의 뜻을 해석하실 수 있다면 제가 이번 연재에서 계획했던 목적을 달성했다고 말할 수 있을 것 같습니다. 결국 비용 최적화라는 활동은 각자의 환경에 맞는 정답을 단계적으로 완성해가는 여정입니다. 이는 비용을 단숨에 최적화해준다는 솔루션들이 해답이 될 수 없는 이유이기도 합니다.
연재를 마무리하면서 연초에 계획했던 목표를 달성했는지를 평가해 보면 저는 잘 모르겠습니다. 하나의 주제로 전체적인 흐름을 만들어 가면서 글과 그림을 채워 넣는 일은 개인적으로는 꽤 흥미로운 경험이었습니다. 전체적인 톤을 유지하기 위해 버려진 내용들도 많아서 좀 아쉽지만 이는 독자분들의 다양한 경험과 지식으로 채워졌을 거라 믿습니다.
개인적으로 이런 밀도로 웹에 게시하는 콘텐츠를 만드는 일은 이번이 마지막이 될 것 같다는 예감이 듭니다. 참고로 동일한 주제로 좀 더 내용을 좀 보강해서 2025년 초에 발간될 도서를 기획 중이긴 한데 완성이 될 수 있을지 모르겠네요. 여하튼 지금까지 비용 최적화 로드맵과 함께 해 주신 독자 여러분들께 진심으로 감사드리고요. 관련 주제로 궁금증이 있다면 아래 이메일 주소로 연락을 주셔도 좋습니다. 그럼 마칩니다. 끝!
▶ 더 읽어보기
- 클라우드 비용 최적화 로드맵 #1 - 연재를 시작하며
- 클라우드 비용 최적화 로드맵 #2 - 비용을 자세히 보기 위한 준비
- 클라우드 비용 최적화 로드맵 #3 - 컴퓨팅의 단가를 최적화하는 법
- 클라우드 비용 최적화 로드맵 #4 - 스토리지의 단가를 최적화하는 법
- 클라우드 비용 최적화 로드맵 #5 - 네트워크의 단가를 최적화하는 법
- 클라우드 비용 최적화 로드맵 #6 - 컴퓨팅의 사용량을 최적화하는 법
- 클라우드 비용 최적화 로드맵 #7 - 스토리지의 사용량을 최적화하는 법
- 클라우드 비용 최적화 로드맵 #8 - 네트워크의 사용량을 최적화하는 법
- 클라우드 비용 최적화 로드맵 #9 - FinOps 성숙 모델 5단계 따라가기
▶ 최준승 님 / Cloud Architect 팀 / jsch@sk.com
'What's New' 카테고리의 다른 글
클라우드 비용 최적화 로드맵 #9 - FinOps 성숙 모델 5단계 따라가기 (2) | 2024.12.24 |
---|---|
클라우드 비용 최적화 로드맵 #8 - 네트워크의 사용량을 최적화하는 법 (0) | 2024.12.17 |
클라우드 비용 최적화 로드맵 #7 - 스토리지의 사용량을 최적화하는 법 (1) | 2024.12.11 |
클라우드 비용 최적화 로드맵 #6 - 컴퓨팅의 사용량을 최적화하는 법 (0) | 2024.10.17 |
클라우드 비용 최적화 로드맵 #5 - 네트워크의 단가를 최적화하는 법 (4) | 2024.10.10 |