CS/Data Engineering

[Data Engineering] Cloud Computing - Virtualizaion, Grid Computing, Cloud Services

하노정 2023. 4. 17. 00:44

📌 목차

  • Virtualizaion & Cloud Computing
  • Virtualizaion 
  • Grid Computing
  • Cloud Computing
  • Cloud Services
  • How does cloud computing change the world?

 

🍀 Virtualization & Cloud Computing

클라우드 컴퓨팅은 가상화와 관계가 매우 깊다.

 

🍀 Virtualization

Computer Engineering에서 환상을 보여주는 예술(?) 이라고 함.

🔗 Three pieces in operationg systems (운영체제의 3가지 virtualization)

  1. CPU virtualization
    • CPU, core가 한 개인 때가 있었는데 CPU가 하나이지만, 실제로 여러 개의 작업이 동시에 실행되는 것처럼 보이게 해주는 기술들이 있었음. 그것과 연결된 게 CPU virtualization
    • 프로세스들이 CPU를 독점하고 사용하는 것처럼 보이게 함.
  2. Memory virtualization
    • 실제 컴퓨터에서 물리적인 메인 메모리의 크기가 2GB라고 하면, 실행 중인 프로세스가 여러 개가 있을 건데 프로세스가 필요로 하는 메모리량이 2GB보다 큰 경우도 있다. 하나의 프로세스가 큰 메모리 공간을 보이게 해줌.
    • 프로세스가 직접 내가 정말 큰 메모리 주소 공간을 갖는 것처럼 보이게 함.
  3. I/O virtualization
    • 큰 공간의 IO 디바이스가 있는 것처럼 보이지만 그거보다 작은 공간 디바이스를 엮어서 제공함.

 

🔗 그 밖의 예들

  1. 인터넷 유무선 공유기
    • 한 개의 인터넷 회선을 이용해 마치 가정에서 여러 개의 인터넷 회선이 있는 것처럼 보여주는 장치
  2. 스마트폰 테더링
    • 공유기와 유사함. 한 개의 LTE, 3G 회선을 이용하여 와이파이를 가능하게 하여 여러 대의 모바일 장치가 인터넷을 사용할 수 있게 해주는 기능

하지만, 위 예시의 virtualization엔 중요한 특징이 있다.

사용 가능한 리소스는 물리적으로 제한된다.

LTE 스마트폰 테더링 기능에선, 이미 테더링 해주는 스마트폰이 있기에 유무선 인터넷으로 연결되는 것과는 동일한 속도가 날 것이라고 기대하지는 않는다. 또, 스마트폰 테더링을 이용해서 옆 친구가 와이파이 연결하게 해주면 그 친구는 사용할 수 있는 인터넷의 대역폭이 내 스마트폰 LTE 대역폭을 넘을 수 없다.

 

🔗 Virtual memory 예시

3개의 프로세스는 2.7G를 필요로 하는데 메인 메모리인 DRAM은 2G이다.

이때, 운영체제는 3개의 프로세스 중 가장 덜 사용하는 메모리 영역(예를 들어 각 프로세스의 마지막 영역)을 묶어서 서버 컴퓨터 랩탑 디스크 디스크에 저장한다. 이 메모리 영역에 접근하고자 할 때는 내용은 디스크에 저장되어 있으니 DRAM은 저장되어 있는 디스크로부터 데이터를 로딩하고, P1이 DRAM에 접근해서 사용하게 된다. 

이제 디스크에서 읽어올 데이터를 저장하기 위해서 현재 메인 메모리 DRAM에서 가장 덜 접근되는 것으로 판단되는 메모리 영역을 디스크로 내리고, 접근하고자 하는 디스크에 저장된 내용을 올리는 작업을 하고, P1이 DRAM에 접근하게 된다.

이런 작업을 페이징이라고 한다. 페이징에 사용되는 디스크를 Paging Device라고 한다. 페이징 디바이스의 경우 리눅스에서는 SWAP Device라고 하고, 윈도우에서는 Paging Device라고 한다.

운영체제는 메인 메모리 DRAM보다 더 큰 메모리 요구를 서비스하기 위해서 디스크를 이용해서 메모리 요청 서비스를 수행하고 이때 수행하는 행동을 페이징이라고 하고, 페이징에 사용되는 하드 디스크 또는 SSD를 페이징 디바이스라고 한다. 

 

🔗 Virtual machine (가상머신)

물리적인 한 컴퓨터에서 마치 여러 개의 컴퓨터가 있는 것처럼 해주는 소프트웨어이다. Virtual Box에 Ubuntu 설치하는 것이 그 예시이다. 

 One of popular use cases

  • ActiveX용 가상 머신 : 가상머신에서 윈도우를 설치하고 ActiveX를 많이 사용하는 응용을 수행하는 경우에 이 가상 머신을 사용 (금용 거래, 쇼핑)

 

🍀 Grid Computing

