본문 바로가기

Cloud

(10)
IaaS, PaaS, SaaS 차이 IaaS(Infra as a Service) 서버, 스토리지 등 물리적인 인프라를 제공해주는 서비스이다. 소프트웨어는 직접 설치하고 설정해야 하기 때문에 DevOps 개발자 필요해 운영비가 증가하지만 자유도가 높다. PaaS(Platform as a Service) 서버, 스토리지와 더불어 OS, CI/CD 툴 등을 함께 제공하여 개발에 집중할 수 있도록 해주는 서비스이다. DevOps 개발자가 따로 필요하지 않기 때문에 운영비 절감 효과 기대할 수 있다. 단점으로는 미리 구조가 갖춰진 플랫폼이기 때문에 자유도가 떨어짐(애드온으로 변경 가능하긴 함) heroku, redhat openshift 등을 예로 들 수 있다. SaaS(Service as a Service) 완제품을 제공해주는 서비스이다. 필요한..
하이브리드 클라우드 하이브리드 클라우드 퍼블릭 클라우드와 프라이빗 클라우드를 동시에 사용하는 것을 뜻합니다. 퍼블릭 클라우드: 구글, 아마존과 같은 서비스 제공업체를 통해 사용하는 클라우드 프라이빗 클라우드: 기업이 직접 하드웨어 자원을 분리하여 운영하는 클라우드를 뜻하며, 기업이 물리적으로 서버실에 서버를 두고 직접 운영하는 온 프레미스(On-premise)와 유사합니다. 이 둘의 차이점은 프라이빗 클라우드와의 차이점은 클라우드 핵심 능력인 신속함, 확정성을 가지고 있는가의 차이입니다. 장점 하이브리드 클라우드를 사용하면, 퍼블릭 클라우드와 프라이빗 클라우드의 장점을 모두 활용할 수 있습니다. 상호 운용성 각 워크로드에 가장 적합한 솔루션 선택 가능 전략적 유연성 단점 하이브리드 클라우드에 대한 전문성 필요 클라우드 환경..
Cloud Native 전통적인 방식인 폭포수 방법론과 모놀리식 아키텍쳐로 개발된 시스템은 새로운 요구사항이나 변경 사항에 취약하다. 이러한 취약점을 보완하기 위해 고안된 것이 Cloud Native이며, 이는 클라우드 환경에 최적화된 애플리케이션을 뜻한다. Cloud Native는 애자일 방법론을 따르며, 애플리케이션을 여러 컨테이너로 나누어 MSA 아키텍처로 구성되어 있기 때문에, 새로운 요구사항이나 변경 사항을 빠르게 반영할 수 있지만, 컨테이너가 많이짐으로써 시스템의 복잡성이 커진다는 단점이 있으며, 이러한 단점은 쿠버네티스와 같은 컨테이너 오케스트레이션 프레임워크를 사용해 보완할 수 있다. Cloud Native 전환이라는 용어는 전통적인 방식으로 개발된 시스템을 클라우드에 최적화된 애플리케이션으로 새로 개발한다는 것..
GCP GKE 클러스터 시작/중지 자동화 1. 샘플 소스 클론 git clone https://github.com/GoogleCloudPlatform/cloud-run-samples.git 2. 디렉터리 이동 cd cloud-run-samples/gcloud-report/ 3. 시작 자동화, script.sh 내용 수정 gcloud container clusters resize [YOUR-CLUSTER-NAME] --num-nodes=[YOUR-NODE-NUMBER] --zone asia-northeast3-a --quiet quiet: Y 입력 생략 4. IAM 생성 및 권한 부여 GCP > IAM 및 관리자 > IAM > 액세스 권한 부여(Kubernetes 관리자, Cloud Run 관리자 권한 부여) 5. 컨테이너를 빌드하고 Contai..
GCS 서명된 URL로 파일 업로드(JavaScript) 배경 웹 애플리케이션에서 파일을 업로드하려면 서버로 파일을 보내야 합니다. 하지만 파일의 용량이 너무 크거나 업로드 트래픽이 급증했을 경우, 백엔드 서버의 메모리가 초과돼서 서버가 다운될 수 있습니다. 이런 경우엔 클라이언트 측에서 하나의 파일을 작게 chunk 해서 여러 번 요청하면 서버의 부담이 줄어들기 때문에 서버에 직접 저장하는 경우엔 효과적입니다. 하지만 GCP와 같은 클라우드 플랫폼을 사용하는 경우, 보통 파일을 버킷에 저장하기 때문에 클라이언트 측에서 버킷으로 직접 업로드를 요청하는 것이 더욱 안전하고 효율적인 방법입니다. 이 글에선 백엔드에서 서명된 URL을 만들고, 이를 클라이언트로 보내서 직접 업로드하는 방법을 다룹니다. 서명된 URL? URL이 있으면 누구나 해당 버킷에 접근할 수 있..
GCS 버킷 CORS 적용 1. JSON 파일 준비 example.json [{ "origin": ["*"], "responseHeader": [ "Content-Type", "Access-Control-Allow-Origin", "x-goog-resumable" ], method: ["PUT", "GET", "HEAD", "DELETE", "POST", "OPTIONS"], "maxAgeSeconds": 3600 }] 위 예시는 모든 출처 도메인을 허용하고, 모든 HTTP 메소드를 허용하는 CORS 설정입니다. 2. GCP 콘솔에 명령어 입력 gcloud storage buckets update gs://BUCKET_NAME --cors-file=example.json 3. 설정 확인 gcloud storage buckets d..
[GCP] Cloud CDN을 위한 서명된 URL 만들기(JavaScript) 배경GCP에 버킷을 만들고 CDN을 적용하면 이미지나 영상 같은 정적 파일을 빠르게 전송할 수 있습니다. 하지만 버킷을 외부에 공개하면 파일을 보호할 수 없기 때문에 좋지 않고, 그렇다고 비공개로 설정하면 클라이언트에서 파일을 가져올 수 없습니다. 이에 대한 대안으로 서명된 인증 URL을 통해 제한된 권한으로 파일을 가져올 수 있습니다.서명된 URL?권한이 없어도 버킷에 접근할 수 있는 인증 URL입니다. 이 URL이 있으면 누구나 버킷의 파일에 접근할 수 있게 됩니다. URL에는 요청을 수행하는 데 필요한 제한된 권한과 시간이 포함되며, URL 쿼리를 통해 인증 정보를 전송합니다. https://cloud.google.com/storage/docs/access-control/signed-urls?hl=..
GCS 버킷 서명된 URL 만들기(NodeJS) 비공개 버킷 파일에 대한 권한이 포함된 URL을 생성해서 클라이언트에 보내줄 수 있습니다. import { Storage } from '@google-cloud/storage'; const storage = new Storage({ projectId: 'YOUR-PROJECT-ID' }); const [url] = await storage .bucket('YOUR-BUCKET-NAME') .file('FILE-DESTINATION') .getSignedUrl({ action: 'read', // 'read' | 'write' | 'delete' | 'resumable' expires: Date.now() + 15 * 60 * 1000, // 15분 version: 'v4', // 'v2' | 'v4' });