5 플랫폼! 기차 기다리는 곳이 플랫폼/5 1 Why 클라우드, 클라우드인 이유, 제공되는 기능들/5 1 6 GCP - Google Cloud Platfrom (구글 클라우드 플랫폼 인 액션 중에서 발췌 정리)

기술노트
Admin (토론 | 기여)님의 2025년 2월 5일 (수) 16:21 판 (새 문서: 아래는 GCP 자격증 준비하면서 정리해본 Summary입니다. 이거으로 충분한 설명은 안되니 공부하시다가 참고하시면 좋겠습니다. What is cloud computing ? 1\. On-demand self-service : No human intervention needed to get resources 2\. Broad network access : Access from anywhere 3\. Resource pooling : Provider shares resources to customers 4\. Rapid elaticity : Get More resources quickly as needed 5\. Meausred service : Pay only for what you c...)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)

아래는 GCP 자격증 준비하면서 정리해본 Summary입니다. 이거으로 충분한 설명은 안되니 공부하시다가 참고하시면 좋겠습니다.

What is cloud computing ? 1\. On-demand self-service : No human intervention needed to get resources 2\. Broad network access : Access from anywhere 3\. Resource pooling : Provider shares resources to customers 4\. Rapid elaticity

Get More resources quickly as needed 5\. Meausred service : Pay only for

what you consume

Physical -> Virtualized -> Serverless

IaaS Compute Engine Hybrid Kubernates Engine PaaS App Engine Serverless logic Cloud Functions Automated elastic resources Managed services

Cloud DataStore NoSQL, Terabytes 1MB/entity - App Engine applications Bigtable NoSQL, Petabytes, ~10MB/cell, ~100M/row - Financial and IoT data Cloud Storage Blobstore, Petabytes, 5TB/object - Images, large media files Cloud SQL Relational SQL, Terabytes, Determined by DB engine - User credentials customer orders Cloud Spanner Relational SQL, Petabytes 10240Mib/row - Whenerver high I/O, BigQuery Relational SQL, Petabytes, 10MB/row - Data warehouse

Global > Multi-Region > Region > Zone Zone : VM을 켜면 바로 Zone Regional : 단일 지역의 여러 영역에 걸쳐 복제되는 것을 말함. MultiRegional : 다중 지역 서비스 일종의 재해가 발생해도 최소한의 중단 시간 Global

멀티 클라우드, 전세계 영역 커버

gsutil을 이용하여 스트리밍 업로드를 수행하고자 한다면 데이터 파이프라인 을 gsutil cp 명령으로 연결하고 복사할 파일 대상을 “-”로 대체하면 된다. 다음 예는 collect _measurements라는 프로세스의 출력을 클라우드 스토리지의 data_ measurements라는 파일로 스트리밍 전송하는 경우다. collect _measurements | gsutil cp - gs://my_ app _bucket/data_ measurements 이와 비슷하게 다운로드는 다음과 같이 적용할 수 있다. gsutil cp gs://bucket/object - |

비디오 파일은? Cloud Storage 장기 보관하는 스토리지 옵션이 있는 것은? Cloud Storage 센서 데이터, 스크림 데이터 ? Cloud Bigtable Stream, ETL 처리하는 것은? Cloud Dataflow Data Warehose 성격을 가진 것은? BigQuery Hadoop, Spark 서비스 제공하는 것은? Cloud Dataproc Game realtime analytics는 보통 어떤 처리로? Cloud Pub/Sub

Cloud Pub/Sub - 관리형 메시징 시스템 bigdata Cloud Dataproc = Managed Hadoop MapReduce, Spark, Pig and Hive service Cloud Dataflow = Stream and batch processing; unified and simplified pipelines BigQuery = Analytics database; stream data at 100,000 rows per second Cloud Pub/Sub = Scalable and flexible enterprise messaging Cloud Datalab = Interactive data exploration

아마존 AWS 서비스와 비교 Virtaul Private Cloud - VPC Cloud Load Balancing - ELB Firewall rule - Security Group Cloud DNS - Route53 Cloud CDN - Cloud Front Cloud VPN - Site to Site VPN Cloud Interconnect - Direct Connect App Engine - Elastic Beanstalk Cloud Function - Lambda Cloud Run - AWS fargate Cloud MemoryStore - ElasticCache Memcached, Redis In-Memory Database Cloud Pub/Sub - SNS, SQS Cloud Pub/Sub - Kinesis Stackdriver Monitoring - Cloud Watch Cloud Deployment Manager - CloudFomation Source Repositories