15년 전 쯤 굉장히 유행했던 컴퓨팅 모델이다. 슈퍼 컴퓨터라고 알려져있는 컴퓨팅 모델이다. 주로 과학 기술 연구하는 연구 기관을 중심으로 널리 사용된 모델이다. 

Use cases

  • 연구 기관 A: 이번 신약 개발 시뮬레이션에 계산 전용 서버가 256대가 필요
  • 연구 기관 B: HEP(고에너지 물리) 문제를 푸는 데 계산 전용 서버가 256대가 필요

각각 자체적으로 256대의 서버로 이루어진 클러스터를 독립적으로 운영했고, 이때까지는 큰 문제가 없었다. 

하지만 계산 자원을 묶어서 더 큰 계산을 할 수 있음. 이젠 512대가 필요할 수도 있다. A는 새로 256대 서버를 추가 도입해야 하는데, 이전에 구매했던 256대 서버와 같은 기종의 서버를 구할 수 없다면 이기종의 서버가 될 수 있고 새 문제가 발생한다. A 기관 입장에서 256대가 매일 매시간 쓰는 게 아니라 계산에 필요할 때만 쓴다. 클러스터의 유용성의 그렇게 높지 않다는 것이다. 선뜻 예산 배정하여 추가로 256대 설치하는 게 어렵다. 

 

🔗 CERN : 유럽 입자 물리학 연구소

현재는 CERN을 중심으로 한 Grid Computing 모델을 사용한다.

양쪽 기관의 클러스터들 안에 서버들을 묶어서 마치 각 기관이 512대 있는 것처럼 보여주게 해주는 것Grid Computing이다. 내 것과 상대 것을 합쳐서 512대가 되어야 한다. 상대방도 내 256대를 가져다 쓸 수 있다는 것이다.

  • HTML
  • WWW
  • LHC : 거대강입자가속기

힉스 입자, 우주 탄생의 비밀을 알아내는 곳이라고 알려져 있다. Grid Computing Center 가 있고 전세계에서 가장 큰 센터를 갖고 있다. 컴퓨팅 네트워크가 36개국 170개의 컴퓨팅 센터가 연결되어 있고 1년에 25PB 데이터가 생성된다. 데이터가 많이 생성되고 있어서 전세계에 나눠서 저장하고 나눠서 계산 수행하도록 되어 있다.

 

🔗 Economics in Grid Computing

내가 상대방 서버를 사용하려면 상대방 서버도 이득이 있어야 내놓을 수 있고, 이득의 측면을 잘 이해해야 한다.

CERN 입자 가속기는 스위스에 있고 Grid Computing Center는 각 나라에 있다면, 각 나라는 어떤 이득이 있어?
  • 연구 기관에서 얻는 이득은? 국내 과학자들은 실험 데이터를 빠르게 국내에서 활용 가능함. 한국 과학자들이 KISTI와 얘기해 CERN의 실험 데이터를 이용함

 

여러 연구기관에 깔려 있는 컴퓨터 리소스/클러스터를 공유하는 것Grid Computing의 목적이다. 자원 대 자원, 자원 대 데이터를 공유하는 것이고 이걸 만족하면 Virtual Cluster가 가능하다. 이게 Grid Computing이고, Cloud Computing과 굉장히 유사하다.

 

🍀 Cloud Computing

기관 대 기관이 아니라, 기관 대 개인이다. 개인이 기관의 리소스를 임대해서 사용하는 것이다. 내가 컴퓨터들이 없는데 컴퓨터가 있는 것처럼 사용하게 해주는 것이다. 

Grid Computing과 유사한데 다른 점은?
  • Resource의 종류가 다양
  • Price model도 다양
  • Grid Computing의 resource는 순전히 서버 - 계산 서버, 네트워크, 저장 장치다.
  • Cloud Computing은 DB, 서버, IOT 프레임워크 등 제공받을 수 있는 resource가 다양하다.
  • Grid Computing은 사용자가 내 서버를 내놔야지만 상대방 서버를 쓸 수 있지만(공유), 아마존이나 MS가 제공해주는 Cloud Computing은 돈만 내면 내가 원하는 다양한 리소스를 연결해 사용할 수 있다(구매). 

 

🔗 Resource (Amazon)

Amazon EC2 Resource

상위 2개는 범용이다. 밑 2개는 CPU 계산이다. g는 GPU이다. EC2 외에도 모두 제공한다.

🔗 Price (Amazon)

미국 동부, 아시아 싱가포르를 보면 조금씩 가격이 다르다. 1년 선계약 할인 등도 포함한다.

 

가상의 데이터 센터 급의 컴퓨터 리소스를 개인에게 제공해준다는 것이 Cloud Computing이다.한에 가까운 컴퓨팅 리소스, up-front commitment, 사용한 것만큼 돈을 내는 것이 핵심 정의이다. Public cloud, Private cloud가 있다.

 

🔗 Players in the Clouds

Customers, Providers, Cloud Supporters가 있다. 

 

🍀 Cloud Services

