2023 - 회고 cloudcoke편

신입 DevOps의 첫프로젝트 회고록
곽인구's avatar
Mar 06, 2024
2023 - 회고 cloudcoke편

회고록

저는 작년 9월말 경일게임아카데미의 DevelRocket 프로젝트에 합류하게 되었습니다. 맡은 업무는 클라우드 인프라와 CI/CD 파이프라인 구축이었습니다. 업무를 하면서 인상 깊었던 2가지를 이야기하려고 합니다.

콘솔에서 IaC로

제가 입사할 당시 DevelRocket 프로젝트는 AWS 콘솔을 이용해 인프라가 구성되어 있었습니다. 어떤 서비스를 이용하고 어떤 설정이 되어있는지에 대한 문서가 없어 인프라를 파악하기 어려웠습니다. 그러던 중 DevelRocket 프로젝트를 리뉴얼하게 되었고 기존 서비스들은 그대로 두고 HashiCorp의 IaC 도구인 Terraform을 이용해서 새로 인프라를 구성하기로 하였습니다.
AWS 콘솔을 이용하여 인프라를 설정할 때는 서비스를 구성하는 과정에서 인간의 실수로 인한 오류가 발생할 수 있고, 유지보수를 위해 설정된 내용을 별도의 문서로 기록해야 합니다. 그러나 IaC 도구를 활용하면 인프라 구성이 코드로 기록되기 때문에 별도의 문서 작성이 필요 없으며, 코드를 재사용하여 인프라를 손쉽게 관리할 수 있는 장점이 있습니다.
Terraform 코드를 작성하기 전에 고민한 것은 모듈을 만들어서 활용할지, 아니면 직접 리소스를 정의할지였습니다. 모듈을 사용하면 중복되는 코드를 줄일 수 있지만, 모듈을 만들어본 경험이 없어서 시간이 오래 걸릴 것으로 예상되었습니다. 반면에 직접 리소스를 정의하면 빠르게 코드를 작성할 수 있지만, 코드가 길어지면서 가독성이 떨어지고 빠뜨릴 수 있는 부분이 생길 수 있었습니다. 결국 모듈을 만들기로 결정하고, AWS 모듈을 참고하여 작성하였습니다. 모듈을 사용하니 코드가 간결해지고 가독성이 향상되어 인프라를 파악하기가 더 쉬워졌습니다. 현재는 모든 리소스를 모듈화하지는 않았지만, 앞으로 중복되는 부분을 최대한 모듈화할 계획입니다.

AWS 해킹으로 인한 요금 폭탄

2023년 10월 24일, EC2 인스턴스를 생성하려는 중에 문제가 발생하여 Support 서비스에 문의하러 들어갔습니다. Support에 다음과 같은 사례가 열려있었습니다.
notion image
계정이 해킹되었다는 소리에 AWS Bills를 확인해 보았더니 800만원이 청구되고 있었습니다.
notion image
AWS Support에 문의를 넣고 이런 금액이 나온 이유를 확인한 결과 계정의 Admin 권한을 가진 IAM 유저의 Secret Key와 Secret Access Key가 해커에게 유출된 것이 원인이었습니다. DevelRocket을 리뉴얼 하기 전 Front에서 사용하던 Secret Key와 Secret Access Key가 유출이 되었고 이 키를 이용해 해커가 새로운 IAM 유저를 만들고 AWS SDK Boto를 이용해 ECS 서비스에 ucnmcbahgda/ja라는 이미지를 실행시키고 있었습니다.
notion image
notion image
notion image
원인 파악 후 AWS의 권장 조치를 취하고, 비정상적으로 생성된 ECS 서비스를 삭제하고 다시 문의하여 비용 문제를 해결했습니다.
notion image
이후에는 AWS 계정에 생성된 IAM 유저들을 정리하고 필요 없는 권한은 제거했습니다. 또한, Admin 권한을 가진 유저들은 MFA를 설정하도록 하였고, 기존에 사용하던 Secret Key들은 모두 제거하고 새로 발급 받았습니다. 인터넷에서 보기만 하던 요금 폭탄을 직접 경험하고 나니 AWS 보안의 중요성을 느꼈습니다.

마치며

프로젝트를 하면서 Terraform과 AWS에 대해 많은 것을 배웠습니다. 새로운 서비스를 도입하는데 거부감이 없으신 팀장님 덕분에 AWS의 다양한 서비스를 경험해 볼 수 있었습니다. 현재 DevelRocket은 사용자 수에 비해 AWS 비용이 많이 발생하고 있는 상황입니다. 2024년에는 이러한 비용을 최적화하기 위해 노력하려고 합니다. 현재의 비용 구조를 분석하여 비효율적인 부분을 찾고, 이를 개선하여 리소스를 효율적으로 관리하고 비용을 절감할 것입니다.
 
Share article
Subscribe Newsletter
Stay connected for the latest news and insights.
RSSPowered by inblog