
해당 내용은 Google Cloud AI 활동간 이우성 강사님의 강의를 토대로 작성하였습니다.
GCP를 사용하는 방법에는 크게 3가지가 있습니다
GCP Console 이용 - GUI
GCP SDK 이용 - CLI
Cloud Client Library 이용
그래픽 사용자 인터페이스(GUI)
GCP Console은 웹 기반의 관리 도구로, 사용자들이 직관적인 그래픽 인터페이스를 통해 GCP 서비스를 쉽게 관리할 수 있습니다. 주로 클릭과 드래그로 이루어진 관리 방식을 제공하며, 다음과 같은 특징이 있습니다:
강력한 웹 관리 UI: 모든 리소스를 시각적으로 관리할 수 있습니다.
빠른 리소스 검색: 검색창에서 원하는 리소스를 쉽게 찾을 수 있습니다.
언제 어디서나 작업 수행: 웹만 있으면 어디서나 접속해 리소스를 관리할 수 있습니다.
데이터에서 정보 확보: 다양한 분석 도구를 통해 데이터 기반의 통찰을 얻을 수 있습니다.주 사용 예시:
VM(가상머신) 생성: 클릭만으로 간단히 VM을 생성하고 관리할 수 있습니다.
네트워크 및 방화벽 규칙 관리: 네트워크 설정을 직관적으로 관리하고 방화벽 규칙도 쉽게 추가할 수 있습니다.

명령줄 인터페이스(CLI)
GCP SDK는 명령어 기반의 도구로, 개발자나 관리자가 터미널에서 명령어를 입력하여 GCP 리소스를 관리하는 방식입니다. 이 방식은 스크립팅과 자동화에 유리합니다.
Google CLI: gcloud 명령을 사용하여 리소스와 서비스를 관리합니다.
로컬 개발 지원: 데이터 에뮬레이터나 Cloud Shell로 로컬 개발 환경에서 작업 속도를 높일 수 있습니다.
다양한 프로그래밍 언어 지원: Java, Python, Go 등 여러 언어로 작업이 가능합니다.
주요 명령어:
gcloud init: GCP SDK 초기화 (계정, 프로젝트, 리전 설정)
gcloud auth login: GCP 계정 인증
gcloud compute instances create: VM 인스턴스 생성
gcloud logging logs list: 로그 확인주 사용 예시:
VM 생성 및 관리: 명령어로 신속하게 VM을 생성하고 관리할 수 있습니다.
프로젝트 및 리소스 설정: CLI를 통해 코드로 설정을 관리하므로 일괄적인 작업이 가능합니다.
Cloud SDK
Cloud Shell로 gcloud 명령어 실행
Google Cloud CLI 설치
gcloud 명령
gcloud CLI 사용을 위한 인증
gcloud CLI 승인
gcloud CLI 요약본
일반 gcloud compute 명령어
Cloud Shell 및 gcloud 시작하기
프로그래밍 방식
Cloud Client Libraries는 개발자들이 프로그래밍 언어를 사용해 GCP API에 쉽게 접근할 수 있도록 도와주는 라이브러리입니다. 이는 GCP API에 대한 직접적인 요청보다 훨씬 간소화된 방법을 제공합니다.
직관적이고 간단한 사용: 각 언어별로 관용적인 코드 스타일을 제공해 API를 쉽게 사용할 수 있습니다.
자동화된 처리: 인증과 같은 서버 간 통신의 세부 정보를 라이브러리가 자동으로 처리합니다.
gRPC 지원: 일부 API는 gRPC를 사용하여 더 높은 성능을 제공합니다.주 사용 예시:
Python, Node.js 같은 언어로 GCP 서비스를 자동화하여 사용할 때, Cloud Client Libraries를 사용하면 코드를 더 간결하고 쉽게 작성할 수 있습니다.
예를 들어, Python으로 Google Cloud Storage에 파일을 업로드하는 작업을 몇 줄의 코드로 해결할 수 있습니다.
GCP Console: 클릭 기반의 웹 관리 인터페이스로 GCP를 쉽게 관리.
GCP SDK: 명령어를 통해 GCP 리소스를 터미널에서 효율적으로 관리.
Cloud Client Libraries: 프로그래밍 언어를 통해 GCP API를 간편하게 사용할 수 있는 라이브러리.