🔅 Storage Service (DSaaS)

데이터 저장소를 고객에게 전달한다. DB, file system, key-value 시스템을 제공하고, 사용한 만큼 돈을 낸다.

예를 들어 아마존은 RDS, S3 가 있다. 

Amazon S3

인터페이스는 최근 거의 웹으로 REST로 제공한다. PUT으로 객체를 저장하고 GET으로 읽는다.

 

🔅 Infrastructure Service (IaaS)

컴퓨터 하드웨어 자체를 서비스로 제공한다. 하드웨어를 그대로 전달하는 게 아니라 가상머신으로 전달한다. 

예를 들어 아마존은 EC2 가 있다.  

 

🔅 Platform Service (PaaS)

보통은 먼저 IaaS를 임대하고, DSaaS를 임대하고 이 둘을 엮고 그 위에 DB, WS를 설치해서 구현할 것이다. 근데 잘 알려진 플랫폼이 있다. 잘 규격화된 소프트웨어 아키텍처 레이어가 있는 경우가 있고, 아키텍처대로 설치되어 있는 플랫폼을 말한다.

예를 들어 구글의 App Engine이 있다. SQL을 사용하려면 MySQL을 설치해서 일일히 설정을 잡아야 하는데 이미 제공되어 있는 플랫폼을 이용하면 서비스를 만들어낼 수 있다는 것이다. Azure도 있다. 

 

🔅 Software Service (SaaS)

플랫폼을 통해 개발하는 게 아니라 구글의 gmail이 좋기는 하지만 조직 입장에서는 gmail 도메인이 아니라 조직이 원하는 도메인을 사용하고 싶을 수 있다. 소프트웨어 자체를 임대 받아서 쓰는 것이다. 서버, 저장소, 플랫폼이 뭔지 고민할 필요 없다. 필요한 소프트웨어(이메일)이 규모있게 동작하면 되기 때문에 소프트웨어 자체를 서비스로 제공해주는 것을 말한다.

SaaS는 소프트웨어인데, 인터넷을 통해서 액세스되는 호스팅 서비스이다. 

ASP -> SaaS로의 진화 

  • ASP (Application Service Provider) : 업무 기능을 제공하는 애플리케이션을 온라인으로 서비스한다는 개념
  • 거의 차이가 없지만 좁은 의미에서 차이가 있음.
    • 과금방식
    • 중점적인 사업자가 누구인지 (옛날엔 KT와 같은 망 사업자, 지금은 클라우드 사업자)
    • 애플리케이션의 인도 방식 (서비스를 어떻게 가져갈 건지. 옛날엔 실체 설치, 지금은 웹 기반 바로 사용)
    • 고객 요구사항 반영 정도 (옛날엔 일일히 업데이트, 지금은 우리도 모르는 사이 업데이트)
    • 새로운 사업자 유형 추가

SaaS는 잘 알려진 것을 바탕으로 서비스를 만들고, 새 비즈니스 로직을 구현하는 방식으로 이루어진다. 기존 IaaS, PaaS와 같은 각 소프트웨어들을 이용해서 하나의 새로운 비즈니스 로직을 만들어 고객에게 전달하는 것이 SaaS이다. SaaS 비즈니스 예제로 File 변환 서비스가 있다.

 

🍀 How does cloud computing change the world?

주로 게임. 과거에는 개발사가 개발하면 서비스 하기 위해 가장 좋은 인터넷 데이터 센터 (IDC)를 선택하고 서버, 네트워크 스위치, 저장 장치를 구매하고 다 설치한다. 돈, 시간, 기술자가 필요하다. 네트워크 단절, 서버 끊김 등 끝없는 fault가 생기는 와중에 지속 가능한 서비스를 제공하기 위해서 추가적인 소프트웨어를 개발해야 한다. 로그 처리, 속도를 위한 인메모리 캐시 설치 등을 했었다.

Cloud Computing이 도입되고 나서는 DB를 위해 RDS를 구매한다. 그럼 규모있는 RDBMS를 사는 것이다. 객체 저장을 위해 S3, EBS를 사용한다. S3는 아이콘, 사용자의 이미지 등을 저장할 수 있다. 캐시를 위해 CloudFront라는 cdn을 이용한다. 한국 사람들끼리 게임한다면, 한국 서버의 한국 유저의 썸네일 같은 경우를 미리 저장하거나 할 수 있다. 이런 것들을 Cloud Computing 회사로부터 구매를 하고, 이런걸 이용해서 서비스를 설치하면, 위에서 말한 것들을 구매를 통해 사용할 수 있다는 것이다. 소프트웨어 구매를 하는 게 아니라 소프트웨어를 사용한 시간만큼 구매한다는 것이다. 서비스가 잘 되면 추가 비용을 내서 확장을 할 수 있다. 

쿠키런이라는 유명한 게임이 나오기에 초기 개발자는 2명이었다. 시스템 엔지니어는 없었다. AWS를 이용해서 출시할 수 있었다는 것이다.