AWS 비용 최적화 Part 1: 버즈빌은 어떻게 월 1억 이상의 AWS 비용을 절약할 수 있었을까
버즈빌은 2023년 한 해 동안 월간 약 1.2억, 연 기준으로 14억에 달하는 AWS 비용을 절약하였습니다. 그 경험과 팁을 여러 차례에 걸쳐 공유합니다. AWS 비용 최적화 Part 1: 버즈빌은 어떻게 월 1억 이상의 AWS 비용을 절약할 수 있었을까 (준비중) …
Read Article안녕하세요! 저희는 Buzzvil Culture Committee의 Diane과 Jacob입니다. 버즈빌은 지난 번 AWS GameDay에 참여하여 Microservice Magic에서 3위라는 뛰어난 성적을 거두었는데요! 버즈빌 개발팀의 높은 실력을 증명한 시간이 아니었나 싶습니다. 참가하신 다섯 분의 개발자 Liam, Noah, Aiden, Claud, Isac의 목소리를 듣고자, 인터뷰를 진행했습니다. GameDay에 관심 있는 개발자분들은 재미있게 읽어주세요!
Liam - 장애 상황 대응이란 분/초를 다투는 일이고, 대응에 실수가 있거나 지연되면 그만큼 매출이건 고객과의 관계가 됐건 악영향을 끼치게 됩니다. 개발자에게 있어 장애 상황을 직접 겪고 대응해보는 것만큼 확실히 대응 경험을 쌓을 수 있는 방법은 없겠지만, 훈련을 하기 위해서 장애를 일으킬 순 없죠.
GameDay는 실제 환경과 유사한 모의 환경을 구성하고 의도적으로 장애를 유발하는 실패 요소를 주입해서 대응 훈련을 하는 것을 의미합니다. 이번 AWS GameDay에서는 이런 장애 대응 모의 훈련에 팀 간 경쟁 요소를 가미하여 가상의 회사의 직원이 되어 모노리스 운영 환경을 마이크로서비스 환경으로 개선하는 주제로 진행되었습니다.
Aiden - 버즈빌 합류 전에는 Devops 관련 경험이 없었어요. 버즈빌 Devops팀에 합류 후 1년 정도 경험을 쌓은 뒤 GameDay를 참여하게 되었는데, 스스로의 능력을 확인해볼 수 있던 기회라고 생각했습니다.
Isac - 버즈빌 Devops edge 프로그램 참여 중에 GameDay에 대한 이야기를 들었습니다. 처음엔 Devops 지식이 많지 않아서 어려울 줄 알았는데, 편하게 참여할 수 있다고 말씀 주셔서 참석해보았습니다.
Noah - 클라우드를 잘 사용하는 기업들에서는 장애 모의 대응과 같은 문화가 있다는 걸 알고 있었어요. 작은 기업에서는 직접 하기는 어려운 와중에, AWS에서 가상 환경을 잘 제공해주어서 참여해보고 싶었습니다. GameDay가 소개된 지 얼마 안 되기도 했습니다. 모두가 첫 번째 참석이었어요.
Aiden - 마침 마이크로서비스가 총 3개 있어서 Aiden, Claud, Isac이 각각 한 개씩을 담당했습니다. 그리고 게임 진행과 관련된 정보나 가이드를 멤버들에게 전파하는 역할을 Noah가 맡았고, 각 마이크로서비스로 요청을 전달하는 API gateway를 Liam이 맡았습니다.
Isac - GameDay에선 코드 변경은 없었고 인프라와 관련된 버그를 고치는 정도였어요. 저희 회사와 다르게 코드레벨에서 접근하는 경우는 GameDay에 없었습니다. 현실에서 일어나기 힘든 장애, 한 번도 경험해보지 못한 말도 안 되는 장애들이 생긴다는 게 당황스럽기도 했어요. 버즈빌에서는 코드로 인프라를 관리하고 다른 사람들의 리뷰를 받기 때문에 이런 장애가 일어나기 어려워서, 이런 점이 차이점이기도 했어요. 이번 기회를 통해 어떻게 해야 할지 배울 수 있었기도 했습니다.
Noah - 비슷한 점은, 트래픽 처리가 과도해져서 트래픽을 더 잘 처리하기 위해 마이크로서비스로 전환한다는 점이었어요. 그리고 저희가 게임을 진행하면서 각각 마이크로서비스를 운영할 때 서비스 오너를 지정해서 했는데, 버즈빌에서도 서비스별로 서비스 오너를 지정해서 하기 때문에 이 점도 비슷했습니다. 게임에도 현실을 많이 반영했다는 생각이 들었어요.
Claud - 각 마이크로서비스에 대한 관리 부담은 줄어들지만, 전체적인 운영 코스트와 복잡성이 늘어나기 때문에 이 부분을 신경써야 하는 점이 비슷하다고 느꼈습니다. 가장 달랐던 점은 GameDay에서는 어떻게 구현했는지도 모르는 다른 팀의 서비스를 서비스 메트릭만 보고 가져다 사용할 수 있다는 것이었는데, 이 부분도 흥미로웠습니다.
Isac - 우선, 버즈빌에서 원래 AWS를 많이 쓰고 있다는 점이 있을 것 같습니다.
Aiden - 다들 AWS console이 익숙하다보니, 다루지 않았던 제품들도 빠르게 핸들링 할 수 있었습니다. 그리고 이것도 나름의 게임이다보니 노하우가 좀 있더라구요. 그 전에 1위한 팀을 보니 이미 경험이 있었던 분들이 포함되어 있어서 빠르게 적응하실 수 있었던 것 같아요. 저희는 중반쯤에 요령이 생겼던 것 같습니다. 특히, 로그를 확인할 수 있는, CloudTrail이라는 서비스를 후반에서 적극적으로 활용하면서 점수를 높일 수 있었습니다.
Noah - 초반에는 당황스러워서 어떻게 해야 할지 모르고 손발을 놓은 적도 있어요. 혼자라면 포기했을 텐데, 옆에서 누군가 원인을 찾다 보니 저도 포기하지 않고 열심히 하게 되었습니다. 이런 식으로 게임 진행에 현실적인 부분이 많이 반영된 것 같아요.
Liam - 마이크로서비스, 마켓플레이스 모니터링, API gateway 대응 등 초반에 각자의 역할을 잘 나누어서 진행하다 보니 각 요소에서 발생할 수 있는 문제 상황에 대한 readme를 읽고 미리 예측하거나 빠르게 발견해서 대응할 수 있었습니다.
Noah - 우선 버즈빌에서도 Auto Scaling Group, load balancer를 사용하고 있다 보니 쉽게 설정하고 사용할 수 있었습니다. 그리고 Lambda 익숙해서 운영도 어렵지 않았구요. Isac이 맡으셨던 ECS(Elastic Container Service), Claud가 맡으셨던 Elastic Beanstalk는 버즈빌에서 잘 사용하지 않기 때문에 처음에는 다루기가 어려웠습니다. 여러 서비스를 접하게 하려는 AWS의 의도도 있었던 것 같아요.
Liam - 다양한 AWS 콘솔 사용자가 있는 환경에서 보안 설정을 변경한다거나 누군가가 실수로 리소스를 삭제해서 의도치 않은 장애가 일어난다거나 하는 일은 현실 상황에서도 충분히 발생할 수 있는 일이에요. GameDay에서는 AWS 계정에서 일어난 이벤트가 수집되는 Cloudtrail을 활용하면 누가 언제 어떤 리소스를 편집했는지 알 수 있기 때문에 장애 해결의 중요한 열쇠가 되는 경우가 많았는데요, 실제로 버즈빌에서도 갑자기 DNS 레코드가 바뀌었다거나 어떤 리소스가 갑자기 안 보인다거나 하는 일이 발생하면 가장 먼저 찾게되는 서비스입니다.
Claud - 예상치 못한 이슈 대응을 위해 audit log가 중요하다는 것을 뼈저리게 느꼈습니다.
Aiden - 게임 시나리오 안에는 갑자기 인프라 관련 설정이 뜬금없이 바뀌는 경우가 포함되어있었는데, 운영자 입장에서 변경사항을 파악을 잘하지 못했습니다. 평소에 잘 사용하지 않은 제품이다 보니까. 인프라 담당자로서, 인프라를 AWS에서 계속 운영한다면 관련 제품들을 계속 공부를 해야겠다고 느꼈습니다.
Isac - Devops Edge에 참석하면서 Devops를 꾸준히 공부하고 있지만, 개발자로 일하다보니 아는데 한계가 있긴 한 것 같아요. 여전히 블랙박스처럼 보이긴 하지만, 어떤 걸 다루고 있는지는 잘 느꼈던 것 같습니다. 특히, 코드 뒤에서 일어나는 일들이 정말 다양하다는 걸 느꼈습니다.
Noah - GameDay가 회사 내부적으로도 있으면 좋을 것 같다는 생각을 했어요. 이런 문화가 있으면 엔지니어 입장에서는 재미있게 느낄 수 있다고 생각합니다.
Aiden - 마지막 5분 정도 시간이 남았을 때, 3위와 4위 스코어 차이가 크게 나지 않았어요. 게임 막바지라 뭔가 더 개선을 하진 않고 운명에 맡기고 있었습니다. 스코어보드를 보면서 다 같이 기도를 하면서 마지막 순간을 보냈는데, 결국 순위권에 들어서 재미있고 기억에 남는 경험이 되었어요. 해커톤을 하는 느낌이었어요.
Noah - 테이블에 앉아서 AWS에서 보내준 간식을 먹으면서 작업을 집중해서 재미있게 했던 것이 좋았습니다. 흔히 그리는 스타트업의 모습과 가까웠던 것 같아요. 예를 들면 영화 소셜네트워크에 나올법한? 개발자의 낭만을 느낄 수 있는 모습이었던 것 같습니다.
Isac - “제발 고장 나지 마라”고 하면서 스코어보드 보고 있던 순간이 기억에 납니다. 간식도 별로 안 먹을 정도로 집중했던 것 같아요. 그리고 중간에 답을 잘 못찾고 있었을 때, 문제가 무엇인지 파악도 안 되어서 무력감을 느꼈는데 그때도 인상 깊은 순간으로 기억에 남습니다.
Aiden - 어떤 장애가 발생했는데, 다른 팀들은 잘 처리하지 못하는 와중에 우리 팀이 잘 처리를 하면서 스코어가 쭉 올라갔어서 순위권에 들 수 있었습니다. 그리고 어디가 문제였는지 잘 모르겠을 때, Liam이 승부욕을 갖고 계속 문제를 찾아주셨던 모습도 기억에 남습니다.
Claud - Aiden이 특정 서비스가 사용하는 API가 당일중에 스펙이 변경된 v2로 업데이트될 것이라는 정보를 빠르게 확인해주셔서 해당 변경사항을 다른 팀보다 빠르게 적용하여 스코어를 많이 획득했던 것이 생각나네요
Isac - AWS를 엄청 열심히 공부를 하고 있지는 않지만, 회사에서 새롭게 쓰는 기능은 항상 살펴보고 있어요. 인프라에 관심이 있어서 쿠버네티스, 클라우드 관련 자료들을 찾아보고 있구요. 라즈베리파이를 하나 사서 취미용 쿠버네티스 클러스터를 만들고 있는데요, 이런 걸 하면서 배포를 어떻게 하면 좋을지 같은 걸 찾아보고 공부하고 있습니다.
Claud - AWS는 오래전에 자격증 시험을 보면서 공부했던 기초 지식이 도움이 되는 것 같아요. 현재는 업무 중 사용하는 서비스에 대해서만 팔로우업하는 편입니다. 인프라/클라우드는 관심 분야여서 개인적으로 구성한 k8s 클러스터를 playground로 하여 이런저런 놀이를 하고 있습니다. 이외에도 CNCF 프로젝트를 구경하거나 관련 블로그, 유튜브 채널을 구독하고 있어요.
Aiden - 사전에 준비를 해야 한다거나 필수적으로 필요한 역량은 없으니 부담 없이 즐기는 마음으로 참여하면 좋은 것 같습니다. AWS를 잘 쓰는 사람보다는 모두를 위한 게임인 것 같아요.
Isac - 저도 사전 역량이 없는 상태로 참가를 한 거였는데, 닥치면 배우게 되는 것 같습니다!
Noah - 공부해서 가면 더 얻을 게 많은 것 같아요. 수준이 높지 않기 때문에 누구든지 참여할 수 있는 것도 맞습니다. 맡은 서비스에 대해 기본적인 정보를 알고 가면, 그걸 기반으로 적용하고 응용하면서 좋은 경험을 얻을 수 있을 것 같습니다.
Claud: 생소한 AWS 제품이 있으면 한번 훑어보고 참가하면 도움이 될 것 같네요. 이번에 나온 거는 ECS(Elastic Container Service), ElasticBeanStalk…
Liam - 초반에는 문제가 동시다발적으로 발생하지 않았던 것 같아요. 각 서비스의 디테일을 충분히 미리 파악해두면 나중에 분명히 도움이 될 것이라 생각합니다. readme가 괜히 readme가 아니다.
지금까지 AWS GameDay에 참여하신 버즈빌 개발자분들의 이야기를 들어보았습니다. 인터뷰를 진행한 입장에서 느낀 점을 공유하자면, 우선 첫 참가인데도 3등을 하셨고, 또 실제로 활용되는 스킬들을 써보면서 모의 장애 상황에 대응하는 모습이 다들 대단하다고 느껴졌습니다! 다들 해커톤 느낌으로 재미있게 즐기신 것 같아서 저희도 나중에 꼭 참여해봐야겠다는 생각이 들었어요. 이처럼 버즈빌은 많은 개발자들이 각자의 영역에서 전문성을 높이고 성장할 수 있도록, 적극적으로 지원하고 있습니다. 버즈빌과 함께 성장하고 싶은 분들이 있다면 아래 링크를 통해서 적극 지원 부탁드립니다! 감사합니다!
버즈빌 테크 리크루터와 Coffee Chat하기 (클릭)
버즈빌 기술 블로그의 다른 콘텐츠도 구경오세요!
버즈빌은 2023년 한 해 동안 월간 약 1.2억, 연 기준으로 14억에 달하는 AWS 비용을 절약하였습니다. 그 경험과 팁을 여러 차례에 걸쳐 공유합니다. AWS 비용 최적화 Part 1: 버즈빌은 어떻게 월 1억 이상의 AWS 비용을 절약할 수 있었을까 (준비중) …
Read Article들어가며 안녕하세요, 버즈빌 데이터 엔지니어 Abel 입니다. 이번 포스팅에서는 데이터 파이프라인 CI 테스트에 소요되는 시간을 어떻게 7분대에서 3분대로 개선하였는지에 대해 소개하려 합니다. 배경 이전에 버즈빌의 데이터 플랫폼 팀에서 ‘셀프 서빙 데이터 …
Read Article