요약

  • RDS 저장 공간 자동 확장은 용량을 늘려 주지만 같은 DB 인스턴스에 이미 할당된 용량을 줄여 주지는 않는다. 데이터 정리만으로 저장 요금의 기준이 내려가지 않는다.
  • 지원되는 MySQL 환경은 더 작은 녹색 환경을 만든 뒤 블루/그린 전환을 할 수 있다. 그동안 두 환경의 비용과 이전 복구 이력을 유지할 필요를 함께 계산해야 한다.

자동으로 끝난 일, 사람이 끝내야 할 일

운영팀이 저장 공간 부족을 해결했다. 데이터베이스는 살아 있고, 서비스도 계속 돈다. 그런데 한동안 지나 사용량이 줄어든 뒤에도 큰 저장 공간은 남는다. 사고를 막은 기능에는 박수를 쳐야 한다. 그 박수에 다음 달 청구서까지 퇴장시킬 힘은 없다.

Amazon RDS의 저장 공간 자동 확장은 이런 시간차를 만든다. 여유 공간이 부족해지면 정해진 조건에 따라 용량을 늘린다. AWS의 설명서는 이미 할당된 용량을 같은 DB 인스턴스에서 줄일 수 없다고 명시한다. 자동 확장을 끄더라도 앞서 늘어난 저장 공간이 취소되는 것은 아니다. 수동으로 인스턴스 설정을 바꾸는 방식으로도 그 용량을 줄일 수 없다.

요금의 기준을 보면 이유가 더 선명하다. RDS for MySQL 가격 설명에서 저장 비용은 준비해 둔 용량을 기준으로 계산한다. 월중 용량 변경은 기간에 맞춰 반영된다. 데이터를 삭제해 실제 파일 시스템의 빈 공간이 늘어난 경우에도, 할당된 용량이 그대로라면 그 저장 공간의 과금 기준은 유지된다. 사용 중인 양과 빌려 둔 크기는 서로 다른 숫자다.

이 차이는 자동화의 실패가 아니다. 저장 공간 부족을 막는 기능은 비용 절감 담당자까지 대신하지 않는다. 문제는 조직이 두 일을 하나의 완료 표시로 묶을 때 생긴다. 장애 위험을 낮췄다는 사실만 보고 비용 검토까지 끝났다고 생각하면, 일시적인 확장이 장기간의 지출로 굳어진다.

작아지는 대신 옮겨 간다

줄일 방법은 있다. AWS는 지원되는 엔진에서 블루/그린 배포를 이용하거나, 더 작은 새 인스턴스로 데이터를 옮기는 경로를 안내한다. 전자는 현재 운영 중인 파란 환경을 복제해 녹색 환경을 만들고, 준비가 끝나면 운영을 넘기는 방식이다. 같은 상자를 압축하는 기능보다 작은 상자로 이사하는 절차에 가깝다.

녹색 환경 생성 지침에 따르면 저장 공간을 줄일 때 목표 용량은 현재 사용량보다 최소 20% 커야 한다. 가령 할당량이 500GiB이고 사용률이 50%라면, 사용량 250GiB에 1.2를 곱한 300GiB가 산식상의 최소 목표다. 실제 고객의 절감 사례가 아니라 문서의 계산법을 풀어 쓴 예다. 생성 중 데이터가 늘어날 여유와 해당 구성의 조건을 추가로 확인해야 한다.

용량 축소에는 저장 구성 변경이 수반된다. 이 작업은 입출력 자원을 많이 쓰고 환경을 만드는 시간을 늘릴 수 있다. 더 작은 숫자를 입력했다는 이유만으로 더 작은 데이터베이스가 곧바로 운영을 인수하는 것은 아니다. 복제된 데이터와 성능을 확인할 시간이 필요하다.

여기서 다루는 구체적인 경우는 블루/그린 배포를 지원하는 RDS for MySQL 인스턴스다. AWS의 지원 목록은 MariaDB, MySQL, PostgreSQL의 지원 버전을 구분한다. Db2, SQL Server, Oracle에는 같은 경로가 제공되지 않는다. 이름이 모두 RDS라고 해서 축소 방법까지 같지는 않다.

주소가 같아져도 과거까지 이어 붙지는 않는다

운영을 넘기는 단계도 별도 작업이다. 전환 절차는 복제 상태와 지연 등을 확인한다. 새 쓰기 작업을 멈추고 연결을 끊은 뒤, 녹색 환경이 데이터를 따라잡도록 기다린다. 이어 인스턴스와 접속 주소를 바꾸고 새 운영 환경에서 연결과 쓰기를 허용한다. 녹색 인스턴스를 따로 승격시키는 동작과 블루/그린 전환은 다르다. 전자를 임의로 실행하면 배포를 유지하던 복제가 끊긴다.

새 환경이 기존 접속 주소를 이어받더라도 실제 자원의 식별자는 이전 것과 다르다. 이 차이는 복구에도 남는다. 고려 사항 문서는 이전 운영 환경의 특정 시점 복구 이력이 새 운영 인스턴스로 넘어가지 않는다고 설명한다. 새 인스턴스는 녹색 환경을 만들었을 때부터 쌓은 자기 이력을 가진다. 예전 파란 인스턴스는 삭제할 때까지 자신의 이력과 자동 백업을 보관한다.

과거 시점으로 돌아갈 필요가 있으면 이전 환경을 일정 기간 남겨 두어야 한다. 그 환경이 실행되는 동안 컴퓨팅과 저장 비용도 남는다. 작은 데이터베이스가 운영을 시작한 날과 전체 비용이 내려가는 날 사이에 간격이 생길 수 있는 이유다.

청소 버튼의 이름도 주의해서 읽을 필요가 있다. AWS는 블루/그린 배포를 삭제해도 파란 환경은 영향을 받지 않는다고 밝힌다. 배포 관계를 지우는 일과 비용이 발생하는 데이터베이스를 정리하는 일은 별개다. 인스턴스를 정지하는 것만으로도 저장 요금은 없어지지 않는다.

실제 순절감액을 내려면 각 환경의 요금, 겹쳐 운영하는 기간, 복구 보존 필요와 작업 비용이 있어야 한다. 그 숫자가 없는 상태에서도 결론은 명확하다. 데이터 정리는 사용량을 낮추는 작업이고, 과금 용량을 낮추는 일은 운영 이전을 끝내는 작업이다. 같은 완료 항목에 체크할 수 없다.