-
Firebase Functions V2에서 함수가 배포되지 않는 이상한 경험프로그래밍 2025. 5. 21. 13:55반응형
Firebase Functions를 V2 환경으로 쓰면서, 예상치 못한 문제를 하나 겪었다.
기존에 배포되어 있던 Cloud Function
processAudio
는 잘 작동하고 있었고,
이걸 병렬 처리 방식으로 개선한processAudioParallel
이라는 새로운 함수를 하나 추가했다.기대한 건 단순했다.
index.js
에 새로 export만 해주면, Firebase CLI가 이걸 읽고 콘솔에 등록해줄 줄 알았다.// functions/index.js exports.processAudioParallel = onCall({ ... }, async (request) => { // 기존 함수에서 pLimit 등으로 병렬 처리만 추가 });
그리고 나서 CLI로 배포했다.
firebase deploy --only functions:processaudioparallel
결과는…
✔ Deploy complete!
라는 초록색 메시지.
그런데 콘솔에 들어가 보니 함수가 없다?심지어 Cloud Functions 리스트에도 없고,
firebase functions:list
에도 안 뜬다.
배포 로그에도 따로 실패 메시지는 없고, 조용히 "0개 함수 배포됨"이라니...이게 무슨 상황이지?
처음엔 함수 이름을 잘못 썼나 싶어서
functions:processAudioParallel
이 아니라functions:processaudioparallel
로 소문자 처리해서도 해보고,
기존 함수 이름도 함께 넣어보고, 전체 배포도 해봤다. 그래도 안 보였다.결론부터 말하면,
Firebase CLI가 기존 함수와 너무 비슷한 구조의 새로운 함수를 "중복"으로 판단해서 무시했던 게 아닌가 싶다CLI는 너무 똑똑해서 탈
Firebase Functions V2(GEN2)는 함수 이름만 보고 새 함수로 판단하지 않는다.
내부 구조나 핸들러 함수가 유사하면, “같은 함수의 또 다른 export”라고 간주하고 배포에서 조용히 제외한다고 한다CLI는 이런 판단을 해놓고도 개발자에게 경고도 안 띄워준다.
deploy
는 성공했다고 뜨고, 정작 함수는 콘솔에 안 보인다.
굉장히 헷갈린다.해결 방법
방법은 의외로 간단했다.
index.js
에 기존 함수인processAudio
도 함께 다시 export 해주면 된다.exports.processAudio = onCall(...); // 기존 함수 exports.processAudioParallel = onCall(...); // 병렬 처리 버전
이렇게 두 개를 나란히 export하고 나서 전체 배포를 해보니,
firebase deploy --only functions
이번엔 둘 다 정확히 인식되고, Firebase 콘솔에도
processAudioParallel
이 떴다.근본적인 생각
개발자로서 이해는 간다.
CLI가 중복 함수를 배제해서 불필요한 배포를 줄이려는 의도겠지만,
“함수 이름이 다르면 일단 배포는 시도해줘야 하는 거 아닌가?” 라는 생각이 강하게 들었다.게다가:
- CLI는 무시된 이유를 설명하지 않고,
- 함수 목록에서 보여주지도 않으며,
functions:list
같은 명령어로도 export된 함수 상태를 확인할 방법이 없다.
이건 개선의 여지가 충분해 보인다.
만약 Firebase Functions V2에서 새로운 함수를 추가했는데 배포가 안 되고,
콘솔에도 안 보이고, 로그에 실패 메시지도 없다면
기존 함수와 구조가 너무 비슷한 건 아닌지 확인해보자.그리고 해결은 간단하다.
기존 함수도 함께 export해주면 CLI가 두 함수를 확실히 구분해서 배포해준다.이 글이 같은 문제로 삽질하는 분들에게 도움이 되길.
728x90반응형'프로그래밍' 카테고리의 다른 글
Cursor.ai 무한 로딩 오류 해결 방법 (윈도우 기준) (0) 2025.06.16 음성 파일 분할 처리에서 왜 "오버랩 구간"이 필요할까? (0) 2025.06.16 pycharm git 에러 - Request response: Access to this site has been restricted. (0) 2025.01.17 pycharm에서 github 프로젝트 가져오기 (0) 2024.10.31 hiberfil.sys 삭제 방법 (0) 2024.07.25