본문 바로가기

People

회사에 인턴으로 와서 AWS 과금으로 $8,000 날린 썰 (AWS-P 인스턴스 과금, 포스트모템(Postmortem))

한 번 상상해보라. 당신은 여름방학을 맞아 회사에서 인턴십을 시작했다. 설레는 마음으로 시작한 첫 회사 인턴십 생활 중 실수로 8000달러 (약 950만원)을 날리게 되었다면? 상상만해도 아찔한 순간의 주인공들을 모시고 직접 이야기를 들어보았다.


Q: 간단한 자기소개를 부탁드린다.

수민: SIA에서 딥러닝 시스템 엔지니어로 인턴십을 진행하고 있는 손수민이다. 수학과 컴퓨터 공학을 전공했다.

홍준: 저도 딥러닝 시스템 엔지니어로 인턴십을 하고 있는 양홍준이다.

Q: 회사에서 어떤 일을 하는가?

홍준: 현재 딥러닝 시스템은 로컬 서버에서 작동하고 있는데, 이 시스템이 AWS에서 동작할 수 있도록 환경 설정 같은 작업을 하고 있다. 수민님과 같이 작업한다.

Q: 오늘은 무슨 일을 하고 있었는가?

수민: 인퍼런스를 인스턴스에서 실행하고 쿠버네티스로 관리한다. 지금까지는 에러가 지속적으로 발생했으나 어제까지 에러들을 해결하고 이제 사용 편의성을 개선하는데에 초점을 맞추고 일을 하고 있다.

https://aws.amazon.com/ko/?nc2=h_lg

AWS(Amazon Web Service)는 아마존의 클라우드 서비스다. 스타트업, 기업, 정부기관 등 다양한 곳에서 AWS를 사용하고 있다. 인프라 기술, 머신 러닝, IOT등 다양한 서비스와 서비스 내 기능을 사용할 수 있다. 비용은 사용하는 서비스와 사용량에 따라 달라진다. 앞서 홍준님이 말한 것 처럼 딥러닝 엔지니어 인턴분들이 Amazon EKS(Amazon Kubernetes Service)를 이용해 딥러닝 시스템을 AWS 위에서 실행할 수 있도록 환경을 구축하고 있다.

 

Q: 어쩌다가 과금 사태가 일어났는지 처음부터 알려주시면 좋을 것 같다.

홍준: 오해로부터 출발한 일이었다. 처음에 회사에 와서 사내  AWS 관리자 분께서 업무 설명을 해주실 때 사용할 인스턴스 타입과 갯수를 말씀해주셨다. 한 사람당 10개까지 사용가능하다고 하셨다. 우리가 사용한 인스턴스는 P3.2Xlarge인데 다른 인스턴스들보다 비싸다.

수민: (웃음)

홍준: 10개까지 쓸 수 있으니까 한 2, 3개는 열어놔도 되겠구나라고 생각했다.

수민: 심지어 나는 5개를 만들어놨었다.

홍준: 그리고 사용 개수보다 더 중요한 게 있다. 인스턴스를 사용하지 않을 때도 계속 켜놓았다는 거다. 1주일간 인스턴스를 계속 켜놓고 방치하는 동안 사용하지 않는 시간 동안에도 꾸준히 과금이 됐다. 만약 업무 시간 외에 인스턴스를 잘 껐다면 이런 일은 일어나지 않았을 거다. 사용할 때만 과금이 되는 인스턴스도 있긴 하다. CPU 사용량이 몇 % 이상이면 과금이 시작되는 식으로. 하지만 우리가 사용했던 인스턴스는 그런 것과 관계 없이 켜놓기만 하면 과금이 되는 인스턴스였다.

Q: 안 끄면 계속 과금이 되는 건가.

홍준: 그렇다. 다른 안일 포인트는 방치했던 거다. 만들어 놓고서는 신경을 안 썼다. 앞서 말한 모든 것이 맞물려서 1주일이 지나니 3000불이 펑 터져 있었다. 

사실 $3.13K + $4.87K = $8K 이다

수민님과 홍준님은 시스템 환경을 구성하고 테스트하기 위해서 P3.2Xlarge 인스턴스를 사용했다. Worker node는 EKS로 관리되기 때문에 ec2 dashboard에서 수동으로 인스턴스를 삭제해도 자동으로 재생성 됐다. 두 분이 생각했던 것과 달리 AWS는 리소스 사용 유무와 관계 없이 인스턴스가 활성화되기만 하면 60초 단위로 과금됐다. 또, 인스턴스가 얼마나 실행되고 있는지 서로 파악하지 못했던 것도 원인 중 하나였다.

