Google Cloud AI 7주차 요약

Lucel·2024년 9월 1일
post-thumbnail

해당 내용은 Google Cloud AI 활동간 이우성 강사님의 강의를 토대로 작성하였습니다.

Storage Service - Cloud Storage

1. Cloud Storage의 기본 개념

Object Repository(객체 저장소): Cloud Storage는 데이터를 객체 단위로 저장합니다. 이 저장소는 데이터를 저장하거나 백업하는 데 사용할 수 있으며, AWS S3와 유사한 기능을 제공합니다.

Project: 모든 Cloud Storage 데이터는 특정 GCP 프로젝트에 속하게 됩니다.

Bucket: 실제 데이터가 저장되는 공간입니다. 모든 객체(Object)는 버킷 안에 저장되며, 버킷 이름은 GCP 내에서 전역적으로 고유해야 합니다. 버킷은 클라우드의 "폴더"처럼 데이터를 조직화하는 단위로 생각할 수 있습니다.

2. Repository 등급

Cloud Storage에는 저장할 데이터의 특성에 따라 네 가지 등급이 있습니다:

Multi-Regional Storage

특징: 자주 접근되는 데이터에 적합하며, 여러 지역에 중복 저장되어 높은 가용성을 제공합니다.
사용 예시: 웹사이트 콘텐츠, 비디오 스트리밍, 모바일 애플리케이션.

Regional Storage

특징: 특정 지역에만 데이터를 저장해 비용을 절감할 수 있습니다. Compute Engine과 같은 다른 GCP 서비스와 결합해 동일한 지역 내에서 고성능을 낼 수 있습니다.
사용 예시: 데이터 분석, 트랜스코딩.

Nearline Storage

특징: 자주 접근하지 않는 데이터를 저장하는 저렴한 저장소로, 최소 30일 동안 데이터를 저장해야 합니다.
사용 예시: 백업 데이터, 한 달에 한 번 정도 읽거나 수정되는 데이터.

Coldline Storage

특징: 저장 비용이 가장 저렴하며, 최소 90일 동안 데이터를 저장해야 합니다. 주로 재해복구용 데이터나 장기 보관용으로 적합합니다.
사용 예시: 백업 데이터, 1년에 한 번 정도 접근하는 데이터.

3. Object의 구성 요소

객체 데이터: Cloud Storage에 저장되는 실제 파일입니다.
객체 메타 데이터: 객체에 대한 추가 정보를 포함하는 키-값 쌍으로 구성됩니다. 예를 들어, 파일의 작성자, 생성 시간 등의 정보가 포함될 수 있습니다.

객체 특징:
불변성: 한 번 저장된 객체는 변경할 수 없습니다. 변경하려면 기존 객체를 삭제하고 새로운 객체를 업로드해야 합니다.
지리적 중복성: 다중 지역에 저장된 객체는 최소 160km 이상 떨어진 두 곳 이상의 위치에 중복 저장되어, 재해 발생 시에도 데이터 가용성을 보장합니다.

4. Cloud Storage의 주요 기능

CSEK(Customer-Supplied Encryption Key)

사용자가 직접 관리하는 암호화 키를 사용해 데이터를 보호합니다.

Object Versioning

객체가 변경되거나 삭제될 때 버전을 관리해 이전 상태로 복구할 수 있습니다.

Object Lifecycle Management

객체의 라이프사이클을 관리해 일정 기간이 지나면 자동으로 저장소 등급을 다운그레이드하거나 객체를 삭제할 수 있습니다.

Object Change Notification

객체가 업데이트되거나 삭제될 때 알림을 받을 수 있습니다. 주로 Cloud Pub/Sub을 통해 실시간으로 처리하는 것이 권장됩니다.

5. 대량 데이터 업로드 옵션

Transfer Appliance
물리적 장치를 사용해 대량의 데이터를 GCP로 이전할 수 있습니다.

Storage Transfer Service
온라인 데이터를 고성능으로 GCP에 가져올 수 있는 서비스입니다.

Offline Media Import
USB 드라이브, 하드디스크 드라이브 등의 물리적 미디어를 통해 데이터를 GCP에 업로드할 수 있습니다.

6. gsutil을 사용한 Cloud Storage 관리

gsutil은 CLI(Command Line Interface) 도구로, Cloud Storage에서 다음과 같은 작업을 수행할 수 있습니다

버킷 생성 및 삭제 : gsutil mb 명령으로 버킷을 생성하고, gsutil rb 명령으로 버킷을 삭제할 수 있습니다.
객체 업로드 및 다운로드 : gsutil cp 명령으로 파일을 업로드하거나 다운로드할 수 있습니다.
객체 이동 및 삭제 : gsutil mv로 객체를 이동하거나 gsutil rm으로 삭제할 수 있습니다.
버킷 및 객체 정보 확인 : gsutil ls로 버킷 및 객체 목록을 확인하고, gsutil du로 사용량을 확인할 수 있습니다.