IAM(Identity and Access Management)는 누가(사용자, 그룹, 서비스 계정) 어떤 리소스에 대해 어떤 권한을 가질 수 있는지 결정할 수 있게 하는 도구입니다.

Who(누가): 접근 권한을 가질 수 있는 대상(개인, 그룹, 서비스 계정).
Which Resource(어떤 리소스): 접근하려는 GCP 리소스(예: Compute Engine 인스턴스, Cloud Storage 버킷).
What Role(어떤 역할): 그 리소스에서 수행할 수 있는 작업(읽기, 쓰기, 수정 등).
개인 계정: 개인 Google 계정(이메일 주소)으로 리소스에 접근할 수 있습니다.
그룹: 여러 사용자를 하나로 묶어 권한을 부여할 수 있습니다. 예를 들어, Google 그룹을 이용해 여러 사람에게 동일한 권한을 한 번에 부여할 수 있습니다.
서비스 계정: 애플리케이션이나 VM 인스턴스가 API를 호출할 때 사용하는 계정입니다. 사람이 직접 사용하지 않고 애플리케이션이 자동으로 사용하는 계정입니다.
IAM 정책은 누가 어떤 리소스에 어떤 액세스 권한을 가질지를 정의한 규칙입니다.
정책은 바인딩(Binding)으로 구성되며, 바인딩은 특정 구성원에게 특정 역할을 부여하는 설정입니다.
역할은 특정 작업을 수행할 수 있는 권한의 집합입니다. 역할을 구성원에게 할당해 그 구성원이 해당 권한을 가진 리소스에 접근할 수 있게 합니다.
기본 역할(Primitive Roles): 넓은 범위의 권한을 가진 역할들입니다. 예를 들어, Owner, Editor, Viewer가 있으며 각각의 역할이 프로젝트의 리소스를 관리할 수 있는 범위가 다릅니다.
Owner: 모든 리소스에 대해 완전한 관리 권한을 가집니다.
Editor: 리소스를 생성, 수정, 삭제할 수 있는 권한을 가집니다.
Viewer: 리소스를 보기만 할 수 있는 권한을 가집니다.사전 정의된 역할(Predefined Roles): 특정 서비스에 맞춰 세분화된 권한을 가진 역할입니다. 예를 들어, Compute Engine 관리자를 위한 Compute Instance Admin 역할이 있습니다.
사용자 지정 역할(Custom Roles): 조직의 필요에 맞게 하나 이상의 권한을 결합해 만든 역할입니다.

리소스는 GCP의 개별 구성요소입니다. 예를 들어, 가상 머신 인스턴스(Compute Engine), Cloud Storage 버킷, BigQuery 데이터세트 등이 리소스에 해당합니다.
조직 : GCP 리소스 관리의 최상위 구조입니다. 조직 관리자 역할이 있으며, 조직 내의 모든 리소스를 관리할 수 있습니다.
폴더 : 프로젝트와 폴더를 그룹화해 관리 구조를 더 세밀하게 만들 수 있습니다.
프로젝트 : 리소스를 그룹화하는 기본 단위로, 각 프로젝트는 고유한 청구서, 설정, 액세스 권한을 가집니다.

역할(Role) 할당 : IAM의 가장 중요한 기능 중 하나는 구성원에게 역할을 할당하여 리소스에 대한 접근 권한을 부여하는 것입니다. 역할은 여러 리소스에 걸쳐 적용될 수 있습니다.
액세스 권한 부여 방법:
직접 할당: 구성원에게 특정 리소스에 대한 권한을 직접 부여합니다.
역할을 통한 할당: 필요한 권한을 가진 역할을 구성원에게 할당합니다. 이 방법이 일반적으로 사용됩니다.
조직 관리자(Organization Administrator): 전체 조직의 리소스를 관리하는 가장 높은 권한을 가진 역할입니다.
프로젝트 생성자(Project Creator): 새로운 프로젝트를 만들고 관리할 수 있는 역할입니다.
결제 계정 생성자(Billing Account Creator): 결제 관련 설정을 관리할 수 있는 역할입니다.
GCP IAM은 클라우드 리소스에 대한 접근을 제어하고 관리하기 위한 중요한 도구입니다. 누가 어떤 리소스에 대해 어떤 역할을 가질지를 설정함으로써 보안과 관리의 효율성을 높일 수 있습니다. IAM을 잘 활용하면 조직 내에서 필요에 맞는 권한을 부여하고, 최소한의 권한으로 최대한의 보안을 유지할 수 있습니다.

