반응형
☁️ Google Cloud Storage (GCS) 활용 가이드
효율적인 파일 관리를 위해 실제 파일은 GCS에 저장하고, 데이터베이스(DB)에는 해당 파일의 **경로(URL)**만 기록하는 방식을 권장합니다.
1. GCS 선택 이유
- 무제한 용량 & 저렴한 비용: 대용량 파일 저장에 최적화되어 있으며 확장성이 뛰어납니다.
- Cloud Run 통합: Google Cloud 생태계 내에서 인증 및 접근 관리가 용이합니다.
- 정적 파일 서빙: 업로드된 파일을 사용자가 즉시 확인할 수 있도록 고유 URL 제공이 편리합니다.
2. 권장 저장소 구조 (Directory Structure)
기능(Domain)별로 최상위 폴더를 나누고 하위에 식별자(ID)를 두어 관리하는 것이 효율적입니다.
| 최상위 폴더 | 하위 구조 | 용도 |
| users/ | {user_id}/ | 사용자 프로필, 개인 사진첩 |
| community/ | {post_id}/ | 커뮤니티 게시글 이미지 및 첨부 파일 |
| chat/ | {room_id}/ | 채팅방 공유 파일 |
💡 Tip: 파일명은 중복 및 충돌 방지를 위해 UUID를 사용하여 저장하는 것을 권장합니다.
3. 구현을 위한 필수 준비물
GCS 연동을 위해 다음 세 가지 정보가 미리 준비되어야 합니다.
- GCP Project ID: 구글 클라우드 프로젝트 고유 ID
- GCS Bucket Name: 파일을 저장할 버킷 이름 (GCP 콘솔에서 사전 생성 필요)
- Service Account Key (JSON): GCS 접근 권한이 부여된 서비스 계정의 인증 키 파일
4. 개발 환경 설정 (Java/Spring 기준)
정보가 준비되면 pom.xml에 아래 의존성을 추가하여 업로드 로직 구현을 시작할 수 있습니다.
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-storage</artifactId>
</dependency>
🔐 GCP 서비스 계정 키 관리 가이드
보안과 운영 효율성을 위해 개발 환경과 **운영 환경(Cloud Run)**을 분리하여 관리하는 것이 핵심입니다.
1. 로컬 개발 환경 (Local Development)
- 저장 위치: src/main/resources/ 폴더 내부
- 주의 사항:
- .gitignore에 반드시 추가: 키 파일이 GitHub 등 공용 저장소에 업로드되지 않도록 설정해야 합니다.
- 파일명 예시: gcp-key.json
2. 배포 및 운영 환경 (Cloud Run)
- 저장 위치: GCP Secret Manager (권장)
- 관리 방식:
- Secret Manager에 JSON 키 내용을 값(Value)으로 저장합니다.
- Cloud Run 설정에서 해당 시크릿을 환경 변수나 볼륨 마운트 방식으로 주입합니다.
- 파일 자체를 빌드 아티팩트(Docker 이미지 등)에 포함하는 것은 보안상 절대 금지됩니다.
3. 유연한 설정을 위한 application.yml 활용
환경에 따라 경로를 다르게 인식할 수 있도록 설정 파일에 변수를 사용하세요.
YAML
spring:
cloud:
gcp:
storage:
credentials:
location: ${GCP_KEY_PATH:classpath:gcp-key.json}
- 로컬: 기본값인 classpath:gcp-key.json을 사용합니다.
- 운영: 환경 변수 GCP_KEY_PATH를 통해 Secret Manager가 마운트된 경로를 주입합니다.
- 끝 -
반응형
'GCP Build (Firebasse, Cloudrun, SQL)' 카테고리의 다른 글
| FireBase 호스팅 방법 (0) | 2025.12.24 |
|---|