7. Cloud Storage API 사용

Python API: Cloud Storage와 연동하여 데이터를 관리할 수 있는 Python API를 제공합니다. 이를 통해 애플리케이션에서 Cloud Storage에 데이터를 업로드하거나 다운로드하는 등의 작업을 자동화할 수 있습니다.

8. Cloud Storage의 활용 예시

정적 웹 호스팅: Cloud Storage를 사용해 정적 웹사이트를 호스팅할 수 있습니다. 이를 통해 간단한 웹사이트를 저렴하게 운영할 수 있습니다.
데이터 백업 및 복구: Coldline Storage를 사용해 데이터를 장기 보관하고, 필요 시 복구할 수 있습니다.

Cloud Storage 정리

Google Cloud Storage는 다양한 데이터 저장 옵션을 제공하여 사용자가 필요에 따라 데이터를 안전하게 저장하고 관리할 수 있도록 도와줍니다. 대량의 데이터를 효율적으로 관리하고, 필요에 따라 유연하게 접근할 수 있는 기능을 제공하여, 웹 호스팅부터 데이터 백업까지 다양한 용도로 활용할 수 있습니다.

Cloud Storage 문서
gsutil 도구
gcloud 도구로 객체 스토리지 탐색
App Engine 및 Google Cloud Storage 샘플
Google Cloud Platform Python Samples
Cloud Strorage 정적 웹 호스팅
Cloud Storage와 Python 연동
Cloud Storage: Qwik Start - Cloud 콘솔
Cloud Storage: Qwik Start - CLI/SDK

DB Service - Cloud SQL

1. Cloud SQL의 기본 개념

완전 관리형 서비스

Cloud SQL은 데이터베이스와 관련된 모든 유지 보수 작업(설치, 패치, 백업 등)을 GCP가 관리합니다. 사용자는 데이터베이스의 생성과 설정, 그리고 데이터를 활용한 작업에만 집중하면 됩니다.

고성능, 확장성, 편의성

Cloud SQL은 고성능 데이터베이스를 제공하며, 필요에 따라 자동으로 확장할 수 있습니다. 이를 통해 사용자는 데이터를 안전하게 관리하면서도 필요한 때에만 자원을 사용해 비용 효율적으로 운영할 수 있습니다

2. Cloud SQL 인스턴스

VM 인스턴스 : Cloud SQL은 Google Cloud에서 실행되는 가상 머신(VM)을 통해 데이터베이스를 운영합니다. 이 VM에는 MySQL, PostgreSQL, 또는 SQL Server와 같은 데이터베이스 프로그램이 설치되어 있습니다.

영구 디스크 : 데이터베이스는 VM에 연결된 영구 디스크에 저장됩니다. 이 디스크는 확장 가능하며 내구성이 뛰어납니다. 데이터베이스 인스턴스가 작동하는 동안 고정 IP 주소가 할당되어 애플리케이션이 항상 동일한 IP 주소로 데이터베이스에 연결할 수 있습니다.

고가용성 옵션 : Cloud SQL은 고가용성을 지원합니다. 동일한 구성을 가진 대기 VM이 다른 영역에 준비되어 있으며, 주 VM에 문제가 발생할 경우 자동으로 대기 VM이 활성화되어 서비스가 중단되지 않도록 합니다.

3. MySQL용 Cloud SQL의 특징

지원 버전: MySQL 5.6, 5.7, 8.0을 지원하며, 최대 416GB RAM과 10TB의 저장 용량을 제공합니다.
보안: Cloud SQL 프록시 또는 SSL/TLS 프로토콜을 통해 보안 연결을 지원하며, 비공개 IP(비공개 서비스 액세스)도 지원합니다.
자동 백업 및 복구: 자동으로 데이터베이스를 백업하고, 특정 시점으로 복구할 수 있습니다.
통합 관리: Stackdriver를 통해 로깅 및 모니터링을 제공하며, 데이터베이스 상태를 실시간으로 파악할 수 있습니다.

MySQL과 Cloud SQL의 차이점

제한된 기능: 일부 MySQL 기능은 Cloud SQL에서 지원되지 않습니다. 예를 들어, 사용자 정의 함수, InnoDB memcached 플러그인, 그리고 SUPER 권한이 필요한 명령어 등은 사용할 수 없습니다.
제한된 명령어: LOAD DATA INFILE, SELECT … INTO OUTFILE 같은 명령어는 Cloud SQL에서 지원되지 않습니다.

