가이드

앱 호스팅 비용을 줄이는 법

호스팅 비용을 줄이려면 실제로 무엇이 실행되고 있는지, 그리고 왜 실행되는지 알아낸 뒤, 아무도 쓰지 않을 때는 모든 것이 잠들게 해야 합니다. 0으로 줄어드는 호스트에서는 유휴 앱과 잠든 데이터베이스의 비용이 아주 적으므로, 가장 큰 절감은 보통 이들을 깨어 있게 만드는 요인을 없애는 데서 나옵니다. 가장 흔한 요인은 데이터베이스를 몇 초마다 확인하는 코드입니다. 그다음으로는 대역폭을 줄이고, 아무도 쓰지 않는 앱을 삭제하면 됩니다.

대부분의 작은 앱은 트래픽 문제가 아니라 "무언가가 항상 켜져 있는" 문제를 안고 있습니다. 이 가이드는 그것을 찾아 고치는 방법을 AI 앱 빌더에 줄 수 있는 프롬프트와 함께 보여줍니다.

실제로 돈을 내는 항목

작은 앱의 호스팅 요금은 몇 가지에서 나옵니다. 어느 항목이 큰지 알면 어디를 봐야 할지 알 수 있습니다.

비용요금을 올리는 요인보통의 해결책
컴퓨팅 (서버)기계 크기와 실행 시간잠들게 하고, 크기를 맞추기
데이터베이스크기와 깨어 있는 시간끊임없는 쿼리를 멈춰 잠들 수 있게 하기
대역폭방문자가 내려받는 데이터 양이미지 압축, 파일 캐싱
저장 공간보관하는 파일과 데이터필요 없는 오래된 업로드, 로그, 백업 삭제
제3자 APIAI 모델, 지도, 이메일, SMS 호출결과 캐싱, 한도 설정

Mythex를 비롯한 많은 최신 호스트는 0으로 스케일링합니다. 아무도 앱을 쓰지 않으면 서버가 멈춰 컴퓨팅 비용이 들지 않고, 다음 방문 때 다시 깨어납니다. 그래서 질문이 "서버가 얼마나 큰가?"가 아니라 "서버가 왜 깨어 있는가?"로 바뀝니다.

1단계: 돈이 어디로 나가는지 확인하기

무엇이든 바꾸기 전에 호스트의 사용량 페이지에서 다음을 찾아보세요.

  • 어느 프로젝트의 비용이 가장 큰가? 종종 앱 하나가 요금 대부분을 차지합니다.
  • 어느 범주인가? 컴퓨팅, 데이터베이스, 대역폭, 저장 공간 중 어디인가?
  • 언제 비용이 발생하는가? 방문자가 없는 밤에도 일정하게 요금이 나온다면 앱을 깨어 있게 만드는 무언가가 있다는 단서입니다.

Mythex에서는 사용량 상세에서 최근 30일을 Build(AI 에이전트)와 Run(호스팅, 대역폭, 데이터베이스, 파일 저장 공간)으로 나누어 프로젝트별로 보여줍니다.

2단계: 유휴 앱과 데이터베이스를 잠들게 하기

대부분의 작은 앱에서 이것이 실질적인 해결책입니다. 유휴 상태에서 잠들었다가 다음 요청에 깨어나는 데이터베이스는 조용한 시간 동안 거의 비용이 들지 않습니다. 몇 초마다 쿼리를 받는 데이터베이스는 절대 유휴 상태가 되지 않으므로 하루 종일 요금을 냅니다.

Mythex의 호스팅 한도는 게시된 앱에서 이것이 어떻게 작동하는지 설명합니다. 잠든 앱은 컴퓨팅 비용이 없고, 데이터베이스는 가장 작은 크기로 시작해 바쁠 때 커지며, 5분 동안 유휴 상태이면 잠들고, 깨어 있던 시간 동안 크기에 따라 요금이 청구됩니다. 따라서 밤낮없이 몇 분에 한 번이라도 데이터베이스에 쿼리하는 앱은 항상 바쁜 것처럼 요금이 청구되고, 백그라운드 통신이 없는 같은 앱은 비용이 거의 들지 않습니다.