두 분은 3000불이 과금되었다고 알고 계시나 사실 7월, 8월 두 달의 총 과금 금액은 8000불이다. 두 분이 모르는 새에 방치해 놓은 인스턴스에서 돈이 줄줄 새어나가 8000불이 과금된 것이다. 이미 벌어진 일은 벌어진 일이고 돈은 이미 과금되었다. 사태가 벌어진 이후의 이야기가 궁금해 더 물어보았다.

 

Q: 그래서 이후에는 어떻게 되었나.

수민: 갑자기 AWS 관리자 분이 오셔서 "좋지 않은 소식이 있다"고 말씀하시더라. 3000불이 과금 됐다고. 처음에는 그 말을 듣고 3000불 어치를 쓸 수 있을만큼 회사의 크레딧이 많은가, 하는 생각이 들었다. 그 다음에는 개발 팀장님이 오셔서 AWS 비용이 너무 많이 나왔으니 AWS에 문의를 해보라고 말씀 하셨다. 그래서 홍준님이 AWS에 문의 메일을 보냈다.

Q: 뭐라고 문의했는가?

홍준: 문의를 보내기 전에 다른 사례를 찾아봤다. 사람들 실수하는 건 비슷하더라. (웃음) 실수로 AWS 과금 되는 경우가 아주 없는 경우는 아니었다. 찾아보니 연구기관, 작은 스타트업, 기업 인턴들의 실수를 AWS 측에서 정상참작 해주는 경우도 있다고 하더라. 그래서 어떻게 잘 비비면 해결할 수 있겠다 싶어서 메일을 열심히 적었다.

나는 지금 SIA 라는 회사에서 인턴십을 하고 있는 누구누구다. 이 인스턴스를 사용했는데 사용 실수로 3000불이 과금됐는데 우리의 Billing process를 다시 검토해 줄 수 있겠느냐, 이런 내용으로 메일을 보냈다. 문의하는 과정에서 요구하는 것이 많았다. 무엇을 확인해 달라는 등... 그래서 모든 요구사항을 다 처리하고 나니...

수민: 권한이 없다.

홍준: 그렇다. 우리가 회사 AWS 계정의 Master가 아니니 결국 회사 상급자와 얘기를 해야 한다고 하더라. 그래서 개발 팀장님께 말씀드렸다.

Q: 그러면 해결이 아직 안 된건가? 계속 문의만 오고가고 있는 것인가?

홍준: 잘 모르겠다. 이후로 전해들은 것은 없다. 저번에 지나가는 말로 잠깐 들었는데 별다른 진전사항은 없는 것 같았다.[각주:1]

Q: 이런 사태가 벌어졌다는 걸 안 당시에 심정이 어땠나? 예컨대 AWS 관리자 분이 처음에 좋지 못한 소식을 전했을 때라던가.

홍준: 솔직히 나는 별 생각이 없었다.

수민: 나는 이 돈이면 인턴 한 명을 더 고용할 수 있었겠다는 생각이 들었다.

Q: 생각보다 두 분 다 담담했던 것 같다. 이번 사태와 같은 AWS 과금을 예방하려면 어떻게 해야하는가?

홍준: 멋있게 대답하고 싶지만 뻔한 말 말고는 할 말이 없다. 사용하지 않을 때 잘 끄고, 내가 켜지 않았어도 다른 사람 것도 잘 확인해주고, 집에 갈 때 다시 한 번 더 확인하고.

Q: 가스불 같다.

홍준: (웃음) 그런 셈이다.

AWS 비용 구조에 대해 숙지하고 인스턴스 상태를 잘 확인하는 것 외에도 홍준님은 여러가지 재발 방지 조치를 했다고 대답했다. 무분별한 P3 인스턴스 생성을 방지하기 위해서 인스턴스( Worker node) 생성 지점을 inference task가 생성된 직후 시점으로 변경하고 task가 종료되면 인스턴스(Workder node)를 삭제하도록 했다. 또, nfs나 컨트롤러 용도로 사용하는 인스턴스의 경우 기존 인스턴스 (P3.Xlarge)보다 낮은 티어의 인스턴스(t2.small, t2.micro)로 변경했다.

 

