1. Cloud
1.1 Cloud 서비스를 사용하는 이유
본인의 컴퓨터로 웹, 앱 서비르 만들기도 가능함 -> 하지만 이런 경우 자신의 컴퓨터가 종료되면 웹,앱 서비스도 종료.
이런 경우 전통적인 접근 방법
- 물리적 공간, 확장성을 고려한 서버실을 만들고 운영
- IDC(Internet Data Center)
- 서버 컴퓨터를 넣을 공간 + 추후 서버를 추가할 때 즉각적으로 확장할 수 있는지
- 전기, 에어컨 등 서버가 급작스럽게 종료되지 않도록 준비가 필요함
따라서 자유롭게 활용할 수 있는 개념으로 클라우드 서비스가 점점 발전
그 이후엔 개발자가 직접 설정해야 했던 작업 등을 클라우드에서 쉽게 할 수 있는 방향으로 발전
(Managed 서비스)
1.2 Cloud 서비스의 다양한 제품

시장점유율

1.3 Cloud 서비스 공통 기술 개념
Computing Service (Server)
- 연산을 수행하는(Computing) 서비스
- 가상 컴퓨터, 서버로 CPU나 Memory, GPU 등을 선택할 수 있음
- 인스턴스 생성 후, 인스턴스에 들어가서 사용 가능
ex) AWS(EC2), Google Cloud(Compute Engine)
Serverless Computing
서버 관리를 클라우드쪽에서 진행
- 코드를 클라우드에 제출하면, 그 코드를 가지고 서버를 실행해주는 형태
- 요청 부하에 따라 자동으로 확장(Auto Scaling)
- Micro Service로 많이 활용
ex) AWS(Lambda), Google Cloud(Cloud Function)
Stateless Container
- Stateless : 컨테이너 외부(DB, Cloud Storage 등)에 데이터를 저장. 컨테이너는 그 데이터로 동작
- 컨테이너가 중지되거나 삭제될 때, 컨테이너 내에서 생성된 모든 데이터나 상태가 삭제
- Docker를 사용한 Container 기반으로 서버를 실행하는 구조
- Docker Image를 업로드하면 해당 이미지 기반으로 서버를 실행해주는 형태
- 요청 부하에 따라 자동으로 확장(Auto Scaling)
ex) AWS(ECS), Google Cloud(Cloud Run)
Object Storage
- 다양한 형태의 데이터를 저장할 수 있으며, API를 사용해 데이터에 접근할 수 있음
- 다양한 Object를 저장할 수 있는 저장소
- 머신러닝 모델 pkl 파일, csv 파일, 실험 log 등을 Object Storage에 저장할 수 있음
ex) AWS(S3), Google Cloud(Cloud Storage)
Database (DB)
- Database가 필요한 경우 클라우드에서 제공하는 Database를 활용할 수 있음
- 웹, 앱서비스와 데이터베이스가 연결되어 있는 경우가 많으며, 대표적으로 MySQL, PostgreSQL
등을 사용할 수 있음
ex) AWS(RDS), Google Cloud(Cloud SQL)
| 항목 | Object Storage | Database |
|---|
| 데이터 형태 | 비정형/반정형 (이미지, 동영상, 파일 등) | 정형/반정형 (테이블, 행/열, 스키마 기반) |
| 접근 방식 | API/HTTP 기반의 GET, PUT 방식으로 단순 접근 | SQL 또는 전용 쿼리 언어를 통한 복잡한 질의 및 조작 |
| 데이터 구조화 수준 | 낮음 (파일 단위 관리, 디렉토리 개념 없음) | 높음 (테이블, 컬럼 구조 및 인덱스 활용) |
| 주요 활용 분야 | 대용량 비정형 데이터 보관, 정적 파일 제공, 백업/아카이빙 | 트랜잭션 처리, 고객 정보 관리, 복잡한 질의 처리 |
| 확장성(Scalability) | 매우 뛰어남 (오브젝트 단위로 수평적 확장 용이) | 규모 확대 시 성능 관리가 중요, 샤딩/리플리카 필요 |
| 주요 예시 | AWS S3, Google Cloud Storage | MySQL, PostgreSQL, MongoDB, DynamoDB |
Data Warehouse
- 데이터 분석에 특화된 Database
- Database에 있는 데이터, Object Storage 에 있는 데이터 등을 모두 Data Warehouse에 저장
ex) AWS(Redshift), Google Cloud(BigQuery)
- AI Research, AI Develop 과정을 더 편리하게 해주는 제품
- MLOps 관련 서비스 제공
- Google Cloud에서 TPU 사용 가능
ex) AWS(SageMaker), Google Cloud(Vertex AI)
cloud 제품간 비교분석

1.4 Cloud Network
클라우드를 잘 이해하기 위해 네트워크 지식이 있으면 좋음
- 특정 클라우드 벤더(AWS, GCP)에 종속되지 않고, 인프라 환경을 이해할 수 있음

Virtual Private Cloud (VPC)
VPC는 Virtual Private Cloud 의 약자이며 네트워크를 논리적으로 분리할 수 있게 합니다. 이를 통해 네트워크가 확장성을 가지고 해당 네트워크 영역에 대한 통제권을 가질 수 있습니다.

- 보안상의 이유로 네트워크 분리
- 실제로 같은 네트워크 안에 있지만 논리적으로 분리한 것
- Cloud Computing Service(예 : Compute Engine) 사이의 연결 복잡도 줄여줌
- 여러 서버를 하나의 네트워크에 있도록 묶는 개념
서브넷(subnet)
서브넷은 네트워크를 더 작은 단위로 분할하는 기능입니다. 서브넷을 사용하여 대규모 네트워크를 관리하고 효율적으로 네트워크 리소스를 할당할 수 있습니다.
- VPC 안에서 여러 망을 쪼갬
Public Subnet : 외부에서 접근 가능한 망
Private Subnet : 외부에서 접근이 불가능한 망
같은 VPC 내에 있으면 Private IP로 접근이 가능함
라우팅(Routing)
2.1 GCP 기초 인프라 구성하기
https://cloud.google.com/gcp
프로젝트 정보 => project_name, project_id를 자주 사용

2.2 GCP Compute Engine
Compute Engine 클릭
(참고) 서버=인스턴스=VM(Virtual Machine)=GCP Compute Engine, AWS EC2

[VM 인스턴스] 클릭 - [인스턴스 만들기] 클릭
이 부분이 서버를 만드는 곳



인스턴스만들기.


object storage 에서 bucket(폴더) 만들기.





(응용) Python으로 Bucket 내 파일 다운로드 및 업로드
1) Google Could 파이썬 라이브러리를 설치

2) 서비스 계정(Service Account)과 키를 생성


3) json 파일을 활용하여 로컬에 환경 변수를 설정

4) 예시 코드
- Cloud Storage
- Bucket : 저장소(하드 드라이브)
- Blob : Binary Large Object. 저장 객체

2.3 GCP Cloud Storage
3. 참고사항
GCP공식문서
https://cloud.google.com/docs?_gl=1*1qvbnv0*_up*MQ..&gclid=CjwKCAiA9bq6BhAKEiwAH6bqoH2F6QSWY2FuBmbvo00dn9Q17vhlVZWt-IHvBB4JCmDoHUTjymDqQhoCnygQAvD_BwE&gclsrc=aw.ds&hl=ko
AWS를 이용한 MLOps
https://aws.amazon.com/ko/blogs/tech/aws-mlops-use-case/