앱을 깨어 있게 만드는 흔한 요인은 다음과 같습니다.

  • 폴링. 2~5초마다 서버에 "새로운 거 있어?"라고 묻는 페이지. 노트북 한 대에서 이 탭만 열어 두어도 데이터베이스는 잠들지 못합니다.
  • 자동 새로고침 대시보드. 아무도 보지 않아도 타이머에 따라 데이터를 다시 불러옵니다.
  • 업타임 모니터. 1분마다 앱에 핑을 보냅니다.
  • 서버 코드의 백그라운드 루프. 데이터를 정리하거나 동기화하는 setInterval이 영원히 돌아갑니다.
  • 예약된 "keep-alive" 요청. 첫 방문이 느린 것을 막으려고 누군가 추가한 것들입니다. 이들은 잠드는 것을 막음으로써 작동하는데, 바로 그것이 비용을 발생시킵니다.

AI에게 이것들을 찾아 달라고 요청하세요.

코드에서 타이머로 실행되거나 데이터베이스를 반복해서 쿼리하는 부분을 모두 찾아 줘: 폴링, setInterval, 자동 새로고침, 백그라운드 루프. 각각 무엇인지, 얼마나 자주 실행되는지, 아무도 페이지를 열지 않았을 때도 실행되는지 목록으로 정리해 줘. 아직 아무것도 바꾸지 마.

그다음 하나씩 고치세요.

대시보드가 3초마다 /api/orders를 폴링하고 있어. 브라우저 탭이 보이는 동안에만 새로고침하도록 바꾸고, 3초가 아니라 60초마다 갱신하게 해 줘. 수동 새로고침 버튼도 추가해 줘.

앱에 정말로 실시간 업데이트가 필요하다면(채팅, 실시간 점수판 등), 끊임없이 묻는 대신 무언가 바뀔 때만 밀어서(push) 전달할 수 있는지 물어보세요. 많은 앱에는 사용자가 탭으로 돌아올 때 새로고침하는 것만으로 충분합니다.

3단계: 서버 크기 맞추기

큰 기계는 시간당 비용이 더 듭니다. AI로 만든 많은 앱은 기본 크기로 시작하는데, 그 크기로도 충분한 경우가 많습니다. 문제는 느린 쿼리가 원인인데도 "더 강력한 서버"를 요구할 때 생깁니다.

  • 오류 없이 트래픽을 감당하는 가장 작은 크기를 유지하세요.
  • 메모리 충돌이 보인다면, 먼저 앱이 너무 많은 데이터를 메모리에 올리는지(한 페이지 분량의 결과 대신 테이블 전체를 불러오는 등) AI에게 확인해 달라고 요청하세요.
  • 측정된 트래픽이 필요로 할 때만 기계를 추가하세요.

Mythex에서는 게시할 때 앱이 필요로 하는 것에 따라 기계 크기가 정해지며, 추가 기계는 트래픽이 많을 때만 시작되고 줄어들면 다시 잠듭니다. 비용은 크기를 따라가므로, 크기가 과하다고 생각되면 채팅에서 더 작은 크기를 요청하세요.

4단계: 대역폭 줄이기

대역폭은 방문자가 내려받는 데이터입니다. 보통 이미지가 가장 큰 부분입니다.

  • 이미지를 압축하고 WebP나 AVIF 같은 최신 형식으로 제공하세요.
  • 이미지를 실제로 표시되는 크기로 줄이세요. 4,000픽셀짜리 사진을 400픽셀 썸네일로 보여주면 내려받은 대부분이 낭비됩니다.
  • 첫 화면 아래의 이미지는 지연 로딩(lazy-load)하세요.
  • 정적 파일(스크립트, 스타일, 이미지)을 캐싱해 재방문자가 다시 내려받지 않게 하세요. 캐싱이란 무엇인가를 참고하세요.
  • 페이지를 볼 때마다 큰 파일을 내주지 마세요.