4. PostgreSQL용 Cloud SQL의 특징

지원 버전: PostgreSQL 9.7을 지원하며, 최대 416GB RAM과 64개의 CPU를 가진 커스텀 머신 유형을 제공합니다.
확장성: 최대 10TB 저장 용량을 제공하며, 필요에 따라 저장 용량을 자동으로 확장할 수 있습니다.
보안 연결: Cloud SQL 프록시 또는 SSL/TLS 프로토콜을 사용해 보안 외부 연결을 지원합니다.
통합 관리: Stackdriver를 통해 로깅 및 모니터링 기능을 제공하며, 애플리케이션 상태를 쉽게 모니터링할 수 있습니다.

지원되지 않는 기능

SUPERUSER 권한: SUPERUSER 권한이 필요한 기능은 사용할 수 없습니다.
백그라운드 작업자: 커스텀 백그라운드 작업자는 지원되지 않습니다.
재연결 작업: Cloud Shell의 psql 클라이언트에서 재연결이 필요한 작업은 지원되지 않습니다.

5. Cloud SQL 인스턴스 생성 및 관리

인스턴스 생성
GCP 콘솔에서 Cloud SQL 인스턴스를 생성할 수 있습니다. 인스턴스 생성 시, 필요한 설정(예: CPU, 메모리, 저장 용량)을 지정하고 인스턴스를 만들 수 있습니다.

공개 IP 설정
데이터베이스에 원격으로 접근하려면 공개 IP를 설정해야 합니다. SQL 인스턴스의 연결 탭에서 승인된 네트워크를 추가하고, 공개 IP를 복사해 클라이언트에서 연결할 수 있습니다.

MySQL Workbench로 연결
MySQL Workbench와 같은 도구를 사용해 Cloud SQL에 연결할 수 있습니다. 이를 통해 데이터베이스를 관리하고 쿼리를 실행할 수 있습니다.

Cloud SQL 프록시 사용
Cloud SQL 프록시를 통해 보안 연결을 설정할 수 있습니다. 프록시는 인스턴스와의 보안 통신을 위해 사용되며, API와 연동해 인증된 연결을 제공합니다.

6. Cloud SQL에서 데이터 내보내기 및 가져오기

내보내기
SQL 인스턴스에서 데이터를 내보내려면 Cloud Storage 버킷에 데이터를 저장할 수 있습니다. SQL 탭에서 내보내기를 선택하고, 대상 위치로 Cloud Storage 버킷을 지정합니다.

가져오기
내보낸 데이터를 다시 가져오려면 SQL 인스턴스에서 가져오기를 선택하고, 데이터가 저장된 Cloud Storage 버킷을 선택해 데이터를 복구할 수 있습니다.

7. Cloud SQL gcloud 명령어 사용

gcloud 명령어: 터미널에서 gcloud sql connect [Cloud SQL 인스턴스 ID] --user=root 명령어를 사용해 Cloud SQL 인스턴스에 연결할 수 있습니다.

데이터베이스 작업: 연결 후, SQL 명령어를 사용해 데이터베이스를 생성하고 테이블을 관리할 수 있습니다. 예를 들어, CREATE DATABASE, CREATE TABLE, INSERT INTO, SELECT * FROM과 같은 명령어를 사용할 수 있습니다.

Cloud SQL 정리

GCP의 Cloud SQL은 관계형 데이터베이스를 손쉽게 클라우드에서 관리할 수 있는 강력한 서비스입니다. MySQL, PostgreSQL, SQL Server와 같은 데이터베이스를 지원하며, GCP가 데이터베이스 유지 관리와 보안을 책임지기 때문에 사용자는 데이터와 애플리케이션 개발에만 집중할 수 있습니다. Cloud SQL을 사용하면 고성능, 확장성, 그리고 자동화된 관리 기능을 통해 효율적이고 안전한 데이터베이스 운영이 가능합니다.

Cloud SQL for MySQL: Qwik Start
Cloud SQL for PostgreSQL: Qwik Start
API 탐색기: Cloud SQL
BigQuery 및 Cloud SQL용 SQL 소개
다른 MySQL 도구에서 연결
Cloud SQL 연결 정보

Serverless Service - Cloud Functions

1. Cloud Functions란 무엇인가요?

Google Cloud Functions는 서버리스 플랫폼입니다. 즉, 서버를 직접 관리할 필요 없이, 코드를 클라우드에서 실행할 수 있는 서비스예요. 코드는 이벤트가 발생할 때마다 실행되며, 자동으로 확장되기 때문에 많은 트래픽을 쉽게 처리할 수 있습니다.