Cloud SQL - RDS Cloud Bigtable - HBase로 구성, DynamoDB - NoSQL : key-value 기반 실시간 처리, 내부 클러스터(노드(노드는 내부적으로 숨겨져 있고, API를 사용하는 것임)를 그룹화)로 구성, 구성 ( 클러스터 > 노드 > 태블릿 ), 가격 Cloud SQL($30) < Cloud Bigtable($1400) - 최소3노드 HBase와 차이 인스턴스가 있는 서버에서 실행될 자바 코드를 배포 할 수 있도록, Cloud Datastore - DynamoDB, DocumentDB 비정형 문건 저장, 반 구조화된 데이터 관리에서 뛰어남. NoSQL NewSQL = SQL DB처럼 동작되지만, NoSQL과 같은 확장 속성을 가짐. 기존 SQL문 사용 가능 Cloud Spanner - RDS, 많은 데이터베이스를 보유하는 인프라 컨테이너 역할, Insert, update SQL(X) -> api를 사용함. .insert (나의 느낌 몽고DB와 유사), 읽기 - .read

google container create BigQuery 비용 계산

gcloud auth login 리소스 접근 권한 승인 명령 gcloud compute instances list 인스턴스 목록 보기 명령 gcloud compute ssh learning-cloud-demo SSH로 인스턴스 접속 명령 gcloud compute ssh --zone us-central1-c wordpress Zone선택하면서 접속할 때 gcloud sql users set-password 비밀번호 변경 명령 gcloud sql instances list Cloud SQL 인스턴스 리스트 명령 gcloud sql backups list -instance=todo-list -filter "status = SUCCESSFUL" DB 백업

Cloud Storage - AWS의 S3와 유사, 객체 저장, 분산되고 전세계 unique하게 존재 gsutil ls 버킷 나열 명령 gsutil cp myfirstfile.txt gs://my-first-bucket-jjg/ 파일 copy 명령 권한 부여 방법 : ACL로 access control. 서명된 URL gsutil cp private.txt gs://my-example-bucket/ 비공개 파일로 업로드 명령 gsutil acl ch -u gcs-signer@your-project- 서비스 계정에 대한 엑세스 권한 부여 gsutil signurl -m GET -d 30m key.json gs://my-example-bucket/private.txt 30분동안 읽을 수 있는 URL임. 이후로 만료 보려고 하면 Access deny 발생 gsutil logging get gs://my-example- bucket 버킷 my-example-bucket에 대한 로깅 구성 확인 gsutil mb -l US -c multi_reginal gs://my-example-bucket-logs 모든 로그를 보유할 버킷을 만듬. gsutil acl ch -g cloud-storage- analytics@google.com gs://my-example-bucket-logs 다음 로그를 해당 버킷에 넣는 역할을 하는 logger 계정에 대한 엑세스 권한 부여 gsutil versioning set on gs://my-version-bucket 객체 버전 관리 gsutil ls -la gs://my-versioned-bucket 객체 나열 gsutil versioning get gs://my- versioned-bucket 버전 관리 사용 가능하도록 되어 있는지

30일보다 오래된 객체 삭제 명령 Json { "rule" : [ { "action":{"type":"Delete"}, "condition":{"age":30} } ] }

30일보다 오래 되거나 적어도 버전이 3개 이상 있는 항목 삭제 { "rule" : [ { "action":{"type":"Delete"}, "condition":{"age":30} }, { "action":{"type":"Delete"}, "condition":{ "isLive":false, "numNewerVersions":3 } } ] }

gsutil lifecycle get gs://my-versioned-bucket 룰 조회 gsutil lifecycle set lifecycle.json gs://my-versioned-bucket 적용

Nearline 저장소 금액이 약간 낮고, 지연 시간이 생김. 데이터 검색이 무료가 아님. 30일간 저장 기간이 있음. GB당 약 60% 정도 저렴. 데이터를 자주 변경 매월 데이터를 검색해야 하는 경우 다른 옵션보다 비싸다. Coldline 저장소 1년 정도 단위 저장 적합. 최소 90일 저장 GB당 Nearline보다 30% 저렴. 다중 지역 저장보다 70% 저렴. 오래된 데이터 자주 사용하지 않는 데이터 저장에 적합. allUsers - 모든 사용자, allAuthenticatedUsers는 allUsers와 유사, 자신의 구글 계정으로 로그인 한 사람.

0.0.0.0/0 > 모든 IP에서 접속 가능하도록 열어 놓은 것, 보안 문제가 될 수 있음.

curl https://my-public-bucket.storage.googleapis.com/public.txt gsutil acl set public-read gs://my-public-bucket/public.txt gsutil명령으로 public 설정 gsutil acl ch -u gcs-signer@your-project- 서비스 계정에 엑세스 권한 부여