앱의 모든 이미지를 확인해 줘. 표시되는 가장 큰 크기로 줄이고, WebP로 변환하고, 첫 화면 아래에 있는 이미지는 지연 로딩하게 해 줘. 변경 전후의 전체 용량도 알려 줘.

페이지 속도를 높이면 대역폭도 보통 함께 줄어듭니다. 웹사이트 속도를 높이는 법을 보세요.

5단계: 아무도 쓰지 않는 것 정리하기

  • 오래된 앱 게시 취소. 테스트 배포, 끝난 실험, 작년 행사 사이트 등.
  • 오래된 업로드, 로그, 내보내기 파일 삭제. 필요 없는 것들입니다.
  • 사용하지 않는 공유 미리보기 링크 삭제. Mythex에서는 미리보기 링크를 열면 프로젝트가 깨어나고 크레딧이 사용되므로, 잊어버린 링크를 누군가 계속 열면 비용이 계속 듭니다.
  • 쓰지 않는 서비스 제거. 앱이 더 이상 호출하지 않는 API 서버나 워커 등.

6단계: 정적 사이트 고려하기

사이트에 로그인이 없고, 저장된 사용자 데이터가 없고, 서버 로직이 없다면, 예를 들어 마케팅 사이트, 포트폴리오, 메뉴판 같은 경우라면 정적 사이트로 만들 수 있습니다. 정적 사이트는 CDN에서 제공되는 평범한 파일이므로 계속 돌려야 할 서버나 데이터베이스가 없습니다. Mythex에서는 정적 사이트가 가만히 있는 동안 크레딧을 쓰지 않습니다.

이 사이트에는 로그인이나 저장된 데이터가 없어. 서버 없이 정적 사이트로 다시 만들 수 있을까? 무엇을 잃게 될까?

7단계: 유료 API 호출 주시하기

AI 모델, 지도, SMS를 호출하는 앱이라면 제3자 요금이 호스팅 요금을 훨씬 넘어설 수 있습니다.

  • 호출마다 돈이 드는 기능은 로그인을 요구하세요.
  • 사용자별 한도를 추가하세요(레이트 리미팅이란 무엇인가를 참고하세요).
  • 바뀌지 않는 답변은 캐싱하세요. 예를 들어 같은 주소의 지오코딩 등입니다.
  • 각 제공업체에서 지출 한도나 알림을 설정하세요.

흔한 실수

  • 측정 대신 추측하기. 먼저 사용량 상세를 확인하세요. 비싼 부분은 예상과 다른 경우가 많습니다.
  • 느린 것을 해결하려고 더 큰 서버를 사는 것. 빠진 데이터베이스 인덱스나 너무 많은 데이터를 불러오는 것이 보통 진짜 원인입니다.
  • 모든 것을 폴링하기. 몇 초마다 도는 타이머 하나하나가 데이터베이스를 깨어 있게 만드는 이유가 됩니다.
  • 앱을 "따뜻하게" 유지하려고 핑 보내기. 이는 0으로 스케일링하는 절감 효과를 없애 버립니다. 첫 방문에서 짧은 깨어남을 받아들이거나, 의도적으로 항상 켜 두는 요금을 내세요.
  • 오래된 배포를 잊는 것. 쓰지 않는 앱에 데이터베이스와 백그라운드 작업이 남아 있으면 조용히 비용이 쌓입니다.
  • 압축되지 않은 이미지. 작은 사이트에서 대역폭 비용의 가장 큰 원인인 경우가 많습니다.

