[GCP] Cloud Storage에 대해서 알아보자

김영진·2022년 9월 14일
0

GCP

목록 보기
1/3
post-thumbnail

목적

이미지 업로드를 서버에서 릴레이 해주는 방식으로 하고 있었는데 이번 개발 스프린트에서는 클라이언트에서 올리기로 하였음. 따라서 GCP에 대한 이해가 필요할것같아 문서화 합니다.

내용

Cloud Storage란 무엇인가요?

이 페이지에서는 Cloud Storage와 작동 방식을 간략하게 설명합니다.

Cloud Storage는 Google Cloud에 Object(객체)[이하 객체] 를 저장하는 서비스입니다. 객체는 모든 형식의 파일로 구성된 변경할 수 없는 데이터조각 입니다. 객체를 Bucket(버킷)[이하버킷] 이라는 컨테이너에 저장합니다. 모든 버킷은 Project[프로젝트]와 연결되며 프로젝트를 Company[조직]아래에서 그룹화할 수 있습니다. Google Cloud의 각 프로젝트, 버킷, 객체는 Compute Engine 인스턴스와 같은 Google Cloud의 리소스입니다.

프로젝트를 만든 후 Cloud Storage 버킷을 만들고 버킷에 객체를 업로드하고 버킷에서 객체를 다운로드 할 수 있습니다. 또한 지정된 주 구성원 또는 웹사이트 호스팅과 같은 특정 사용 사례의 경우 공개 인터넷의 모든 사용자가 데이터에 엑세스 가능하도록 권한을 부여할 수 있습니다.

Google Cloud 아키텍처


Cloud Storage 구조가 실제 사례에 적용되는 방법은 다음과 같습니다.

  • 조직 : Example.Inx 라는 회사에서 exampleinc.org 라는 Google Cloud 조직을 만듭니다.
  • 프로젝트 : Example.Inc는 여러 애플리케이션을 빌드하며 각 애플리케이션은 프로젝트와 연결됩니다. 각 프로젝트에는 자체 Cloud Storage API 세트와 기타 리소스가 있습니다.
  • 버킷 : 각 프로젝트에는 객체를 저장할 컨테이너인 버킷이 여러 개 포함될 수 있습니다. 예를들어 앱이 생성하는 모든 이미지 파일을 위한 photos 버킷 및 별도의 videos 버킷을 만들 수 있습니다.
  • 객체 : puppy.png 라는 이미지 파일과 같은 개별 파일

Cloud Storage용 기본 도구

다음은 Cloud Storage와 상호작용할 수 있는 기본적인 몇가지 방법입니다.

  • Console : Google Cloud Console은 브라우저에서 데이터를 관리할 수 있는 시각적인터페이스를 제공합니다.
  • gsutil : gsutil은 터미널을 통해 Cloud Storage와 상호작용할 수 있는 명령줄 도구입니다. 다른 Google Cloud 서비스를 사용하는 경우 다른 서비스의 gcloud 도구와 함께 gsutill이 포함된 Google Cloud CLI를 다운로드 할 수 있습니다.
  • 클라이언트 라이브러리 : Cloud Storage클라이언트 라이브러리로 C++, C#, Go, JAVA, Node.js, PHP, Python, Ruby등 선호하는 언어 중 하나를 사용하여 데이터를 관리할 수 있습니다.
  • REST API : JSON, XML API를 사용하여 데이터를 관리합니다.

데이터 보안

객체를 Cloud Storage에 업로드하면 데이터를 보호하고 공유하는 방법을 세밀하게 제어할 수 있습니다. 다음은 Cloud Storage에 업로드하는 데이터를 보호하는 몇가지 방법입니다.

  • ID 및 엑세스 관리 : IAM을 사용하여 Google Cloud 프로젝트의 리소스에 엑세스 할 수 있는 사용자를 관리합니다. 리소스에는 Cloud Storage 버킷과 객체는 물론 Compute Engine 인스턴스와 같은 다른 Google Cloud 항목도 포함됩니다. update, create, delete 등 버킷과 객체에 대한 특정 유형의 엑세스 권한을 주 구성원들에게 부여할 수 있습니다.
  • 데이터 암호화 : Cloud Storage는 기본적으로 서버 측 암호화를 사용하여 데이터를 암호화합니다. 고객관리암호화 키 및 고객제공암호화키 와같은 보조 데이터 암호화 옵션을 사용할 수 있습니다.
  • 인증 : 데이터에 엑세스하는 모든 사용자에게 적절한 사용자 인증 정보가 있는지 확인합니다.
  • 버킷 잠금 : 보관 정책을 지정하여 버킷의 객체를 보관할 기간을 지정합니다.
  • 객체 버전 관리 : 객체 버전 관리를 사용 설정하면 교체되거나 삭제되는 객체의 라이브 버전을 현재 외 버전으로 유지할 수 있습니다.

Cloud Storage 사용 사례

정적 웹사이트 호스팅을 시작하여 Cloud Storage 버킷을 통해 파일을 업로드하고 공유하는 방법을 알아볼 수 있습니다. 빅데이터, 웹개발, 머신러닝, 컨테이너 등 다양한 주제를 다루면서 Cloud Storage를 다른 Google Cloud서비스와 함께 사용하는 방법을 알아보려면 Cloud Storage를 사용하는 Google Cloud 자습서를 참조하세요.

리소스 이름

각 리소스에는 파일 이름과 마찬가지로 리소스를 식별하는 고유 이름이 있습니다. 버킷에는 projects/_/buckets/BUCKET_NAME 형태의 리소스 이름이 있으며, 여기서 BUCKETNAME은 버킷 ID 입니다. 객체에는 `projects//buckets/BUCKET_NAME/object/OBJECT_NAME형태의 리소스 이름이 있으며, 여기서OBJECT_NAME`은 객체 ID입니다.

리소스 이름 끝에 추가되는 #NUMBER는 객체의 특정 세대를 나타냅니다. #0은 객체의 가장 최신 버전을 나태내는 특별 식별자 입니다. 객체 이름이 문자열 끝에 있어 세대 번호로 해석될 우려가 있는 경우에 #0을 추가하면 유용합니다.

결과

  • Cloud Storage에는 Company, Application=>Project, Bucket, Object가 있으며 각각 회사, 프로젝트, 객체가 담겨있는 폴더, 파일 정도의 의미를 가진다.
  • Cloud Storage는 콘솔, gsutil, 클라이언트 라이브러리, json xml restful api 4가지 방법으로 제어할 수 있는데 콘솔을 제외한 나머지 방법은 플러터에서 어떻게 사용하는지 자세히 알아볼 필요가 있을 것 같다.
  • 데이터 접근을 제어하는 방법에는 5가지 정도가 있는데, 사용자 기반으로 관리하거나, 데이터 자체를 암호화하거나, 인증키로 접근할수있게하거나, 데이터 자체에 보관할 기간을 설정하거나, 데이터를 버저닝해서 관리할 수 있다.
profile
2021.05.03) Flutter, BlockChain, Sports, StartUp

0개의 댓글