gsutil logging get gs://my-example-bucket 버킷에 대한 로깅 구성을 확인한 다음 로깅을 구성한다. gsutil mb -l US -c multi_regional gs://my-example-bucket-logs 이렇게 하기 위해 모든 로그를 보유할 버킷을 만든다. gsutil acl ch -g cloud-storage-anlytics@google.com:W gs://my- example-bucket-logs 그런 다음 로그를 해당 버킷에 넣는 역할을 하는 logger 계정에 대한 엑세스 권한을 부여한다. gsutil logging set on -b gs://my-example-bucket-logs -o example-prefix gs://my-example-bucket 마지막으로 로깅 세부 정보를 구성하고, cloud stroage가 모든 엑세스 로그를 새로 생성된 버킷에 배치하도록 알려준다. gsutil logging get gs://my-example-bucket { "logBucket":"my- example-bucket-logs", "logObjectPrefix":"example-prefix"} 제대로 작동하는 확인하려면 gsutil logging get 명령을 사용하여 저장한 구성을 표시하고, 모든 것이 정확한지 확인한다.

watchbucket 명령 gsutil notification watchbucket -i channel-id 채널ID는 Channel- id이고, 버킷은 my-bucket이며, my-bucket내부에 변경이 발생할 때 지정된 URL에 요청을 보내는 것.

저장되는 GB당 다중 지역 위치의 저장 클래스별 가격 다중 지역 2.6센트($0.026) 니어라인 1센트($0.01) 콜드라인 0.7센트($0.007)

전송된 양 GB당 송신 네트워크 가격 ( 처음 TB) 중국(홍콩 제외) 월 $0.23 호주 $0.19 그 밖의 지역 $0.12

실행되는 작업에 따른 비용 읽기 저렴한 작업 *.get, AccessControls.list (10k당 0.01) 비싼 작업 buckets.list, objects.list 쓰기 저렴한 작업 콜백URL에 전송된 모든 알림 비싼 작업 *.insert, *.patch,

  • .update

삭제 관련은 무료로 가능 channels.stop, buckets.delete, obejcts.delete

gcloud compute instances create test-instance-1 먼저, 새로운 인스턴스를 만든다. gcloud compute ssh --zone us-central1-a test-instance-1 그런 다음 SSH로 인스턴스에 접속한다.

gcloud compute instances list 인스턴스 리스트 gcloud compute disks list 디스크 리스트

gcloud compute instances attach-disk instance-2 --zone us-central1-a --disk disk-1 --mode rw 디스크가 다른 곳에 이미 연결되어 있기 때문에 읽기-쓰기 모드로 연결하지 못한다. gcloud compute instances attach-disk instance-2 --zone us-central1-a --disk disk-1 --mode ro 디스크를 읽기 전용 모드로 연결하며 예상대로 성공한다. gcloud compute instances detach-disk instance-1 --zone us-central1-a --disk disk-1 두 인스턴스 모두에서 디스크를 분리한다. gcloud compute instances attach-disk instance-1 --zone us-central1-a --disk disk-1 --mode rw 읽기 쓰기 모드에서 디스크를 다시 연결한다.

이미지: 공통점 둘다 VM을 만들 때 사용, 차이는 이미지는 디스크의 시작 템플릿으로 사용 스냅샷: 특정 시간에 디스크의 내용을 정확히 나타내는 백업 형태

Autoscaling - 인스턴스 템플릿 만들기로 템플릿 작성

컨테이너 - VM위에 올라가는데, 어플리케이션이 필요로 하는 라이브러리들을 함께 포함하고 있고, 다른 컨테이너와의 격리/독립성을 가진다. 도커 - 컨테이너를 실행할 수 가상환경, 하위 수준의 가상화를 처리하고, 컨테이너 이미지를 정의하고, 컨테이너가 정의하는 환경 및 코드를 실행함. 노드 - 클러스터 내에서 작동하며, 코드를 실행할 수 있는 단일 시스템에 해당. 포드 - 특정 노드가 실행하는 개별 기능 단위가 동작하는 컨테이너 그룹.

docker run hello-world - 공개 이미지에서 찾아 자동으로 다운로드 한 다음 실행함. docker build --tag hello-node . - docker build를 사용하여 이미지를 만들고, hello-node로 태그를 지정함. docker run -d -p 8080:8080 hello-node - -d 플래그는 백그라운드에서 이 컨테이너 이미지를 실행하도록 도커에 알려주고, -p 8080:8080은 포트임. docker ps --format "table 틀:.ID\t틀:.Image\t틀:.Status" 이미지가 실행 중인지 확인 명령