2. 주요 특징

서버 관리 필요 없음 : Google이 서버, 운영체제, 보안 패치를 모두 관리해줍니다. 사용자는 오직 코드 작성에만 신경 쓰면 돼요.

이벤트 기반 실행 : 특정 이벤트(예: 파일이 업로드되거나 데이터베이스가 변경됨)가 발생하면 코드를 자동으로 실행합니다. 이를 "트리거"라고 불러요.

자동 확장 : 트래픽이 많아지면 Cloud Functions가 자동으로 인스턴스를 늘려서 처리합니다. 많은 요청도 쉽게 소화할 수 있어요.

스테이트리스 : 함수가 호출될 때마다 상태를 저장하지 않기 때문에, 매번 새로 시작된다고 생각하면 돼요. 상태가 필요하다면 외부 서비스(예: 데이터베이스)에 저장해야 합니다.

3. 사용 사례

이미지 처리 : 사용자가 이미지를 업로드하면 자동으로 크기를 조정하거나 필터를 적용하는 작업.
알림 전송 : 특정 이벤트가 발생하면 사용자에게 알림을 보내는 작업.
백엔드 로직 : 모바일 앱이나 웹 앱에서 서버가 필요할 때 간단하게 백엔드를 구축하는 용도.

4. 지원 언어

Node.js, Python, Go 등 여러 프로그래밍 언어를 지원합니다.

Cloud Fuction 정리

Google Cloud Functions는 서버 관리 없이 코드를 실행할 수 있는 간편한 방법입니다. 이벤트가 발생할 때 자동으로 실행되고, 트래픽이 늘어나도 알아서 확장되니, 작은 작업부터 큰 작업까지 쉽게 처리할 수 있습니다.

Cloud Run 함수
Cloud Functions 문서
Cloud Functions 개요
Cloud Functions: Qwik Start - 콘솔
Cloud Functions: Qwik Start - 명령줄
Cloud Functions 모니터링 및 로깅

Streamlit

The fastest way to build and share data apps

1. Streamlit의 주요 장점

간단한 코드로 앱 빌드: 파이썬 코드 몇 줄로 웹 애플리케이션을 쉽게 만들 수 있습니다.
인터랙티브 기능 제공: 복잡한 HTTP 요청이나 백엔드 개발 없이도 버튼, 슬라이더 등의 위젯을 사용해 사용자와 상호작용할 수 있습니다.
다양한 예시와 커뮤니티 컴포넌트: 다양한 예제 코드와 커뮤니티에서 만든 컴포넌트를 활용해 앱을 확장할 수 있습니다.
쉽게 배포: Streamlit Cloud를 통해 작성한 앱을 쉽게 배포할 수 있으며, 배포된 앱은 다른 사람들과 공유할 수 있습니다.
화면 녹화 기능: 앱 실행 후, 간단한 클릭으로 앱 사용 화면을 녹화할 수 있습니다.

2. 설치 및 간단한 예제

설치

pip3 install streamlit

실행

streamlit run sample_code.py

3. Streamlit의 주요 기능

UI 구성 요소

st.button(), st.checkbox(), st.radio() 등으로 다양한 사용자 인터페이스를 구현할 수 있습니다.
st.slider()를 사용해 숫자 범위를 선택하거나, st.text_input()을 통해 사용자가 텍스트를 입력할 수 있습니다.

데이터 시각화

st.line_chart(), st.bar_chart() 등을 사용해 간단하게 데이터를 시각화할 수 있습니다.
Matplotlib, Plotly, Altair 등 외부 라이브러리와도 쉽게 연동됩니다.

데이터 캐싱

@st.cache 데코레이터를 사용해 데이터 로딩 속도를 최적화할 수 있습니다. 이를 통해 같은 데이터를 반복해서 불러오는 대신, 캐시된 데이터를 재사용하여 앱의 성능을 높일 수 있습니다.

미디어 출력

이미지(st.image()), 비디오(st.video()), 오디오(st.audio()) 등을 웹 애플리케이션에서 손쉽게 출력할 수 있습니다.

사이드바 및 레이아웃

st.sidebar를 사용해 왼쪽에 사이드바를 추가하거나, st.beta_columns()로 화면을 여러 열로 나눌 수 있습니다.

Streamlit 정리

Streamlit은 데이터 사이언티스트나 개발자가 신속하게 데이터 애플리케이션을 구축하고 배포할 수 있게 해주는 훌륭한 도구입니다. 간단한 코드로 강력한 기능을 제공하므로, 빠르게 프로토타입을 만들고, 이를 실시간으로 공유하고 싶은 경우 매우 유용합니다

Streamlit
Documentation

0개의 댓글