AWS 비용 최적화 – 1. 리디북스의 예약 인스턴스 활용 사례
AWS는 클라우드 컴퓨팅을 활용하여 인프라 운영 및 관리에 자원을 분산하지 않으면서도 최신 IT 기술을 골라 적용함으로써 고객이 실제 비즈니스 핵심 역량에만 집중할 수 있게 도와 드리고 있습니다. 빠른 속도로 시장의 요구에 맞게 움직일 수 있다는 장점 뿐만 아니라, 초기 투자 없이 사용한 만큼만 금액을 지불함으로써 얻는 비용 절감은 AWS 클라우드의 큰 이점 중 하나입니다.
대부분의 AWS 고객들은 초기에 클라우드로 이전 했거나 신규로 서비스를 개발해서 출시한 후에도 지속적인 비용 최적화 과정을 거침으로써 사용 비용을 지속적으로 절감할 뿐만 아니라, 이렇게 절감된 클라우드 비용을 새로운 서비스나 사업의 진입에 재투자하는 것을 많이 볼 수 있습니다. 이번 블로그 시리즈에서는 주요 AWS 고객사들이 어떻게 클라우드 비용을 관리하고 절감하고 있는지 살펴보고자 합니다.
Q. 안녕하세요? 간략하게 리디북스 먼저 소개해주시겠어요?
리디 주식회사(https://www.ridicorp.com)는 전자책 업계의 독보적인 선두 기업으로, 독서 경험의 확장을 선도하고 있습니다. 주요 서비스로는 양질의 도서를 무제한 감상할 수 있는 월정액제 서비스인 리디셀렉트(https://select.ridibooks.com)와 국내 최초 스마트폰 전자책 서비스인 리디북스(https://ridibooks.com)가 있습니다.
리디북스는 기존에 데이터 센터 2군데를 이용하고 있었는데, 서버가 수 백대 단위가 되니 하드웨어 오류에 대응하는 부담이 많이 높아졌습니다. 이를 대체하기 위해 클라우드를 적극적으로 검토하기 시작했고, 2017년 초부터 AWS를 사용하기 시작했습니다. 현재 워크로드의 종류를 구분하지 않고 AWS 인프라를 활용하고 있으며, 가급적 매니지드 서비스를 사용하려는 편입니다. 최근 사용내역을 확인해 보니 총 33개의 AWS 서비스를 사용 중이더라고요. 그 중 Amazon Relational Database Service(RDS), Amazon Simple Storage Service(S3), Amazon ElastiCache가 가장 큰 비중을 차지하고 있습니다.
Q. 클라우드 도입 후, 비용 관리에 어떤 어려움이 있으셨나요?
A. AWS를 처음 사용했을 때는 빠르게 서비스를 출시하고 필요할 때 언제든지 원하는 가상 서버(인스턴스)를 구성할 수 있다는 생각에 비용 보다는 서비스 아키텍처 구성에 초점을 맞추었습니다. 1년 후부터 리디북스의 비즈니스가 성장하면서 사용량이 빠르게 증가하였고 자연스럽게 비용에 대해 고민하고 있을 때 AWS 담당자께서 가장 빠르게 비용을 절감할 수 있는 예약 인스턴스(Reserved Instance, RI)를 비롯한 다양한 인스턴스 구매 옵션을 소개해 주셨습니다.
초기에 일반적으로 사용하는 온디맨드 방식 보다 훨씬 저렴하면서도, 일시적인 워크로드에 맞는 스팟(Spot) 방식 보다 좀 더 안정적으로 운영하면서 비용절감도 만들 수 있는 구매 옵션이라 적극적으로 검토하기 시작했습니다.
Q. 예약 인스턴스는 무엇인가요?
A. 예약 인스턴스(RI)는 1년 또는 3년 약정을 통해 온디맨드 요금과 비교하여 상당한 할인 혜택(최대 75%)을 제공하는 것입니다. 서버 자원에는 사업이 지속되는 동안에 필요한 필수 서버 자원과 오토 스케일링을 적용하더라도 24시간 서비스 해야하는 최소 서버 자원이 있는데, 이 경우 요금이 높은 온디맨드 보다 RI 구매가 유리하다고 판단하였습니다.
예약 인스턴스 구매 옵션도 약정 기간(1년 또는 3년), 결제 방식(전체 선결제, 부분 선결제, 선결제 없음), 그리고 사용 방식 (표준, 컨버터블, 예정 RI) 등 다양하게 있어서 선택적으로 사용할 수 있었습니다. 리디북스는 예약 인스턴스를 적용하고 나서 연간 비용의 약 15%~20% 정도를 절감할 수 있었습니다.
Q. 예약 인스턴스를 처음 적용하실 때 어려움은 없으셨나요?
A. 처음엔 전체 서버 자원 중에 몇 개를 RI로 구매해야하는지 감이 오지 않았습니다. 비용을 최적화 하기 위해 온디맨드와 RI를 어떤 비율로 설정해야 하는지 결정하기 어려웠습니다. AWS 관리 콘솔의 비용 영역에 있는 Trusted Advisor 기능도 비용 절감에 대한 권고를 해줍니다만 Cost Explorer의 RI 추천 기능을 가장 많이 참고했습니다.
실제 RI 구매 후에도 모니터링을 어떻게 해야하는지 감이 없었는데, 지금은 노하우가 생겨 구매한 RI 모두 100% 사용률을 달성하고 있고, RI 구매를 재고 관리와 비슷한 개념으로 접근 및 운용하고 있습니다. 하나의 RI가 소진(만료)되면 다시 하나를 채워 넣는(재구매하는) 식으로요.
<리디북스의 Cost Explorer: Reservation Utilization 리포트>
Q. 놀랍네요. 간략하게 전반적인 RI 구매 프로세스를 공유해 주실 수 있으실까요?
A. 리디북스에서는 팀별로 계정을 생성해서 사용하는데, 이 계정들을 하나의 루트 계정 밑으로 묶어 비용을 통합 관리하고 있습니다. RI 구매 역시 맨 위 루트 계정에서 일어납니다. RI 구매가 필요한 시점이 오면 가장 먼저 각 팀별로 수요 조사를 합니다. 인스턴스 유형(패밀리), 인스턴스 사이즈, 리전, 수량 등을 RI 관리용 스프레드시트에 직접 기재하도록 하죠. 이 작업이 끝나고 나면, 저희 팀에서 총 RI 구매량을 산정합니다.
AWS는 기본 테넌시가 포함된 Amazon Linux/Unix 플랫폼을 사용하는 리전 단위의 예약 인스턴스에 인스턴스 크기 유연성(Size Flexibility) 기능을 제공하고 있습니다. 그래서 해당 조건들만 충족하면 동일한 인스턴스 패밀리 안에서는 사이즈별로 RI를 구매하지 않아도 되기 때문에 RI를 구매하는 시간도 절약할 수가 있었습니다.
<리디북스의 RI 관리용 스프레드시트>
마지막으로 리디북스에서는 RI 할인율를 최대한 높이기 위해서 All Upfront(전체 선결제)나 Partial Upfront(부분 선결제) 구매 옵션을 사용하고 있습니다. RI는 구매하는 순간 결제가 되고 할인 혜택이 즉시 적용되기 때문에, 재무팀에게는 프로젝트 관리 협업 툴을 통해 RI 구매 전에 미리 알리고 있습니다.
Q. 그럼 각 팀별로 RI 에 대한 구매 방법에 대해 어떻게 공유하나요?
A. 리디북스에서는 신규 입사자나 기존 직원들도 참고할 수 있는 내부 위키를 만들어 전사적으로 공유하고 있습니다. RI 에 대한 개념과 구매 방법을 해당 위키를 활용해 주기적으로 업데이트하고 있습니다.
<리디북스의 사내 위키 – RI 부분 신청 방법 가이드 中>
Q. RI 구매 관련해서 다른 팀과도 협업을 굉장히 잘 하고 계신 것 같습니다. 비결이 있을까요?
무엇보다 각 팀이 주인 의식을 가지고 비용을 줄이기 위해 노력하는 것이 가장 중요할 것 같습니다. 한 예로, 저희 회사에서는 인스턴스를 런칭하기 위해 승인을 받거나 추가 프로세스를 거치지 않아도 됩니다. 저희 서비스가 마이크로 아키텍처를 추구하는 바와 같이, 비용 역시도 최대한 의존성을 줄이고 개개인에게 책임을 부여하고 있습니다. 비용도 마이크로 서비스로 돌리는 것! 그게 리디북스의 비용 절감 팁입니다.
리디북스는 계정을 통합해서 운영하고 있는데, 통합 계정에서 RI를 구매해서 사용하면 혹여나 RI 가 기존에 구매했던 계정에서 사용이 되지 않을 경우 타 계정으로 넘어가서 소진이 될 수 있습니다. 이 점을 최대한 활용하기 위해 각 팀에 가급적이면 범용성이 높은 인스턴스 패밀리를 사용해 줄 것을 권고하기도 합니다. 통합 계정에서 RI 활용 비율을 100%로 유지하려면 각 팀들의 협조가 반드시 필요한데 앞서 말한 각 팀의 주인 의식이 선행되지 않으면 달성하기 힘든 부분입니다.
Q. 그렇다면 실제 RI 구매 이후에 모니터링은 어떻게 하고 계신가요?
A. Cost Explorer(비용 탐색기)를 많이 활용하고 있습니다. 온디맨드와 RI 비율을 살펴보기 위해 RI Coverage 리포트를 보기도 하고, 실제 구매한 RI 의 활용률도 RI Utilization 리포트를 통해 확인하고 있습니다. 비용 탐색기상의 RI 활용율이 100%인데 추가로 RI를 구매하라는 추천이 뜬다면 추가 구매를 고려하기도 합니다.
<리디북스의 비용탐색기 – RI Coverage 리포트>
리디북스는 정기적으로 비용을 검토하는 매커니즘이 있습니다. 팀 별로 이번 달 비용이 얼만큼 나올 것 같은지, 예상했던 금액대로 실제 청구가 되었는지 등을 정기적으로 태스크를 부여해서 각 팀별 일정에 따라 진행하고 논의를 합니다.
이 때 추가적인 RI 구매 검토를 하기도 하고, 반납해야하는 RI (더 이상 사용하지 않는 RI) 도 확인합니다. 각 팀에서 얼만큼 비용이 지출 되었는지 서로 공유하고 가시성을 높이는 것이 비용 모니터링에 도움이 많이 되는 것 같습니다.
Q. 마지막으로 RI를 적용하려는 다른 고객들에게 팁이 있다면?
A. 첫째, 각 팀에게 비용에 대한 책임감(Ownership)을 부여할 것! 둘 째, 정기적으로 비용 검토를 진행할 것! 마지막으로, 비즈니스가 성장하고 있다면 RI 구매를 크게 고민하지 말 것! 등을 꼭 당부 드리고 싶습니다.
– 정리: 조효원 / 구본민, AWS 매니저