⏰ OneTime?
원타임에 대해서 궁금하다면 아래를 참고해주세요!
⏰ OneTime 서비스 바로가기 📝 OneTime 소개글 🧑🏻💻 GitHub 📸 Instagram
🏁 서론
나는 작년 8월부터 지금까지, 약 16개월 째 OneTime이라는 서비스를 운영중에 있다.
백엔드 파트로 참여중이며, 현재 팀원은 총 7명이 되었다.
오늘 기준(25.11.20)으로 성과를 공유하자면, GA 기준 전체 기간 활성 사용자는 1.8만명 / DB 상 누적 가입자 수는 2,400여 명을 돌파하였다.
이제 곧 2만 명 이상이 거쳐 간 서비스가 될텐데, 감회가 새롭다. 최근에는 신기능 업데이트나 적극적인 홍보를 하지 못 했음에도, 유저분들이 스스로 찾아 서비스를 사용해 주시는 모습에서 동기부여를 받기도 하였다.
서버 비용에 대한 문제
그렇게 서비스를 지속해 나가던 중, 한 가지 현실적인 문제가 생겼다.
지금까지는 AWS 스타트업 크레딧($1,000)을 활용해서 무료로 서버비용을 충당하고 있었지만, 이대로라면 몇 달 안에 크레딧이 모두 고갈되어 개인 사비로 서버비를 내야만 했기 때문이다.
서버비가 월 $83로 그렇게 많이 나오는 편은 아니라, 팀원들이 조금씩 회비를 낸다면 충분히 서버비는 충당할 수 있었다.
하지만 중요한 건 월마다 내야 하는 금액이 아니라,
사비를 써서 사이드프로젝트를 지속해야 하는가? 라는 마음이 생길 수 있다는 것이었다.
나야 서비스 운영을 통해서 얻는 점이 압도적으로 많았기 때문에 월 몇 만원 정도야 낼 용의가 있었지만, 다른 팀원들은 그렇지 않을 수도 있겠다라는 생각이 들었다.
그렇기에 무엇보다도 이 문제를 해결하는 것이, 팀과 서비스 존속에 중요한 기점이 될 것이라고 판단했다.
다행히 몇 달 전 합류한 든든한 백엔드 팀원이 1명 더 있었기 때문에, 서로 롤을 나누어 나는 당분간 인프라 쪽만 맡을 수 있었다. 이 때부터 나는 그동안 잘 알지 못 했던 인프라에 대해 더욱 관심을 가지며 공부를 하기 시작했다.
📋 인프라 개선 목표
여러 가지 달성하고 싶은 목표가 있었으나, 필수적인 것들만 추리면 아래와 같았다.
메인 목표는 비용 절감 이지만, 추가적으로 그동안 개선하고 싶었던 것들도 함께 진행하기로 결정했다.
1. 월간 서버 비용을 반 이상 줄여야 한다
클라우드로 AWS를 사용했고, 월 약 $83 정도가 지출되는 상황이었다.
이 속도라면 약 3~4개월 내에 크레딧이 고갈되는 상황이었기 때문에 이를 최대한 늦추고자 목표 지출 비용을 $42 정도로 잡았다.
2. CI/CD 파이프라인 수행 시간을 반 이상 줄여야 한다.
이후 시리즈에서 자세하게 다루겠지만, 기존에는 GitHub Actions와 Code Deploy를 결합한 CI/CD 파이프라인 구조를 가지고 있었다.
내 생각에 여기에는 불필요한 단계가 많았고, 아래와 같은 문제들이 있었다.
1. 배포 진행 상황을 추적하기 어렵다. → 만약 Code Deploy 수행 단계에서 에러가 발생한다면, AWS 콘솔로 접속해 직접 파악해야 해서 불편하다.
- 시간이 너무 오래 걸린다. → 대략적으로 약 4분 이상이 소요되었는데, 때때로 이는 불편함을 야기했다. dev 서버의 경우에는 배포가 잦은데, 기다려야 하는 시간이 너무 아까웠다.
3. 서버 로그를 프론트엔드 측에서 확인할 수가 없다.
현재는 서버 측에서 에러가 발생하는 경우, 이를 프론트엔드가 확인하기가 어려웠다. 때문에 이를 디스코드에서 요청하면 백엔드가 인스턴스 서버에 접속하여 도커 로그를 보고 직접 보내주고는 했다.
이런 일이 여러 번 발생하면서, 프론트엔드 & 백엔드 파트 둘 다 불편함을 느끼게 되었다. 때문에 로그를 확인할 수 있는 구조를 만들어야겠다고 생각이 들었다.
4. 서버에서 장애가 발생하는 경우 알 수가 없다.
아직 로깅 & 모니터링에 대한 이해가 깊지 않기 때문에, 이러한 부분에 대해서는 구축되어 있지 않은 상태였다.
그렇기에 서버가 갑자기 중단되거나, 500 에러를 뱉는 경우에 대응이 굉장히 늦어질 수가 있었다. 이는 운영중인 서비스에는 크리티컬하다고 생각했다.
때문에 500 에러가 발생하는 경우, API의 성능이 좋지 않은 경우 등을 모니터링 할 수 있는 구조를 만들기로 결정했다.
🏅 결과 미리보기
현재는 인프라 개선 작업이 1차적으로 모두 완료된 상태이다.
시리즈가 꽤 길어질 것 같기에 결과부터 미리 공유하자면, 위 목표들을 90% 이상 달성했다.
- 월간 AWS 비용을 $45 선으로 절감하였다.
- CI/CD 파이프라인 시간을 2분 30초 이하로 개선하였다.
- 프론트엔드 측에서 로그를 직접 확인할 수 있게 하였다.
- 500 에러가 발생하거나, API가 느린 경우 디스코드로 전송하여 바로 확인할 수 있게 하였다.
🎬 마무리
다음 글부터는 하나하나 과정들을 공유해 보려고 하는데, 그 전에 한 가지 말하고 싶은 것은 나는 인프라에 대해서 잘 아는 사람이 아니라는 것이다.
혼자 이것저것 알아보고 만져보며 개선을 했을 뿐이기에, 더 좋은 방법이 분명히 있을 수 있다. 인프라 개선 작업을 한 후에 AWS에 더욱 관심이 생겨 SAA 자격증을 취득했지만, 그 당시에는 아니었기 때문에 지금 보면 부족한 점이 참 많다.
또한 가장 우선점을 비용 절감으로 꼽았기 때문에, 보안이나 고가용성 등에서는 아쉬운 지점들이 어쩔 수 없이 존재한다.
그럼에도 사이드프로젝트를 하고 있는 분들, 특히 서버 비용 때문에 고민이 많은 분들을 위해 조금이라도 기여하고자 글을 작성하기로 결정했다.
🧑🏻💻 글을 읽으며 혹시라도 더 좋은 방법이 있거나, 피드백이 있다면 댓글로 가감 없이 달아주기를 바란다!