gcloud components install kubectl kubectl 설치 명령 gcloud container clousters get-credentials --zone us-central1-a firstcluster 클러스터와 통신 인증 확인 kubectl run hello-node --image=gcr.io/your-project-id-here/hello-node:v1 -- port 8080 kubectl run 실행확인 kubectl get pods 사용 어플리케이션 Pod에 배포했는지 확인 kubectl get services 사용 가능한 서비스 ab -c 1000 -n 50000 -qSd http://104....:8080/ 1000개씩 5만개의 요청 보내는 테스트 ab=apache Bench kubectl scale deployment hello-node --replicas=10 어플리케이션 10개 동시 실행 gcloud app deploy 앱 배포 gcloud app versions list --service=default docker build custom1 - 모든 것을 단일 도커 이미지로 패키징하는 컨테이너를 만듬. docker run -d -p 8080:8080 431c 이미지의 ID를 사용하여 컨테이너를 실행하고, 로컬 컴퓨터의 포트 8080을 컨테이너의 포트 8080에 연결함. docker ps --format '"table 틀:.ID\t틀:.Status'" - 컨테이너가 실행 중인지 확인함.

App engine은 appl.까지 제공을 함. 대표적으로 Todo list, 항목 추가, 작업 완료 등 기능 제공, Exchange, InstaSnap 마이크로 서비스 - 기존 어플리케이션 내 모든 기능을 구현하는 것이 아니라 모듈별로 나눠서 진행 (예, 로그인, 가입, To-Do List 등) 기존 SOA(Service-Oriented Architecture) 와 유사한 사상 Cloud Function - 클라우드 상에 올라와 있는 function, 이벤트가 발생하면 함수가 실행됨. 예제 및 순서 1\. 함수 작성 exports.echo = (req, res) => { let responseContent = { from: 'Cloud Functions' }; let contentType = req.get('content-type');

if(contentType == 'text/plain'){ responseContent.echo = req.body; } else if (contentType == 'application/json'){ responseContent.echo = JSON.stringify(req.body); } res.status(200).send(responseContent); };

 2. 배포 gcloud beta functions deploy echo --source=./echo/ --trigger-http --stage-bucket=my-cloud-functions
 3. 함수 트리거 curl -d '{"data": "This will be echoed!"}' \ -H "Content-Type: application/json" \ "https://us-central1-... /echo" {"from":"Cloud Functions", "echo":"This will be echoed!"}
 4. gcloud를 사용하여 함수 호출 gcloud beta functions call echo --data '{"data":"this will be echoed!"}'

추가1. 함수 삭제 하기 gcloud beta functions delete echo

Google Source Repository git init Initialized empty Git repository in /home/jjg/echo/.git/ - 현재 디렉토리를 로컬 깃 저장소로 초기화 git remote add google https://source.developers.google.com/projects/ - 새로운 소스 저장소의 URL을 깃 원격 위치로 추가 git config credential.helper gcloud.sh git의 설정을 사용하여 원격 저장소와 상호작용할 때 인증에서 클라우드 SDK 사용하도록 지정 git and index.js package.json 파이을 git 저장소에 추가하고 커밋 git commit -m "Initail commit of echo package" git push --all google 마지막 모든 로컬 변경 사항을 새로 만든 구글 원격으로 푸시

gcloud dns record-sets list --zone mydomain-dot-com gcloud가 있는 mydomain.com의 레코드 목록

BigQuery - MySQL 이상으로 용량이나 성능이 필요한 경우, 사용한 만큼 과금, 인프라는 수많은 병렬 컴퓨팅을 통해서 자원을 이용할 수 있게 해줌. 빠른 응답 효과

개발자, 기술사, 삼성, 외국계 IT기업 20년차 기술노트 알렉이 직접 작성한 IT기업 기술 면접을 위한 CS + 면접 노하우 PDF <https://kmong.com/self-marketing/539751/LUA54VnQsP> 자주 나오는 CS 질문과 답변 그리고 100번 이상 면접관으로 참여하면서 느꼈던 면접자가 알아야 할 팁 13가지 포함

백엔드 개발자를 위한 클라우드 강의, AWS <https://inf.run/o1NX>

이제는 비전공자도, 일반이도 개발할 수 있다. ChatGPT를 이용한 누구나 앱개발 with 알렉 <https://inf.run/rpX4>

백엔드 직접 번역한 도서 <https://www.yes24.com/Product/Goods/122536127>

IT기술의 거의 모든 것을 다루는 기술노트with알렉 유투브 <https://www.youtube.com/c/%EA%B8%B0%EC%88%A0%EB%85%B8%ED%8A%B8with%EC%95%8C%EB%A0%89>