목차
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
같은 형상 관리 도구 등 개발에 필요한 기본적인 프로그램들도 설치되어 있음.
- 이 가상 컴퓨터 안에는 이미 Google Cloud를 다루는 데 필요한 모든
- 내 개인 저장 공간 (
$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 사용자의 환경에는 아무런 영향을 미치지 않습니다. 그들은 자신만의 격리된 시스템 환경을 가지고 있습니다.
- 홈 디렉토리 ($HOME): 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, 메모리, 디스크)은 공유하므로, 한 사용자가 자원을 많이 쓰면 다른 사용자도 성능 저하를 겪을 수 있습니다.
- 내가
- 홈 디렉토리 ($HOME): 각 사용자에게는 별도의 홈 디렉토리가 주어지지만, 이 홈 디렉토리들은 동일한 서버의 공유된 파일 시스템 내에 존재합니다.