본문 바로가기

GCP Build (Firebasse, Cloudrun, SQL)

CloudStorage에 Application 파일 저장

반응형

☁️ 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 연동을 위해 다음 세 가지 정보가 미리 준비되어야 합니다.

  1. GCP Project ID: 구글 클라우드 프로젝트 고유 ID
  2. GCS Bucket Name: 파일을 저장할 버킷 이름 (GCP 콘솔에서 사전 생성 필요)
  3. 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 (권장)
  • 관리 방식:
    1. Secret Manager에 JSON 키 내용을 값(Value)으로 저장합니다.
    2. Cloud Run 설정에서 해당 시크릿을 환경 변수볼륨 마운트 방식으로 주입합니다.
    3. 파일 자체를 빌드 아티팩트(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