본문 바로가기
잡동사니

[클라우드 컴퓨팅 개념]

by L3m0n S0ju 2021. 9. 1.

 

클라우드 컴퓨팅이란?

 

 

클라우드 컴퓨팅이란 컴퓨터를 렌트하는 대신 제공자에게 돈을 지불하는 것이다. 즉, 사용자들은 만약 새로운 환경이 필요할 때 실제로 장비를 구입하기에는 큰 돈이 들기에 아마존 같은 클라우드 컴퓨팅 회사에 환경을 빌리는 대신 돈을 지불하는 것이 비용적으로 훨씬 효율적이다. 또한 직접 장비를 설치하면서 유지, 보수에 신경쓰지 않아도 된다는 점에서 매우 편리하다. 이처럼 클라우딩 컴퓨팅 환경의 가장 큰 장점은 다이나믹하고 유연하다는 점이다. 예를 들어 벤쳐기업에서 서버를 설치하는 경우 서버 사용량을 예측하기는 매우 어렵다. 기존 환경에서는 서버 사용량 예측하여 cpu 사양과 메모리 용량, 하드디스크 용량을 고려하여 구매를 하더라고 예측을 뛰어넘는 사용자가 유입될 경우 추가로 장비를 설치해야하는 불편함과 비용이 들지만 클라우드 컴퓨팅에서는 이런 어려움이 해소된다. 이러한 클라우드 컴퓨팅 개념은 현대 사회에서의 기업 인프라 구축에는 필수적이라고 할 수 있다. 

 

 

 

 

Public cloud -> 누구나 접근 가능, multitanency 특성, 사용자 요구에 따라 자원을 할당할 수 있다.
Private cloud -> 외부와의 단절, 민감한 데이터 저장, 이질적인 요소가 적어서 관리하기 쉽다. 제한된 환경으로 맘대로 자원을 할당할 수 없다.

 

Multinancy -> 애플리케이션을 호스팅하는 서버는 다수의 사용자에게 서비스를 제공해야한다. 각 사용자 시선에서는 
독립적으로 애플리케이션을 사용한다고 느낀다.

 


Scaling -> The ability of the IT resource to handle increased or decreased usage demands

 

Horizontal Scaling -> scale out 서버 개수 늘림, scale in 서버 개수 줄임

 

scale out은 서버 개수를 늘리는 것으로  개수에 비례해서 비용이 들기 때문에 가격이 상대적으로 저렴하고 업그레이드 주기가 짧은 편이다.

 

 

 

Vertical Scaling -> scale up 성능 업그레이드, scale down 성능 다운그레이드

 

scale up은 서버의 성능 자체를 높이는 것으로 cpu의 개수에 정비례해서 비용이 늘어나지 않고 더 많은 비용이 들기 때문에 업그레이드 주기가 긴편이다.

 

scalability란 IT 자원에 대한 사용자 요구를 다루기 위한 능력을 말한다. 유저가 사용하는 자원에 대한 모니터링을 지속적으로 하면서 서버 개수를 늘리는 Horizontal Scaling(scale out), 또는 서버 성능을 업그레이드 하는 Vertical Scaling(scale up)을 통해 사용자에게 IT 자원을 부여하거나 성능 업그레이드를 한다.

 

 

 

 

 

 

 

 

 

 

 

 


클라우드 컴퓨팅 특징

 

On-Demand Usage -> 고객이 원하는 것을 즉시 해결해주는 정보산업체제이다.

Ubiquitous Access -> 어디서나 접근 가능하다.

Multitenancy -> 한 대의 서버에 여러명 접근한다.

Elasticity -> 자동화된 스케일링 능력이다.

Measured Usage -> 자원의 사용량이 자동으로 실시간 수집, 모니터링되어 과금할 수 있어야 합니다.

Resiliency -> IT 자원을 중복으로 구현하여 우발적인 이벤트에 대처할 수 있는 능력입니다.

 

 

 

 

 

 

Failover System

