카테고리 없음

Cloud Shell 기초 이해

LireEruel 2025. 6. 22. 21:01

목차

Cloud Shell이란 무엇인가.


간단 정리

Cloud Shell은 브라우저에서 사용할 수 있는 GCP용 VM(Virtual Machine)이다.

이 VM 안에는 사전에 GCP를 다루는 모든 도구들이 세팅되어 있다.

장점

  • 시간, 장소에 구애받지 않고 어떤 환경에서든 바로 GCP 관련 작업을 할 수 있다.

Cloud shell 내부 구조

Cloud shell은 사용자에게 VM을 하나 빌려주는 것과 같음.

특징

  • 가상 컴퓨터 (VM - Virtual Machine):
    • 사용자가 Cloud Shell을 실행하면, Google은 사용자만을 위한 작은 가상 컴퓨터를 제공.
    • 이 가상 컴퓨터는 리눅스(Linux)라는 운영체제로 작동
    • 따라서 내가 한 작업은 다른 사람에게 공유되지 않다.
  • 미리 설치된 도구들:
    • 이 가상 컴퓨터 안에는 이미 Google Cloud를 다루는 데 필요한 모든 gcloud 명령어 도구들이 설치되어 있음.
    • Python nodejs 같은 프로그래밍 언어, Git 같은 형상 관리 도구 등 개발에 필요한 기본적인 프로그램들도 설치되어 있음.
  • 내 개인 저장 공간 ($HOME):
    • 가상 컴퓨터 안에는 사용자만을 위한 5GB짜리 개인 저장 공간이 있음
    • 여기에 파일을 저장하면, Cloud Shell을 닫았다가 다시 열어도 그 파일들이 그대로 남아있어요. (세션이 끝나도 사라지지 않아요.)
  • 웹 브라우저와의 연결:
    • 사용자의 웹 브라우저와 Google 데이터 센터의 이 가상 컴퓨터는 안전한 연결을 통해 이어져 있음.
    • 그래서 사용자가 웹 브라우저에 명령어를 입력하면, 그 명령어가 가상 컴퓨터로 전달되고, 가상 컴퓨터가 명령을 실행한 결과를 다시 웹 브라우저로 보여주는 방식.
    • 따라서 Google 인증도 처음에 한다.

Cloud shell과 리눅스 서버에 ssh로 접속하는 것의 차이

구분 Cloud Shell 리눅스 서버에 SSH 접속
접속 방식 GCP 콘솔에서 Cloud Shell 버튼 클릭 SSH 클라이언트 프로그램 사용 (PuTTY)
접속 대상 Google이 제공하는 독립된 임시 리눅스 환경 특정 리눅스 서버
인증 Google 계정으로 자동 인증, IAM 연동 IP, 사용자명, SSH Key 필요
파일 시스템 사용자별로 격리된 환경 제공 하나의 파일시스템에 다중사용자가 사용

(Gemini) 파일시스템 관점에서 loud Shell과 일반 리눅스 서버에서의 차이 비교

1. GCP Cloud Shell:

  • 기본 개념: Cloud Shell은 사용자에게 "격리된(Isolated)" 환경을 제공합니다. 즉, 내가 Cloud Shell을 열면 나만을 위한 임시 리눅스 가상 머신이 만들어지고, 다른 사용자의 Cloud Shell은 나의 것과는 완전히 다른 별개의 가상 머신입니다.
  • 파일 시스템:
    • 홈 디렉토리 ($HOME): Cloud Shell에 접속하면 $HOME 디렉토리는 오직 나만을 위한 5GB의 영구 저장소에 연결됩니다. 내가 여기에 저장하는 파일들은 다른 Cloud Shell 사용자의 $HOME 디렉토리와 전혀 공유되지 않습니다.
    • 공용 시스템 영역: Cloud Shell의 /etc, /usr/bin 등 시스템 전반의 디렉토리들도 나만을 위한 임시 인스턴스에 속합니다. 내가 여기에 어떤 변경을 가하더라도 다른 Cloud Shell 사용자의 환경에는 아무런 영향을 미치지 않습니다. 그들은 자신만의 격리된 시스템 환경을 가지고 있습니다.
  • 사용자 간 영향: 거의 없습니다. Cloud Shell은 각 사용자에게 완벽하게 분리된 환경을 제공하므로, 한 사용자의 작업이 다른 Cloud Shell 사용자의 작업물에 영향을 미칠 일은 극히 드뭅니다. (단, 내가 gcloud 명령어로 GCP 리소스를 만들면, 그 GCP 리소스 자체는 GCP 프로젝트 내의 다른 사용자에게 보이는 공유 리소스가 됩니다. 파일 시스템의 변경이 아니라 GCP 프로젝트 리소스 변경의 경우입니다.)

2. 일반 리눅스 서버 (예: Google Compute Engine VM):

  • 기본 개념: 일반적인 Compute Engine 인스턴스는 한 대의 물리적/가상 서버입니다. 여기에 여러 사용자가 SSH로 접속하여 함께 사용하는 경우가 많습니다.
  • 파일 시스템:
    • 홈 디렉토리 ($HOME): 각 사용자에게는 별도의 홈 디렉토리가 주어지지만, 이 홈 디렉토리들은 동일한 서버의 공유된 파일 시스템 내에 존재합니다. ls /home을 하면 다른 사용자의 홈 디렉토리도 볼 수 있습니다 (물론 권한 때문에 접근은 제한될 수 있습니다).
    • 공용 시스템 영역: /etc, /usr/bin 등 서버의 시스템 전반에 걸친 디렉토리들은 모든 사용자가 공유합니다.
    • 사용자 간 영향:
      • 내가 sudo 권한으로 /etc/nginx/nginx.conf 파일을 수정하면, 그 서버에 접속한 다른 모든 사용자의 웹 서비스 동작에 즉시 영향을 미칩니다.
      • 내가 /var/log 디렉토리에 로그 파일을 많이 쌓아 서버 디스크 공간을 부족하게 만들면, 다른 사용자들도 디스크 공간 부족을 겪게 됩니다.
      • 물론 $HOME 디렉토리 안에 개인적으로 만든 파일들은 다른 사용자에게 직접적인 영향을 주지 않습니다. 하지만 시스템 자원(CPU, 메모리, 디스크)은 공유하므로, 한 사용자가 자원을 많이 쓰면 다른 사용자도 성능 저하를 겪을 수 있습니다.

Cloud Shell 사용 방법

https://cloud.google.com/shell/docs/how-to?hl=ko