클라우드

J. Hwang·2024년 12월 19일

클라우드는 인터넷을 통해 IT 자원 (서버, 저장 공간, 데이터 베이스, 네트워킹, 소프트웨어 등) 을 제공하는 서비스이다. 클라우드 서비스의 예로는 AWS, GCP, Azure 등이 있다.


클라우드 서비스 공통 개념

AWSGCPAzure
ServerElastic Compute (EC2)Compute EngineVirtual Machine
Serverless computingLambdaCloud FunctionAzure function
Stateless containerECSCloud RunContainer Instance
Object storageS3Cloud StorageBlob Storage
DatabaseAmazon RDSCloud SQLAzure SQL
Data WarehouseRedshiftBigQuerySynapse Analytics
AI platformSageMagerVertex AIAzure Machine Learning
KubernetesEKSGKEAKS
  • Server (computing service) : 연산 수행 서비스. CPU, memory, GPU 등 선택
  • Serverless computing : 코드를 클라우드에 제출하면 그 코드로 클라우드 측에서 서버를 실행해주는 형태
  • Stateless container : docker image를 업로드하면 해당 이미지 기반으로 서버를 실행
  • Object storage : 데이터 저장소
  • Database : 서비스에서 사용하기 위한 데이터를 저장. MySQL, PostgreSQL 등
  • Data Warehouse: 분석 목적으로 데이터를 모아놓은 것. database의 데이터, object storage에 있는 데이터를 모두 여기에 저장.
  • AI platform : AI 연구/개발 과정을 더 편리하게 해주는 제품

❓ object storage와 database는 무엇이 다른가?

특징Object StorageDatabase
데이터 구조비구조적 데이터 (파일, 객체)구조적 데이터 (행, 열) 또는 키-값 쌍
데이터 크기대용량 파일 (TB~PB급) 저장에 적합데이터 크기 제한이 있지만 고속 처리 가능
데이터 액세스전체 파일 단위로 접근필드 또는 레코드 단위로 세밀하게 접근
수정 가능성파일 전체를 덮어써야 함필드별로 수정 가능
성능대량 데이터 읽기/쓰기 최적화실시간 트랜잭션 처리 및 쿼리 최적화
사용 사례미디어 파일, 백업, 데이터 레이크고객 데이터, 주문 기록, 분석 데이터

Google Cloud Platform

여기서는 클라우드 서비스의 대표적인 예인 Google Cloud Platform (GCP)에 대해 알아보자. 우선 GCP에 회원가입을 하고, 메인 대시보드로 이동하자.

Compute Engine

왼쪽 탭에서 Compute Engine을 클릭하자. 기다리면 초기화가 되고 왼쪽 탭에서 VM 인스턴스를 클릭할 수 있다. 여기서 인스턴스 만들기를 클릭하여 서버를 만들 수 있다.
이름을 설정하고 머신 구성에서 원하는 설정을 선택하여 서버를 생성한다. (머신 유형 e2-micro은 무료로 사용 가능한 성능이다.)
서버가 생성되면 오른쪽의 "연결" 항목에서 SSH를 클릭하여 브라우저 창에서 열기를 누르면 서버에 접속되고 CLI 화면이 나타난다.

⚠️ 서버를 사용하지 않을 때에는 삭제하자. 계속 실행 중인 상태이면 비용이 부과될 수 있다...무료로 사용 가능 범위에 대해 알고 싶다면 여기를 참조

위의 방법은 제로 베이스의 서버를 만드는 것이고, docker image처럼 다른 사용자가 이미 구축해 놓은 환경이 있는 서버를 사용할 수도 있다. 왼쪽 탭의 이미지에 들어가서 원하는 환경의 키워드 (ex) pytorch)로 필터에서 검색을 한다. 원하는 이미지를 찾아서 클릭하면 위에 인스턴스 만들기 버튼이 있는데 이를 클릭하면 이 이미지에서 이미 갖춰놓은 환경이 있는 서버를 만들 수 있다.
방화벽의 경우 HTTP 트래픽 허용, HTTPS 트래픽 허용으로 체크해주고 만들기를 하면 된다.