-> 시스템 fail이 일어났을때 자동으로 redundant(중복의) 또는 stanby(대기하고있는) resource로 전환해주는 시스템이다.

 

SLA -> QOS를 유지, 보증하기 위해 서비스 수준을 정해서 만든 규약. 지속적인 모니터링을 통해 failure 탐지

 

resiliency를 위해서 failover에 대비한 여분의 서버를 추가 설치하는 기술이 있다. 서버 2개가 동시에 동작하는 active-active 방식과 서버 하나는 failover가 났을 경우 동작하는 active-passive 방식이 있다. 해당 기술을 통해 서버는 failover에 대응함으로써 사용자에게 availability와 reliability를 제공한다.

 

 

Active - Active -> hot standby

Active - Paswive -> cold standby

 

 

 

 

 


클라우드 Reference 계층 모델

 

IaaS -> 클라우드 자원(하드웨어 자원)을 의미한다. Infrastructure-as-a-Service 이름 그대로 인프라를 의미한다. 

ex) 아마존 EC2(컴퓨팅 환경) and S3(저장소)

 

PaaS -> 인프라 위에 있는 플랫폼(시스템) 서비스

ex) Google Engine

 

SaaS -> 플랫폼 환경 위에 소프트웨어 서비스

ex) SalesForce.com

 

 

 

 

 


인프라 관리 소프트웨어 계층

 

과금 기능에 대한 모델

모니터링 컴포넌트

QoS(Quality of Service)/SLA(Service Level Agreement) 유지 및 관리 컴포넌트

provisioning 컴포넌트 = 스케줄러

 

 

 

 

 


 

 

 

 

 

Historical developments

 

Mainframes -> 단독 시스템으로 강력하고 많은 양의 연산을 처리할 수 있다. 가격 비쌈

 

Clusters -> Mainframes의 대안으로 나옴. 저가의 컴퓨터를 모아서 하나의 시스템으로 관리하면서 Mainframes과 비슷한 성능을 냄. 가성비, 확장성 굿

 

Grids -> 클러스터 컴퓨팅에서 진화한 형태 -> 지리적으로 서로 떨어져있는 컴퓨터들의 자원을 공유하는데 컴퓨터들이 여유로울 때 즉, Idle한 컴퓨터들의 자원을 기부받아 컴퓨팅하는 개념이다.

 

 

 

 

 


Parallel computing -> 같은 PC안에서 CPU 코어 여러개가 공유메모리를 공유하는 컴퓨팅 환경이다. 같은 타입의 프로세서들이 모인 형태이다. 작업을 나눠서 병렬적으로 수행. homogeneous

 

Distrubuted computing -> 지리적으로 떨어져있는 서로 다른 컴퓨터들이 하나의 시스템 환경을 이룸. heterogeneous

 

 

SISD(Single-instruction, single-data) system

-> 명령어가 주어지면 프로세서가 해당 명령어 처리

 

SIMD(Single-instruction, multiple-data) system

-> ex) 행렬 연산 C = A * B 작업을 나눠서 각 코어에 나눠줌

 

MISD(Multiple-instruction, single-data) system

ex) y=sin(x)+cos(x)+tan(x) -> 코어에 하나씩 나눠줌

 

MIMD(Multiple-instruction, multiple-data) system

-> 비동기적으로 진행됨

    타입 1) Shared-memory MIMD -> Parallel computing 동일한 개념

    타입 2) Distributed-memory MIMD -> Distrubuted computing 동일한 개념

 

 

 

Parallel computing의 효율성 측정

S(N) = T(1) / T(N) -> T(1)은 sequential 컴퓨팅의 실행시간, T(N)은 N개 코어 컴퓨팅 실행시간

 

Amdahl's Law -> parallelize 할 수 없는 작업이 많을수록 스피드 업이 제한된다.

S = 1 / α -> α는 sequential 컴퓨팅의 비율

 

 

 

 

 


 

 

VMM(Virtual Machine Monitors)

