- 2026.07.29 Apps Script 프로젝트가 늘어나면 반드시 망가지는 것들
- 2026.07.16 매일 돌던 Apps Script 트리거가 갑자기 멈추는 이유
- 2026.07.15 브라우저 저장소에 고객정보 넣으면 생기는 문제
- 2026.07.07 브라우저가 내 데이터를 버릴 때: 초록 체크가 거짓말을 한다
- 2026.07.07 설치됨 ≠ 작동함: 백업 트리거가 한 번도 안 돌았다
- 2026.07.07 GAS엔 점진 배포가 없다: '맞는' 검사 하나가 전 사용자를 잠근다
- 2026.07.07 시트가 텍스트를 날짜로 바꾼다: '2026-06'이 완료를 영영 막을 때
- 2026.06.18 여러 사람이 한 시트에 쓰는 점검 앱: 동시성·중복·내보내기 설계
- 2026.06.12 셀을 한 칸씩 읽지 마라: 서비스 호출이 진짜 비용이다
- 2026.06.11 시트 셀에 JSON·이미지를 통째로 넣으면 터진다
- 2026.06.10 웹앱 배포 설정 하나가 보안 모델을 정한다: Execute as / 접근 권한
- 2026.06.09 GAS 6분 실행 한도: 멈추기 전에 끊어서 재개하라
- 2026.06.08 PropertiesService는 데이터베이스가 아니다: 9KB의 벽
- 2026.06.07 모바일에서 화면을 이미지로 저장할 때 멈추는 진짜 이유
- 2026.06.06 동시에 같은 시트를 쓰면 깨진다: LockService와 30 동시 실행 천장
- 2026.06.05 재배포할 때마다 주소가 바뀌면 안 된다: /exec URL 고정
- 2026.06.04 외부 호출은 가끔 실패한다: 지수 백오프와 재시도 예산
- 2026.06.03 HtmlService 앱은 껍데기 먼저: 비동기 로드와 모바일 뒤로가기
- 2026.06.02 GAS를 졸업해야 할 때: 한계 신호와 외부 DB 이전 지금 보는 글
- 2026.06.01 GAS에 지능과 엔진룸을 더하기: Vertex AI와 Cloud Run
GAS를 졸업해야 할 때: 한계 신호와 외부 DB 이전
GAS는 짧은 자동화에 강하고 장시간·대량·다수 동시에 약하다. 할당량은 계정 단위로 공유된다. 한계 신호를 미리 알고 이전 계획을 세워라.
GAS는 짧은 자동화와 Workspace 연동에 강하고, 장시간·대량·고동시성에 약하다. 처음엔 무료로 완벽히 돌다가, 규모가 커지면 한계에 부딪힌다. 그 신호를 미리 알면 갑작스러운 중단 대신 계획된 이전을 할 수 있다.
이전을 검토할 신호
- 데이터 양: 수십만 행을 넘어 시트가 느려진다 → 외부 DB(Cloud SQL·BigQuery·Firestore).
- 동시성: 동시 실행 30/user 천장에 부딪힌다 → 큐·외부 백엔드.
- 실행 시간: 6분으로 안 끝나는 작업이 늘어난다 → Cloud Run 같은 durable 백엔드.
- 쿼리: 복잡한 조인·집계가 필요하다 → 시트는 DB가 아니다.
정직한 함정: 할당량은 계정 단위 공유
여러 고객 앱을 한 구글 계정에 올리면 할당량이 합산된다. 트리거 총 실행시간(소비자 ~90분/일), 동시 실행 30, UrlFetch·메일 한도가 모든 앱에 공유된다. 한 고객의 무거운 작업이 다른 고객 앱을 멈출 수 있다. 데이터 보관 책임도 한 계정에 묶인다.
계정 전략 (대량 생성은 답이 아니다)
- 무료 지메일은 인증 한계·어뷰징 탐지로 막 만들 수 없고, 자동·대량 생성은 약관 위반(계정 정지=데이터 증발) 이다.
- 가벼운 앱은 공용 관리 계정에 묶고, 무겁거나 민감한 앱만 전용 계정으로 격리한다.
- 합법적 다수 발급이 필요하면 Google Workspace(도메인, 계정당 요금)로 간다.
깊이: 무엇이 “무거운가”
할당량은 주로 예약 실행·대량 메일·잦은 외부 호출에서 터진다. 사람이 열어서 저장·출력하는 가벼운 앱은 잘 안 건드린다. 그래서 “이 앱이 무거운가 + 데이터가 민감한가”를 수주 시점에 판단한다.
핵심 한 줄: 한계 신호(양·동시성·시간·쿼리)를 미리 알고, 무거운 것만 격리·이전하라.
자주 묻는 질문
- GAS에서 외부 DB로 이전을 검토해야 하는 신호는 무엇인가요?
- 수십만 행을 넘어 시트가 느려지거나, 동시 실행 30/user 천장에 부딪히거나, 6분 안에 끝나지 않는 작업이 생기거나, 복잡한 조인·집계가 필요해질 때입니다.
- 여러 고객 앱을 한 구글 계정에 올리면 어떤 문제가 생기나요?
- 할당량이 계정 단위로 합산되므로, 한 고객의 무거운 작업이 다른 고객 앱을 멈출 수 있습니다. 트리거 총 실행시간(소비자 ~90분/일), 동시 실행 30, UrlFetch·메일 한도가 모든 앱에 공유됩니다.
- 할당량 문제를 피하려면 구글 계정을 대량으로 만들면 되나요?
- 아닙니다. 자동·대량 생성은 약관 위반이며 계정 정지 시 데이터가 증발합니다. 무겁거나 민감한 앱만 전용 계정으로 격리하고, 합법적으로 다수 계정이 필요하면 Google Workspace로 가야 합니다.
- 2026.07.29 Apps Script 프로젝트가 늘어나면 반드시 망가지는 것들
- 2026.07.16 매일 돌던 Apps Script 트리거가 갑자기 멈추는 이유
- 2026.07.15 브라우저 저장소에 고객정보 넣으면 생기는 문제
- 2026.07.07 브라우저가 내 데이터를 버릴 때: 초록 체크가 거짓말을 한다
- 2026.07.07 설치됨 ≠ 작동함: 백업 트리거가 한 번도 안 돌았다
- 2026.07.07 GAS엔 점진 배포가 없다: '맞는' 검사 하나가 전 사용자를 잠근다
- 2026.07.07 시트가 텍스트를 날짜로 바꾼다: '2026-06'이 완료를 영영 막을 때
- 2026.06.18 여러 사람이 한 시트에 쓰는 점검 앱: 동시성·중복·내보내기 설계
- 2026.06.12 셀을 한 칸씩 읽지 마라: 서비스 호출이 진짜 비용이다
- 2026.06.11 시트 셀에 JSON·이미지를 통째로 넣으면 터진다
- 2026.06.10 웹앱 배포 설정 하나가 보안 모델을 정한다: Execute as / 접근 권한
- 2026.06.09 GAS 6분 실행 한도: 멈추기 전에 끊어서 재개하라
- 2026.06.08 PropertiesService는 데이터베이스가 아니다: 9KB의 벽
- 2026.06.07 모바일에서 화면을 이미지로 저장할 때 멈추는 진짜 이유
- 2026.06.06 동시에 같은 시트를 쓰면 깨진다: LockService와 30 동시 실행 천장
- 2026.06.05 재배포할 때마다 주소가 바뀌면 안 된다: /exec URL 고정
- 2026.06.04 외부 호출은 가끔 실패한다: 지수 백오프와 재시도 예산
- 2026.06.03 HtmlService 앱은 껍데기 먼저: 비동기 로드와 모바일 뒤로가기
- 2026.06.02 GAS를 졸업해야 할 때: 한계 신호와 외부 DB 이전 지금 보는 글
- 2026.06.01 GAS에 지능과 엔진룸을 더하기: Vertex AI와 Cloud Run