체크리스트

  • 어느 프로젝트, 어느 범주(컴퓨팅, 데이터베이스, 대역폭, 저장 공간)의 비용이 가장 큰지 알고 있다.
  • 아무도 보지 않을 때 데이터베이스를 몇 초마다 폴링하는 것이 없다.
  • 대시보드가 적절한 간격으로만 새로고침하거나, 탭이 보일 때만 새로고침한다.
  • 타당한 이유 없이 앱을 깨어 있게 하는 업타임 모니터나 백그라운드 루프가 없다.
  • 서버는 제대로 작동하는 가장 작은 크기다.
  • 이미지는 크기가 줄어들고, 압축되고, 지연 로딩되며, 정적 파일은 캐싱된다.
  • 오래된 앱은 게시 취소되고, 오래된 파일은 삭제되고, 쓰지 않는 미리보기 링크는 제거되었다.
  • 데이터나 로그인이 없는 사이트는 정적 사이트다.
  • 유료 API에는 로그인, 사용자별 한도, 제공업체 지출 알림이 설정되어 있다.

Mythex에서 비용 줄이기

Mythex는 빌드와 호스팅에 하나의 크레딧 잔액을 사용하므로, 호스팅 비용을 줄이면 빌드에 쓸 크레딧이 더 남습니다. Mythex에서 특히 알아둘 점은 다음과 같습니다.

  • 게시된 앱과 데이터베이스는 유휴 상태일 때 잠들었다가 다음 방문에 깨어납니다. 데이터베이스는 5분 동안 유휴 상태이면 잠들므로, 끊임없는 폴링을 없애는 것이 보통 가장 큰 효과입니다.
  • Pro는 호스팅, 데이터베이스, 대역폭, 파일 저장 공간, 미리보기 샌드박스에 대해 Free 요금의 절반을 냅니다. AI 비용은 두 요금제 모두 같습니다. 크레딧을 보세요.
  • 잔액이 부족해 게시된 앱이 일시 정지되기 전에 이메일을 받으며, 일시 정지된 앱도 데이터베이스와 파일을 그대로 유지합니다.

운영 비용의 전체 그림은 앱 개발 비용과 웹 호스팅이란 무엇인가에서 확인할 수 있습니다.

자주 묻는 질문

앱 사용자가 적은데 호스팅 요금이 높은 이유는 무엇인가요?

보통 무언가가 계속 깨어 있게 만들고 있기 때문입니다. 데이터베이스를 몇 초마다 확인하는 코드, 1분마다 핑을 보내는 업타임 모니터, 잊혀진 백그라운드 루프 등이 방문자가 없어도 서버와 데이터베이스를 24시간 돌리게 합니다.

잠든 앱도 비용이 드나요?

0으로 줄어드는 호스트에서는 잠든 앱의 컴퓨팅 비용이 거의 없거나 전혀 없습니다. 보통 저장된 데이터에 대한 비용은 계속 냅니다. Mythex에서는 잠든 게시 앱의 컴퓨팅 비용이 없고, 데이터베이스는 5분 동안 유휴 상태이면 잠들며, 깨어 있던 시간만큼만 요금이 청구됩니다.

폴링은 호스팅 비용에 나쁜가요?

몇 초마다 폴링하면 데이터베이스가 한가한 시간이 없어 잠들 수 없습니다. 폴링 간격을 늘리거나, 누군가 페이지를 보고 있을 때만 폴링하거나, 요청하는 대신 변경 사항을 밀어(push) 주세요.

정적 사이트는 웹 앱보다 호스팅 비용이 저렴한가요?

보통 그렇습니다. 정적 사이트는 CDN에서 제공되는 파일일 뿐이어서, 계속 돌려야 하는 서버나 데이터베이스가 없습니다. 사이트에 로그인이나 저장된 데이터가 없다면 정적 사이트로 만드는 것이 가장 큰 절감 방법 중 하나입니다.

Mythex · Pricing · AI로 무엇이든 만들기 · 웹사이트 및 앱 템플릿 · Mythex 비교 · AI 앱 개발 용어집 · 무료 AI 앱 개발 도구 · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)