Cloud Storage

Cloud Storage 탭으로 들어가서 버킷 만들기를 클릭하자. 버킷 름을 지정하고, 스토리지 클래스를 선택하면 버킷이 생성된다. 생성된 버킷을 클릭하면 그 버킷에 파일 및 폴더를 업로드할 수 있다.

⭐️ python을 이용해서 버킷으로 파일 업로드/다운로드 하기

Step 1. google cloud 파이썬 라이브러리 설치
pip install google-cloud-storage

Step 2. 서비스 계정과 키 생성
Cloud Console의 서비스 계정 만들기 페이지에서 대상 프로젝트를 선택한 후 서비스 계정 > 서비스 계정 세부정보에서 역할을 "소유자"로 설정한다. 그리고 생성된 서비스 계정을 클릭 후 키 추가를 통해 json 유형의 키를 다운로드한다.

Step 3. 환경 변수 설정
다운로드 받은 json 키가 있는 디렉토리를 환경 변수에 등록한다.
export GOOGLE_APPLICATION_CREDENTIALS="key_path"

Step 4. 파이썬 코드 실행

from google.cloud import storage

# initialize
bucket_name = "bucket1"
storage_client = storage.Client()
bucket = storage_client.bucket(bucket_name)

# upload
upload_file_path = "/your/directory"
upload_file_name = "your_file"
blob = bucket.blob(upload_file_path)
blob.upload_from_filename(upload_file_name)

# download
downlaod_file_name = "your_file"
destination_path = "/your/directory"
blob = bucket.blob(download_file_name)
blob.download_to_filename(destination_path)

더 자세한 것은 관련 구글 클라우드 docs를 살펴보자.

방화벽 만들기

왼쪽 탭의 네트워킹 > VPC 네트워크 > 방화벽을 클릭한다.
상단의 방화벽 규칙 만들기를 클릭한다. 방화벽의 이름과 대상 태그를 설정하고, 소스 필터를 IPv4 범위, 소스 IPv4 범위를 0.0.0.0/0으로 설정 (모두가 접근 가능)한다. 프로토콜은 TCP 8888로 설정. 그리고 만들기를 누르면 방화벽 규칙이 만들어진다.

그리고 이 방화벽 규칙을 적용하기 위해서는 VM 인스턴스에서 규칙을 적용하고자 하는 서버를 클릭하고, 위의 수정 버튼을 누른다. 아래쪽을 보면 방화벽 설정이 있는데 Allow HTTP traffic, Allow HTTPS traffic을 체크하고 네트워크 태그 란에 아까 생성한 방화벽 대상 태그의 이름을 등록하면 해당 서버에 방화벽 규칙이 적용된다.

Cloud Composer

GCP의 airflow인 Cloud Composer 사용법을 알아보자.
왼쪽 탭에서 Composer를 찾아 클릭한다. Composer에 들어왔다면 상단의 만들기 > Composer 2를 클릭한다. 이름, 서비스 계정을 지정하고 이미지 버전은 안정적인 composer-2.5.5-airflow-2.6.3를 선택하자.
하단의 고급 구성에서 Airflow 구성 재정의를 클릭해서 섹션 1: webserver, 키 1: dag_dir_list_interval, 값 1: 30 과 같이 입력하자. 그 후 만들기를 누르면 cloud composer가 생성된다.
cloud composer가 생성되면

상태이름위치Composer 버전Airflow 버전생성 시간업데이트 시간Airflow 웹 서버DAG 목록로그DAG 폴더라벨
composer_nameus-central12.5.52.6.324.1.1. 오후 1:1124.1.2. 오후 1:11AirflowDAG로그DAG없음

이런 식으로 composer 환경 목록이 뜨는데 Airflow 웹서버를 클릭하면 Airflow 웹서버에 접속할 수 있다. 그리고 DAG 폴더를 누르면 연결된 클라우드 스토리지로 이동하는데 여기에 01-bash-operator.py처럼 DAG 파일을 저장해두면 자동으로 DAG 파일이 실행된다.

profile
Let it code

0개의 댓글