Cloudflare Workers 환경 분리, 운영 리소스 혼용을 막는 설계 기준
“개발 Worker를 배포했는데 운영 D1을 가리키면 어떻게 막을 수 있을까?”
“환경 이름은 나눴지만 Queue와 R2까지 정말 분리됐는지 확신이 없다.”
“설정 한 줄 변경이 운영 데이터에 영향을 주지 않게 하려면 무엇을 확인해야 할까?”
Cloudflare Workers 환경 분리의 기준은 dev, staging, production이라는 이름이 아니라 각 바인딩이 실제로 가리키는 리소스입니다. 배포 전에는 설정의 연결 대상을 대조하고, 배포 후에는 예상한 대상에서 동작하는지 확인해야 운영 리소스 혼용을 줄일 수 있습니다.
알레오 서비스의 개발 총괄과 인프라 설계를 맡으며, 권승현은 구현, 로컬 검증, Git 반영, 원격 적용, 배포, 운영 수용을 서로 다른 완료 단계로 구분해 왔습니다. Workers 환경도 코드가 실행되는지만 볼 일이 아니라, 코드가 어느 데이터와 메시지 흐름에 연결되는지를 별도로 확인해야 합니다.
환경 이름만 나누면 왜 운영 리소스 혼용이 남을까요?

환경의 실제 경계는 Worker 이름이 아니라 바인딩이 연결하는 리소스입니다. 따라서 환경별 설정에서 바인딩 이름과 실제 대상을 함께 검토해야 합니다.
하나의 코드베이스를 여러 환경에 배포할 때, 코드의 바인딩 이름이 같다는 사실만으로 대상까지 분리됐다고 판단하기는 어렵습니다. D1 데이터베이스, R2 버킷, Queue, 서비스 바인딩, 인증 관련 값은 실행 시점에 어떤 설정으로 연결됐는지까지 확인해야 합니다.
환경을 설계할 때는 다음 네 질문에 답할 수 있어야 합니다.
- 이 Worker는 어느 환경에 배포되는가
- 이 환경에서 각 바인딩은 어떤 실제 리소스를 가리키는가
- 배포 명령과 검증 명령은 어느 환경을 대상으로 실행되는가
- 잘못된 대상이 감지되면 배포 전 어느 단계에서 중단되는가
논리적 이름과 실제 리소스 이름은 분리해 관리합니다

코드에서는 DB, ASSETS, JOBS처럼 기능을 나타내는 논리적 바인딩 이름을 일관되게 둘 수 있습니다. 반면 환경 설정에서는 각 이름이 어느 실제 리소스에 연결되는지 분명히 둡니다. 이 구분이 있으면 애플리케이션 코드를 수정하지 않고도 환경별 연결 대상을 검토할 수 있습니다.
| 구분 | 코드에서 보는 이름 | 환경 설정에서 확인할 대상 | 혼용 시 확인할 위험 |
|---|---|---|---|
| 데이터 저장소 | DB |
-cropped.png&w=3840&q=75)


