클라우드
클라우드 개념 및 종류
- 클라우드: IT 인프라 자원을 직접 보유해서 사용하는 것이 아닌, 다른 기업의 IT 인프라 자원을 빌려서 쓰는 것
- 클라우드 비용: 자원을 빌려 쓴 것 만큼의 사용료를 월 과금 형태로 지불 = Pay as you go(사용한 만큼 지불)

- 호스팅 vs 서버 호스팅 vs 클라우드

호스팅(웹 호스팅) | 서버 호스팅 | 클라우드 | |
개념 | IDC의 특정 서버 자원을 빌려씀 | IDC의 특정 서버 자체를 빌려씀 | IDC의 특정 서버 자원 혹은 서버 자체를 빌려쓸 수 있고, 이 두가지 혼합도 가능 |
특징 | 자원 변경(확장 혹은 축소)시 OS 설치 등 세팅 시간이 필요함. 빠른 대응이 어려움 | 자원 변경(확장 혹은 축소)시 유연하게 원하는 만큼 빠르게 변경 가능 → Elastic 하다는 것이 특징 |
- 코로케이션: 데이터센터 내 공동 공간을 빌려 자사의 서버를 설치하는 것, 회사 자체 서버가 있는 경우 공간만 임대하여 사용
- 서버 호스팅: 회사 자체 서버가 없는 경우, 서버 + 공간을 임대하여 사용
- 코로케이션과 서버 호스팅 둘다 서버를 관리해줌
- 호스팅: 다른 사람들과 자원 공유 = 성능 ↓ 비용 ↓
- 서버 호스팅: 단독으로 자원 사용 = 성능 ↑ 비용 ↑
- 클라우드: 자원 변경이 유연함 = Auto Scaling, 자원과 비용을 비교하여 사용해야 함(비용 최적화가 중요)
- IaaS: Infra as a Service / IT 인프라 자원 전체를 빌려씀, OS 및 각종 소프트웨어 설치 필요
- PaaS: Platform as a Service / 이미 설치된 OS(플랫폼)을 빌려씀, 애플리케이션 설치 필요
- SaaS: Software as a Service / 소프트웨어를 빌려씀


클라우드 형태
- 온프레미스: 기업이 직접 IT 인프라를 운영
- 퍼블릭 클라우드: 다른 기업의 IT 인프라를 빌려다 씀
- 프라이빗 클라우드: 기업이 보유한 IT 인프라를 클라우드 서비스처럼 기업 내에서 활용 = 회사 자체 클라우드

- 하이브리드 클라우드: 프라이빗 클라우드 + 퍼블릭 클라우드
→ 중요한거는 프라이빗 클라우드로 운영, 중요도가 낮은 시스템은 퍼블릭 클라우드로 운영
- 멀티 클라우드: 퍼블릭 클라우드 + 퍼블릭 클라우드 = AWS + Azure
→ 가용성을 위해 사용하는 경우(AWS or Azure에 장애 발생 시 다른 클라우드 사용)

클라우드 기술 및 용어
- 컨테이너: Container, 리눅스 기반 애플리케이션 운영을 위한 프로세스 격리 기술
- 컨테이너 런타임: Container Runtime, 컨테이너를 다루는 도구
- 도커: Docker, 컨테이너 기술을 누구나 쉽게 사용할 수 있도록 만든 컨테이너 런타임 중 가장 유명한 오픈소스 프로젝트

- 컨테이너 vs 가상머신
- 컨테이너는 앱(App) 별로 가상화 vs VM은 OS 별로 가상화

- 쿠버네티스: 다수의 컨테이너를 효율적으로 운영, 관리하기 위한 도구
- 구글이 오픈소스로 공개, 현재 기업 환경에 맞는 유료 쿠버네티스 서비스가 다수 존재(EKS, AKS, GKE 등)
- 특정 웹 서버의 기능을 여러개로 나눠서 컨테이너로 관리

- 파드(Pod): 앱이 운영되는 컨테이너들의 모음, 그룹
- 노드(Node): 파드가 운영되는 물리 서버 또는 가상 머신, 워커 노드라고 부름
- 클러스터(Cluster): 노드들의 집합
- 마스터(Master): 다수의 워커 노드들 및 그 하위의 파드와 컨테이너를 관리하는 노드
- 파드 < 노드 < 클러스터 < 마스터