-> also called Hypervisor

 

VMM는 CPU와 메모리를 가상화한다. 위 계층에서는 가상화된 하드웨어 자원들을 모니터링하고 아래 계층에서는 실제 하드웨어에 접근한다.

 

 

 

 

Shadow page table

-> 각 vm은 독립적으로 페이징을 통해 메모리를 관리하고 하이퍼바이저는 추가로 각 vm들을 실제 메모리에 매핑시켜주기 위해 shadow page table을 가지고 있다.

 

 

 

 

 

 

Hardware-Based Virtualization은 하드웨어 위에 바로 하이퍼바이저가 올라가고 그 위에 guest os가 올라간 형태 -> bare-metal, traditional

 

Operating System-Based Virtualization은 하드웨어 위에 OS가 올라가고 OS 위에 하이퍼바이저 그 위에 guest os가 올라간 형태 -> hosted

 

 

 

 

traditional VMM -> also called bare metal VMM

 

 

Hosted VMM -> 익숙한 VM 형태

 


가상화 특징

 

보안 강화 -> 서로 환경에 독립되어 있으므로 보안이 강화된다.

Sharing -> 자원을 공유할 수 있음

Aggregation -> 여러개의 컴퓨팅 환경을 하나로 묶을 수 있음 -> 작은 컴퓨터를 모아서 슈퍼 컴퓨터의 연산을 가능하게 한다.

Emulation -> 실제 하드웨어 접근에 어려울 때 가상화로 쉽게 접근할 수 있게 해줌

Isolation -> 독립적인 분리된 환경

Portability -> virtual image 형태로 다른 환경에 붙일 수 있음

 

 

 

 

 

 

 

 

 

전가상화(Full Virtualization)

-> 가상화된 하드웨어 자원을 제공 -> guest OS 측에서 하드웨어에 접근하기 위한 추가적인 시스템콜 수정이 필요없다.

 

Hardware Assisted Full Virtualization -> 하이퍼바이저로 트랩을 보내지면 하이퍼바이저에서 하드웨어 리소스에 대한 에뮬레이션 작업이 이루어지고 결과가 반환된다. 에뮬레이션 작업이란 guest OS에서 Trap이 발생하면 VMM으로 보내지고 VMM에서 에뮬레이션 작업을 통해 하드웨어에 접근하는 것을 의미

 

Full Virtualization with Binary Translation -> binary translation을 통해 하드웨어에 접근 -> guest OS에서 binary 형태로 명령어가 넘어오면 VMM에서 번역하여 하드웨어에 접근

 

반가상화(Para Virtualization)

-> 시스템콜과 유사한 hypercall을 통해 하드웨어 자원에 접근 -> hypercall을 사용하기 위해 OS kernel 수정이 필요 -> 전가상화는 guest OS에서 VMM을 신경쓸 필요가 없으므로 독립적이지만 반가상화에서는 VMM와 상호작용하므로 의존적이다. 따라서 반가상화는 전가상화에 비해 less portable하다.

 

 

 

Performance 비교

Hardware Assisted Full Virtualization는 트랩을 사용하므로 시간소모적이다. 반면 반가상화는 트랩을 사용하지 않으므로 상대적으로 성능이 좋다. 

 

 

 

 

가상화의 장점

 

1. isolation을 제공함으로써 다른 환경과 분리되므로 더 secure하다.

2. 다른 환경에 이식하기 쉽다 -> Portability

 

가상화의 단점

 

1. 가상화 계층이 추가되면서 Perfomance가 떨어진다. 

2. 환경들이 메모리를 공유하면서 unsecure 할 수 있다.

'잡동사니' 카테고리의 다른 글

북마크로 유튜브 광고 스킵하기  (0) 2021.09.16
티스토리 블로그 이미지 삽입  (0) 2021.09.05
데이터베이스 별 주석  (0) 2021.09.01
파일 시그니처 모음  (0) 2021.08.29
유용한 사이트  (0) 2021.08.26

댓글