FinOps

AWS-FinOps-S3-incomplete-multipart-uploads-MPU

S3는 청크 단위로 파일을 잘라서 업로드 할수있는 기능을 제공한다.

이 기능의 정식명칭은 multipart upload 이다.

https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html

MPU라고 줄여서 부른다.

MPU는 업로드 속도를 빠르게 해줄수있는 아주 좋은 기능이지만, 업로드에 실패할 경우 완성되지 않은 청크단위의 파일들이 S3스토리지에 저장되게 된다. 업로드가 정상적으로 이루어진 경우 청크단위로 나뉜 파일을 하나의 파일로 합쳐서 객체로 보이게 되지만, 그렇지 않은 파일은 우리의 눈에 보이지 않지만 S3의 스토리지에 비용만 발생시키며, 하등 쓸모없는 상태로 저장만 되어있는다. 이런 경우를 "incomplete multipart uploads" 라 부른다.

불완전 멀티파트 업로드/완료되지 않은 멀티파트 업로드 는 Lifecycle 를 통해 삭제 할수있다. 간단한 정책을 만들어서 보여주고자 한다.

설정은 S3 버킷 에서 관리로 가면 수명주기 규칙으로 설정할수 있다.

이설정은 모든 버킷에서 통용적으로 사용할수 있는 규칙이므로 버킷을 생성할때 무조건 넣어도 좋다.

위와같이 "만료된 객체 삭제 마커 또는 완료되지 않은 멀티파트 업로드 삭제" 체크후 "불완전 멀티파트 업로드 삭제" 를 체크하면 된다. 일수는 1일이 최소값이다.

정상적으로 삭제가 동작하면 이런식으로 S3 dashboard에서 불완전한 멀티파트업로드 바이트 차트가 0B로 변경되는것을 확인할수 있다.

불완전 MPU는 대표적으로 이런경우 생성된다.

MPU 업로드 실패.
Athena 쿼리 실패
Redshift UNLOAD 실패등

AWS 서비스에서 S3로 저장하는 액션을 취하다 실패하는경우가 있다면 대부분 "불완전 MPU"가 생성될것이다.

AWS S3 대시보드를 확인하여 "불완전한 MPU" 를 확인하고 삭제해보자.

바닥에 흘리고 다니던 눈먼 동전 줍기가 될것이다.

읽어주셔서 감사하다!
앞으로도 FinOps 시리즈로 찾아 뵙겠다.

AWS FinOps - Intro

이번엔 FinOps에 대한 이야기를 할거다.

먼저 본론으로 들어가기 전에 FinOps에 대한 정의부터 이야기할까 한다.

우리가 흔히 알고있는 DevOps는 Development 과 operations 의 합성어 이다.
FinOps는 이 DevOps 에 Finance를 더한것이다. ( Finance + Development + Operations )
IT infra 상에서 발생하는 비용을 제어하고 투자하는 방식을 말하는것이다.

'투자' 라고 말하면 의아 할수도 있는데 클라우드 상의 자원은 무한하지만 사용자에게 할당된 비용은 유한하다.
그렇기에 제한된 비용내에서 적절한곳에 맞는 리소스를 투입하는것이 FinOps 에서 투자인것이다.

FinOps의 목적은 절약이 아니다.
FinOps는 제한적인 예산에서 낭비되는 비용을 줄여 리소스가 필요한곳에 투입하는것이 FinOps 목적인 것이다.
절약에서 '만' 끝난다면 지속적으로 줄여야하는 비용의 압박에 씨달릴 것이다.

또한 비용관리는 반드시 필요하나, 이 비용관리가 비즈니스의 편의성을 해치고, 확장성과 탄력성에 영향을 준다면 당신을 FinOps를 잘못이해 하고있는것이다.

예를 들어 RI를 구매 후 워크로드가 변화에도 불구하고 RI때문에 유연한 리소스를 사용하지 못한다면 잘못된 방식의 비용관리를 하고 있는 것이다. RI 때문에 서버추가에 대한 고민이나 원하는 유형의 인스턴스를 사용하지 못한다는 것은 클라우드를 사용하는 방식도 아니며, 이런경우 차라리 On-Premises로 의 회귀가 더 저렴할것이며 사용패턴도 맞을것이다.

차후 포스팅 할 내용에서는 먼저 가장 간단히 보고 절약할 부분부터 새로운 아키텍처가 필요한 부분까지 작성할 것이다.

FinOps의 세계가 얼마나 짜릿하고 즐거운 분야인지 같이 느껴보면 좋겠다.

함께 돈을 버는 엔지니어의 세계로 가보자.