Q: 적지 않은 금액을 실수로 날렸는데, 이에 관해 부담감을 느끼진 않았는가?

홍준: 처음에 액수를 듣고 당황하긴 했다. 하지만 회사의 문제 관리 문화 덕분에 부담감을 느끼진 않았다. 잘못을 비난하기 보다는 원인을 분석하고 예방하는데 초점이 맞춰진 문화가 멋있었다. 이번 사건에 대해서 포스트모템(Postmortem)을 작성하고 월간 워크샵 때 실수한 사례를 공유했다. 어떤 일이 있었고, 왜 이러한 사태가 일어났고, 실수를 예방하려면 어떻게 해야하는 지를 이야기했다.

수민: 나도 그랬다. AWS 관리자분과 개발 팀장님이 두세 번 오셔서 문제에 관해서 말씀하시는 걸 보고 큰일을 저질렀구나 싶었다. 그래도 회사에서 우리가 저지른 실수에 대해 부담을 주진 않았다. 홍준님이 말한 것처럼 실수를 분석하고 향후 비용을 줄일 수 있는 방안을 만들어 공유하는 과정을 통해서 배운 점이 많다. 회사가 실수를 관리하는 문화가 인상깊었다.

당시 작성한 포스트모템 문서

포스트모템 (Postmortem)은 부검이라는 뜻으로 실리콘밸리 기업들이 많이 사용하는 실수 관리 방법이다. 회사에 문제가 발생한 경우, 모든 관계자들이 모여 문제의 원인을 분석하고 대책과 재발 방지 대책을 논의한다. 사건의 타임라인, 근본적인 이유 분석, 해결책 및 개선책, 교훈 등을 중심으로 문서를 작성하고 모두와 공유한다.

우리 회사도 포스트모템을 사용하고 있다. 포스트모템 도입 이후로 다양한 실수와 문제에 대한 문서들이 작성되었다. 회사 맥북에 음료를 쏟아 고장 낸 실수부터 고객 사이트에 시스템 업데이트를 실패한 일까지, 회사 구성원들은 십수 개의 실수와 문제를 모두와 공유했다. 포스트모템에서 가장 중요한 것 중 하나는 포스트모템의 목적이 책임자를 문책하는데에 있지 않다는 것이다.

회사의 구성원 누구든 실수할 수 있고, 문제를 일으킬 수 있다. 문제는 이미 발생했고, 해야할 일은 재발을 방지하는 것이다. 포스트모템이 제대로 이루어지기 위해서는 해당 사건의 담당자가 아닌 다른 구성원들의 태도도 중요하다. 자신의 실수와 문제를 공개적으로 공유하는 것은 결코 쉬운 일이 아니다. 실수에 대해 비난하기 보다는 정보를 모두와 공유해준 담당자를 격려하고 감사를 표하는 사내 문화가 있어야 생산적인 포스트모템이 이루어질 수 있다.

사내 실수 관리 문화에 대한 두 분의 생각이 궁금해서 수민님과 홍준님께 회사에 손해를 입혀 부담감을 느끼진 않았는지, 스트레스를 받았던 부분은 없었는지 집요하게 물어보았다. 대면 인터뷰 이후에 팀즈 채팅으로 다시 한 번 여쭤보기도 했다. 두 분은 처음엔 당황했으나 회사의 이러한 문제 관리 문화 덕분에 부담감은 전혀 느끼지 않았다고 했다. 이런 대답이 포스트모템의 효과를 방증하고 있는 것이 아닌가 생각한다.


AWS 과금 사태에 대한 인터뷰가 끝난 후, 두 분은 회사 시스템을 체험해보고 싶어서 인턴십에 지원했다고 말했다. 대학원도 좋지만 최종적으로는 기업에 취직하고 싶다고. 회사에서는 학교보다 다양한 일을 하는 것 같아서 흥미롭다는 말도 덧붙였다.

부디 8주간의 인턴십이 좋은 경험이 되었길 바라며 난세의 시간을 잘 헤쳐나가길 바란다.

 

[##김도희##]

  1. 편집자 주) 현재 기관 관리자에게 채널이 넘어갔고 AWS 지원 측과 논의 진행 중입니다. :) [본문으로]