VPC(가상 사설 클라우드): GCP에서 제공하는 가상 네트워크로, 사용자가 원하는 대로 네트워크 구조를 설정할 수 있습니다. VPC는 전 세계 모든 GCP 리전에서 사용할 수 있으며, 다운타임 없이 IP 공간을 확장할 수 있습니다.
네트워크 서비스: VPC는 GCP 내에서 네트워크를 가상화하여 제공하는 서비스입니다.
포트 번호(Port Number)
네트워크 통신을 수행하는 프로세스에 부여되는 번호로, 특정 서비스를 구분하는 데 사용됩니다.
예를 들어, 22번 포트는 SSH(원격 접속), 80번 포트는 HTTP(웹 서비스), 443번 포트는 HTTPS(보안 웹 서비스)에 사용됩니다.IP 주소(IP Address)
네트워크에 연결된 컴퓨터(호스트)마다 부여되는 고유 번호입니다.
IPv4는 32비트 주소 체계를 사용하여 네트워크 ID와 호스트 ID로 구성됩니다. 예를 들어, 192.168.0.0 같은 형식으로 표현됩니다.
IPv6는 128비트 주소 체계를 사용하여 더 많은 주소 공간을 제공합니다.게이트웨이(Gateway)
네트워크 외부와 통신하기 위한 출입구 역할을 합니다. 통상적으로 네트워크의 마지막 IP 주소를 게이트웨이로 설정합니다.라우터(Router)
네트워크 간의 경로를 탐색하고 데이터를 전달하는 역할을 합니다. 라우팅 테이블을 사용하여 각 호스트의 경로 정보를 관리합니다.
VPC 네트워크
VPC 네트워크는 서브넷 및 네트워크 정책을 자동 또는 수동으로 설정할 수 있습니다.
CIDR(무클래스 도메인 간 라우팅) 범위를 확장하여 다운타임 없이 IP 주소 공간을 늘릴 수 있습니다.
VPC 흐름 로그
VPC 흐름 로그는 네트워크 인터페이스에서 송수신되는 IP 트래픽 정보를 기록합니다.
이 로그는 네트워크 모니터링, 포렌식, 실시간 보안 분석, 비용 최적화 등에 사용됩니다.
VPC 피어링
VPC 피어링을 통해 같은 조직 내 또는 다른 조직 간의 비공개 통신을 구성할 수 있습니다.
공유 VPC
조직의 여러 프로젝트에서 VPC 네트워크를 공유할 수 있습니다. 이를 통해 중앙에서 네트워크 및 방화벽 설정을 관리하면서도, 각 프로젝트는 독립적으로 운영할 수 있습니다.
자체 IP 사용
사용자는 자신의 IP 주소를 Google Cloud에 가져와 사용하고, 이를 전 세계에 공지할 수 있습니다. 이 기능은 마이그레이션 중 다운타임을 최소화하고 네트워킹 인프라 비용을 절감할 수 있게 해줍니다.
VPC 네트워크 생성
VPC 네트워크 생성 시 이름을 지정하고, 내부 IPv6 범위를 비활성화할 수 있습니다.
서브넷은 자동으로 생성되거나, 사용자가 직접 설정할 수 있습니다. 일반적으로 서브넷은 Custom으로 설정하여 원하는 대로 구성합니다.
서브넷 설정
External Subnet과 Internal Subnet을 각각 2개씩 생성할 수 있습니다.
서브넷에는 IP 범위를 할당하며, 예를 들어 172.22.36.0/26 같은 CIDR 형식을 사용합니다.
방화벽 규칙(Firewall Rules)
기본 제공되는 방화벽 규칙을 적용하거나, 커스텀 규칙을 추가할 수 있습니다.
예를 들어, 특정 IP 범위 내에서 모든 프로토콜과 포트를 허용하거나, ICMP(핑) 체크를 허용하는 규칙을 설정할 수 있습니다.
동적 라우팅 모드
Regional 모드: 같은 리전 내에서만 라우팅이 적용됩니다.
Global 모드: 리전과 관계없이 모든 인스턴스에 라우팅이 적용됩니다.
Compute Engine 가상 머신(VM) 인스턴스 연결: VPC 네트워크는 VM 인스턴스에 네트워크 연결을 제공합니다.
내부 애플리케이션 부하 분산: 기본적인 내부 패스스루 네트워크 부하 분산기 및 프록시 시스템을 지원합니다.
Cloud VPN 및 Cloud Interconnect: 온프레미스 네트워크와의 연결을 지원합니다.

GCP의 VPC는 클라우드에서의 가상 네트워크를 쉽게 설정하고 관리할 수 있는 강력한 도구입니다. VPC를 통해 네트워크를 안전하게 분리하고, IP 주소를 관리하며, 네트워크 트래픽을 모니터링할 수 있습니다. VPC의 유연한 설정을 통해 각 프로젝트와 서비스에 맞는 최적의 네트워크 구성을 할 수 있습니다.
VPC 네트워크
VPC 네트워킹 기초
VPC 네트워크 - 액세스 제어

(Preemptible VM Instances)
정의: 선점형 VM 인스턴스는 GCP 내에서 사용되지 않는 리소스를 활용해 일반 인스턴스보다 훨씬 저렴하게 제공되는 VM입니다.
주요 특징:
리소스가 남아있을 때만 사용할 수 있기 때문에 비용이 저렴합니다.제약사항:
언제든지 종료될 수 있으며, 24시간 이상 실행되지 않습니다.
유지관리 이벤트가 발생하면 실시간으로 마이그레이션되지 않고, 즉시 종료됩니다.
이런 제약 때문에 SLA(서비스 수준 계약) 보장이 적용되지 않습니다.활용: 비용이 중요한 작업에 적합합니다. 제약 사항을 견딜 수 있는 경우 비용을 크게 절감할 수 있습니다.
(Instance Templates)
정의: VM 인스턴스와 인스턴스 그룹을 생성하는 데 필요한 설정을 미리 정의한 템플릿입니다.
주요 특징:
목적: 동일한 구성을 가진 인스턴스를 여러 개 만들기 위해 사용됩니다.
설정 항목: 머신 유형, 부팅 디스크 이미지, 영역, 라벨 등 다양한 설정을 포함할 수 있습니다.
변경 불가: 기존 템플릿은 수정할 수 없으며, 변경이 필요할 경우 새 템플릿을 생성해야 합니다.
범위: 전역 리소스이지만, 특정 영역을 지정하면 그 영역으로 제한될 수 있습니다.
(Snapshots)
정의: 스냅샷은 영구 디스크의 백업을 의미합니다. 주로 데이터를 복구하거나 다른 프로젝트에서 접근할 수 있게 하는 데 사용됩니다.
활용 예시: 시스템 문제 발생 시 스냅샷을 사용해 데이터를 복구하거나, 다른 VM에서 동일한 데이터를 사용할 수 있습니다.
(Instance Groups)
정의: 여러 VM 인스턴스를 그룹으로 묶어 관리할 수 있는 기능입니다. 인스턴스 그룹은 크게 관리형(Managed)과 비관리형(Unmanaged)으로 나뉩니다.
(Managed Instance Groups)
동일한 인스턴스: 인스턴스 템플릿을 사용해 동일한 구성의 인스턴스를 자동으로 생성하고 관리합니다.
자동화 기능:
Auto Scaling: 트래픽에 따라 인스턴스 수를 자동으로 조절합니다.
자동 복구: 인스턴스에서 문제가 발생하면 자동으로 복구하거나 재생성합니다.
부하 분산: 여러 인스턴스에 트래픽을 분산해 시스템의 안정성을 높입니다.유형:
영역 관리형 인스턴스 그룹: 단일 영역에 인스턴스를 배포합니다.
지역 관리형 인스턴스 그룹: 여러 영역에 인스턴스를 분산시켜 가용성을 높입니다.
(Unmanaged Instance Groups)
자유로운 구성: 서로 다른 구성의 인스턴스를 추가하거나 제거할 수 있습니다.
자동화 기능 미지원: Auto Scaling, 자동 복구, 인스턴스 템플릿 사용 등 관리형 인스턴스 그룹에서 제공하는 기능을 지원하지 않습니다.
활용: 높은 가용성과 확장이 중요한 작업에는 적합하지 않지만, 필요에 따라 인스턴스를 유연하게 관리할 수 있습니다.
전역(Global), 지역(Region), 영역(Zone)
전역 리소스(Global Resources): 모든 리전과 영역에서 접근 가능한 리소스입니다.
ex) 이미지(모든 인스턴스가 접근 가능), VPC 네트워크, 방화벽, 경로, 인스턴스 템플릿 등.
지역 리소스(Region Resources): 동일한 지역 내의 리소스에서만 접근 가능한 리소스입니다.
ex) 지역 고정 외부 IP 주소, 서브넷, 지역 영구 디스크 등.
영역 리소스(Zone Resources): 특정 영역 내에서만 접근 가능한 리소스입니다.
ex) 가상 머신 인스턴스, 영역 영구 디스크, 머신 유형 등.
활용 예시: 시스템 설계 시 리소스의 범위를 고려해 설계하면, 더 나은 가용성과 성능을 얻을 수 있습니다.
정의: 트래픽이 특정 인스턴스에 집중되지 않도록 여러 VM 인스턴스에 트래픽을 분산하는 기술입니다.
종류:
Global: 전 세계적으로 트래픽을 분산합니다. 예를 들어, 전역 서비스에 사용됩니다.
Regional: 특정 지역 내에서만 트래픽을 분산합니다. 예를 들어, 지역적으로 집중된 서비스에 사용됩니다.
External: VPC 외부에서 발생한 트래픽을 분산합니다.
Internal: VPC 내부에서만 발생한 트래픽을 분산합니다.
정의: 리소스 사용량에 따라 VM 인스턴스의 수를 자동으로 조절하는 기능입니다.
활용: 트래픽이 급증할 때 인스턴스를 자동으로 늘리고, 트래픽이 줄어들면 자동으로 줄입니다. 이를 통해 비용 효율적으로 리소스를 관리할 수 있습니다.
VM 생성 과정
인스턴스 이름 및 리전 선택: 원하는 이름과 리전을 선택합니다.
머신 구성 및 부팅 디스크 선택: 필요한 머신 유형과 부팅 디스크를 선택합니다.
방화벽 설정: HTTP와 HTTPS 접근을 허용하도록 방화벽을 설정합니다.
생성: VM을 생성하고, 외부 IP와 내부 IP를 확인합니다.
SSH 접속
SSH 키 생성: ssh-keygen 명령을 사용해 공개키와 개인키를 생성합니다.
메타데이터 등록: GCP 콘솔에서 SSH 키를 VM 인스턴스의 메타데이터에 등록합니다.
SSH 접속: SSH 클라이언트 프로그램을 사용해 VM 인스턴스에 접속합니다.
IP 주소 고정
고정 외부 IP 주소 예약: 임시 외부 IP 주소를 고정 IP 주소로 변경합니다.
GCP의 Compute Engine은 가상 머신을 손쉽게 관리할 수 있는 강력한 도구입니다. 선점형 VM을 통해 비용을 절감하거나, 인스턴스 그룹을 활용해 높은 가용성을 유지하면서 자동으로 리소스를 관리할 수 있습니다. VPC 네트워크와 결합하여 유연하게 클라우드 인프라를 구성하고, 부하 분산 및 Auto Scaling을 통해 효율적으로 리소스를 운영할 수 있습니다.
가상 머신 만들기
영구 디스크 만들기
Compute Engine: Qwik Start - Windows
Google Cloud Marketplace를 통해 서비스 프로비저닝