티스토리 뷰

오늘은 지난 시간 가상화와 클라우드에 대한 내용에 이어 클라우드 유형에 대해서 이야기해보려고 합니다. 그 중에서도 Infrastructure as a Service(이하 IaaS)에 대해서 이야기 해보려고 합니다.

 

1편 컴퓨팅 패러다임(Computing paradigm)

2편 가상화와 클라우드(Virtualization and Cloud)

3편 클라우드 유형: IaaS(Infrastructure as a Service)

4편 클라우드 유형: PaaS(Platform as a Service)

5편 클라우드 유형: SaaS(Service as a Service)

6편 미래 컴퓨팅 패러다임(Next generation paradigm)

 

오늘의 내용을 기반으로 PaaS, SaaS 등의 클라우드 서비스가 기동한다고 생각하시면 좋을 것 같습니다. 따라서 오늘의 내용이 매우 중요한 부분을 차지한다고 보면 좋을 것 같습니다. 클라우드 유형을 나누는데 있어 설치 유형별(Private, Public)로 나누지 않는 것은 이미 “1편 컴퓨팅 패러다임(Computing paradigm)에서 적당히 언급했다 생각하여 해당 내용을 참고해 주시기 바랍니다.

IaaS(Infrastructure as a Service)

 

IaaS 관련하여 Wikipedia, Red Hat, Microsoft Azur등에서는 무엇이라 말하는지 정의하고 공유해 보도록 하겠습니다.

 

Infrastructure as a service (IaaS) are online services that provide high-level APIs used to dereference various low-level details of underlying network infrastructure like physical computing resources, location, data partitioning, scaling, security, backup etc.
서비스형 인프라(IaaS)는 물리적 컴퓨팅 리소스, 컴퓨팅 리소스 위치, 데이터 파티셔닝, 확장, 보안, 백업 등과 같은 기본 네트워크 인프라의 다양한 하위 레벨 세부 정보를 참조하는 데 사용되는 고급 API를 제공하는 온라인 서비스입니다.

Quotation 1 Infrastructure as a service (Sam, 2008)

 

클라우드 인프라 서비스라고도 하는 IaaS(Infrastructure as a service)는 인터넷을 통해 최종 사용자에게 IT 인프라를 제공하는 형태의 클라우드 컴퓨팅입니다. IaaS는 주로 서버리스 컴퓨팅과 관련이 있습니다.

Quotation 2 IaaS(Red Hat, n.d.) 

 

IaaS(Infrastructure as a Service)는 인터넷상에서 프로비저닝되고 관리되는 즉각적인 컴퓨팅 인프라로서, SaaS(Software as a Service), PaaS(Platform as a Service) 및 서버리스와 함께 네 가지 클라우드 서비스 유형 중 하나입니다.

Quotation 3 IaaS ? (Microsoft, n.d.)

 

위의 내용을 종합해 볼 때, IaaS 클라우드 서비스는 인터넷을 통하여 사용자에게 IT 인프라 즉 컴퓨팅 리소스, 네트워크 리소스, 저장소 리소스등을 제공하는 서비스로 그 기능등에는 다양한 기능(컴퓨팅 자원 생성은 물론 자동 확장, 컴퓨팅 리소스 위치, 데이터 클러스터링 등)을 제공하는 것으로 보여집니다.

 

다시 말해 당신이 원한다면 인터넷을 통해(=ondemand) 서버와 디스크, 네트워크 등을 제공받을 수 있으며 이를 이용하여 기존 서버개념의 서비스 런칭을 가상화 서버 개념의 서비스로 런칭하여 고객에게 제공할 수있게 되는 것이다(기존 서버 개념과 가상화 서버 개념의 차이는2편 가상화와 클라우드(Virtualization and Cloud)”을 참고하기 바란다).

 

IaaS 클라우드 서비스를 데이터 센터 적인 관점에서 보면 각 요소를 소프트웨어적으로 정의하여 사용한다고 하여 컴퓨터를 SDC(software defined compute), 네트워크를 SDN(software defined network), 스토리지를 SDS(software defined storage)로 구분하여 이야기할 수 있습니다. 우리는 이것을 SDDC(software defined data center)[1]라고 표현합니다.

 

[1] SDDC(software defined data center): 일반적으로 SDDC에는 SDC, SDN, SDS외에 SDF 즉 Software Define Facilities까지를 포함해야 한다. 이는 시설 즉 공조시설을 비롯한 데이터 센터내의 시설적인 부분등을 소프트웨어로 정의하여 사용 할 수 있어야한다. 허나 여기선 생략하여 이야기한다.

 

앞으로 살펴볼 내용은 위의 내용을 기반으로 컴퓨팅, 네트워킹, 저장소등의 IaaS 클라우드 서비스의 영역에 대해서 살펴보고 그 위주로 이야기를 나눠보도록 하겠습니다. 왜냐하면 이렇게 나눠서 보는 것이 조금은 더 명확하고 구분하기 편하기 때문입니다.

 

Precondition(전제조건)

 

기본적으로 SDC, SDN, SDS는 각 요소에 대한 가상화가 가능하다는 것을 전제조건으로 합니다. , 각 컴퓨터, 네크워크, 스토리지등의 IT 인프라 요소를 가상화 및 추상화를 기반으로 제공하며, 이를 클라우드 서비스하기 위하여 오케스트레이터 등을 통하여 제어하고 관리한다고 보면 좋을 것 같습니다.

Image 1 Software Define Data Center (Insoft, n.d.)

SDC(Software Defined Compute)

 

소프트웨어 정의 컴퓨트는 컴퓨트 관련 하드웨어를 가상화와 추상화를 통해 제공되는 기능 그 자체라 볼 수 있으며, 기본적으로 API를 제공해야합니다. 간단히 생각한다면 우리가 앞서 배운 버츄얼 머신 모니터(Virtual Machine Monitor: VMM. A.k.a. Hypervisor)와 이 것을 제어할 수 있는 API가 여기에 해당한다 볼 수 있습니다. 또한 요즘에는 컨테이너(Container) 기술도 더해져 Docker LXC와 같은 기능들도 있으며 조금 더 포괄적으로 컴퓨트 관련하여 소프트웨어 적으로 정의하여 사용할 수 있는 서비스를 말할 수 있습니다.

 

List of SDC

  • VMM(A.K.A Hypervisor)
    • Hyper-V
    • Xen
    • KVM
    • ESXi
  • Container
    • LXC
    • LXD
    • Docker
    • Window Server Container
  • ETC

 

위에 나열한 종류 외에도 물론 여럿이 있습니다. 그러나 적어도 위의 나열한 SDC 관련 솔루션들은 CLI등을 통한 API를 제공하고 있으며, REST API등을 통하여 제공되거나, 제공할 수 있습니다.

SDN(Software Defined Network)

 

소프트웨어 정의 네트워크는 네트워크 하드웨어를 가상화 또는 추상화를 통하여 제공하는 것과 이를 소프트웨어 적으로 제어하는 것을 말합니다. 물론 API등을 통하여 제어기능 등을 제공할 수 있어야 합니다.

 

 

앞서 전제조건에서 이야기했듯이 가상화를 기반하여야 하기 때문에, NFV(network function virtualization) 즉 네트워크 기능 가상화를 기반으로 다양한 프로토콜과 패킷등을 전송하고 제어하는 것을 소프트웨어 적으로 정의 할 수 있도록 서비스를 제공합니다.

 

 

참고로 말씀드리면, 기본적으로 SDC를 통하여 클라우드 서비스를 하는 경우 네트워크 환경을 제공해야 하기 때문에 NFV를 활용하여 기본적인 기능들 즉, 네트워크 서브넷(Subnet)을 정의 및 할당하거나, 포트 포워딩, 공인아이피 할당 등 활용할 수 있도록 기능 제공을 합니다.

 

그러나 SDN NFV와 다르게 네트워크의 다양한 형태의 프로토콜과 데이터 패킷을 어떤 형식으로 어디에 전송하고 관리할 것인지를 정의하는 기능을 하기 때문에, 일반적인 클라우드 서비스에서는 보기 힘들거나 드물게 만날 수 있습니다.

 

Image 2 SDN의 구조 (Anthony, 2014)

 

<Image 2>에서 주요하게 봐야할 부분은 Infrastructure LayerControl Layer입니다. Infrastructure Layer는 기존의 하드웨어 네트워크 콘솔(Hardware Network Console:이하 콘솔)이라고 보시면 됩니다. 우리가 알고 있는 스위치(Switch)나 백본(Backbone)망과 같은 그러나 조금 차이가 있다면 규약(Protocol)에 따라 데이터 처리를 담당하는 콘솔내 제어(Control) 영역이 외부에 분리되어 있다는 것입니다.

 

전통적으로 보면 스위치(Switch)의 하드웨어 부분과 기존에 네트워크 벤더(Vendor)사 마다 하드웨어를 제어하는 소프트웨어를 일체형으로 설치하여 제공하였습니다. 하드웨어는 기본적으로 RJ45규격의 네트워크 포트 외에 각 네트워크 생산업체마다 자체 기능 제공을 위한 포트나 레버와 같은 하드웨어 기능을 제공하고, 이를 제어하는 소프트웨어를 설치하였습니다. 그렇기 때문에 회사마다 비슷하기도하고 다르기도한 명령어를 통하여 콘솔로 들어오는 데이터를 설정된 내역에 맞춰 규칙에 맞춰 전송하는 기능이 작동하였습니다.

 

그런데 SDN에서는 앞서 언급한 것과 같이 소프트웨어 분리하고 이를 다양한 방식으로 동작 및 제공하게 되는데, 일 예로 제어부(Control Layer)를 일반적인 서버에 운영체제를 설치하고 소프트웨어로 가상적인 네트워크 기능을 제공하는 NFV가 설치되어 네트워크 상의 패킷이 해당 서버로 입력되면 기존 콘솔에서 동작했던 소프트웨어 기능(Function)NFV를 통해 처리하여 패킷 전송을 기반시설부(Infrastructure Layer)로 이관하여 전송하게 됩니다.

 

SDNNFV를 제공하는 것에서 더 나아가서 이를 API와 같은 기능을 제공하고 소프트웨어 적으로 기능 제공하던 하드웨어의 동작 방법을 규약이 아닌 사용자 정의적으로 동작하도록 제공하는 것이 SDN의 특징이라 할 수 있습니다. “규약이 아닌 사용자 정의적으로 라는 말은 기존에 Hardware Network 7 LayerProtocol로 끝나는 규약을 더이상 중요하지 않고 사용자가 특정 데이터 패킷을 어떻게 처리하고 전송할지를 7 LayerProtocol을 고려하지 않고 정의할 수 있는 것입니다. 예를 들어 UDP로 들어온 데이터 패킷을 HTTP로 전송하거나 TCP로 전송하라등의 정의를 사용자가하게 되고 패킷은 그 정의된 방법대로 패킷을 전송하게 되는 것입니다. 이와 같은 부분이 기존의 네트워킹 프로그래밍과 획기적으로 다른 부분이라고 할 수 있습니다.

 

상단의 응용부(Application Layer)는 제어부(Control Layer)에서 제공되는 REST API와 같은 API를 구현하여 원하는 서비스를 제공하는 것을 말합니다.

Overlay SDN

 

Overlay SDN은 앞서 설명했던 것과 같습니다. 제어부(Control Layer)를 서버 가상화 영역에 설치하여 네트워크를 구현하는 방법으로써 하드웨어 네트워크 콘솔은 그저 제어부에서 명령하는 대로 데이터를 전송하기만 하면 됩니다.

Underlay SDN

 

Underlay SDN은 기존은 하드웨어 네트워크 콘솔과 같이 하드웨어와 이를 제어하는 소프트웨어를 설치하여 제공하는 것을 말합니다. 하지만, 소프트웨어는 기존에 전통적으로 제공되는 소프트웨어와 달리 SDN을 설치하여 제공하는 방법입니다. 하드웨어 네트워크 콘솔 자체적으로 REST API등을 제공하고 앞서 말한 SDN의 역할을 하게 됩니다.

둘의 차이(Overlay? Underlay?)

 

그렇다면 둘의 차이는 무엇일까요? Overlay의 경우 SDN을 특정하지 않고 서비스 제공자가 원하는 솔루션, 프레임워크를 설치하여 제공한다면 Underlay는 하드웨어 네트워크 콘솔 제작업체가 제공하는 SDN을 사용해야 하는 것입니다. 반면, Overlay는 일반적인 OS에서 동작하는 만큼 OS적인 여러 이벤트 및 관리, 드라이버등에 따르는 성능(Performance)Underlay에 비하여 떨어질 것입니다(Underlay는 최적화되고, 집중적으로 사용자 정의에 따르는 네트워크 설정 동작을 하겠지만, Overlay는 하드웨어 입출력 이벤트, 운영체제내의 스케줄링 및 관리 기준에 따른 동작 다른 서비스에 의한 방해 등으로 성능이 좋지 못하거나 방해 받을 수 있습니다).

 

List of SDN

  • 오픈소스 SDN
    • Open Network Operating System(ONOS)
    • Opendaylight(ODL)
  • 상용 SDN
    • Cisco Application Policy Infrastructure Controller(APIC)
    • VMWare NSX-T
    • Attoresearch Attoaccess
    • KulKloud PRISM Application
    • NAIMNETWORKS Tango

SDS(Software Defined Storage)

 

소프트웨어 정의 스토리지는 앞서 언급한 것과 같은 맥락으로 스토리지를 충상화 및 가상화를 통하여 사용자에게 제공하는 것과 이를 가능하도록 API등을 제공하는 것을 말합니다.

 

우리가 일반적으로 사용하는 HDD, SDD와 같은 블록 스토리지(Block Storage), SAN, NAS와 같은 네트워크 스토리지 뿐 아니라, 일반적으로 클라우드가 무엇인가요?”라는 질문의 답으로 많이 언급되는 엔드라이브, 구글드라이브와 같은 오브젝트 스토리지(Object Storage) 등이 있습니다(아마도 테이프 타입의 스토리지는 지원되는 경우를 못봤습니다).

 

이렇듯 다양한 형태의 스토리지 가상화를 활용하여 제공하는 것을 소프트웨어 정의 스토리지라 말할 수 있다. 물론 IOPS와 같은 데이터의 처리 성능 등을 설정할 수 있는 고급기능등을 제공하기도 한다. 하이퍼바이저(Hypervisor) 기반의 SDS, 컨테이너 기반의 SDS, 분산 파일 시스템 등이 있을 것입니다.

 

List of SDS

  • 오픈소스 SDS
    • Ceph
    • GlusterFS
    • Apache Cassandra
    • Swift
  • 상용 SDS
    • Cisco Hyperflex
    • VMware vSAN, Virtual Volume

 

Conclusion(결론)

 

앞서 설명한 것과 같인 IaaS는 말그대로 Infrastructure에 대하여 가상화를 기반으로 서비스로 제공하는 것입니다. 이를 위해서 컴퓨트, 네트워크, 스토리지에 대한 가상화 솔루션을 활용하여 제공하는 것이 일반적입니다. 이렇듯 소프트웨어로 정의(=가상화)하여 기반시설(Infrastructure)을 실제와 같이 제공하는 것이 SDX(Software Defined X)라 표현하며 제공하는 것이라 볼 수 있습니다. 물론 오픈스택, 오픈스택잇과 클라우드잇(이노그리드 클라우드 솔루션) 같은 솔루션은 소프트웨어 정의 네트워크와 같은 기능이 기본적으로 제공되지 않습니다. 별도의 연동을 할 수 있도록 작업하여 제공하게 됩니다. 이 말씀은 드리는 이유는 기본적으로 SDC NFV를 활용하여 구축하는 경우가 일반적으로 많습니다. SDN, SDS는 별도로 솔루션들을 만들어 제공하고 연동하게 됩니다. 앞서 클라우드와 가상화에서 설명 드렸던 것은 컴퓨트관련 가상화를 기반으로 설명을 드렸던 것입니다. 따라서 네트워크와 스토리지도 가상화를 기반으로 제공되는 서비스에 대한 별도의 설명이 필요할 수 있습니다(여기서는 각각에대해 대략적인 설명 외 상세한 설명을 하지 않습니다). 또한, SDC, SDN, SDS등을 오케스트레이터에서 관리하여 인터넷, 웹등 클라이언트를 통하여 클라우드 서비스를 하게 되는 것이 IaaS라고 정리할 수 있겠습니다.

 

Digression(여담)

 

사실 이 이야기를 어디서 하면 좋을까 고민을 했었습니다. 바로 컨테이너 기술입니다. 그러다 생각해 보니 컨테이너 기술이 가상화 기술에 기인한 것은 아니지만, 주로 IaaS적으로 많이 사용되는 것이라 생각해 IaaS를 끝내면서 여담으로 컨테이너에 대해서 간략하게 언급하고 가상화적으로 무엇이 다른지 이야기하고 마무리하겠습니다.

 

우선 컨테이너 기술은 리눅스(linux) 커널(kernel) 기능 중 cgroups(control groups)이라는 프로세스들의 자원사용(CPU, Memory, Disk I/O, Network)을 제한하고 격리하는 기능을 기반하여 제공되는 기능입니다. 2006년도 구글에서 처음 개발을 시작하여 프로세스 컨테이너(process container)라는 이름으로 불렸지만, 커널 소스 문맥에 컨테이너라는 용어들이 사용되는 부분과 혼동이 될 수 있어 컨트롤 그룹스(control groups)라는 이름으로 변경되게 되었습니다.

 

따라서, 컨테이너 기술은 가상화 기술과 다른 기술인 것입니다(2023-01-03 현재 일부에서는 컨테이너를 또 다른 형태의 가상화로 보고 있는 추세입니다). 한정된 서버 자원을 나누어 사용하는 형식으로 CPU를 활용 등 매우 차이가 나게 되며(가상화는 물리적인 CPU코어 보다 그 이상의 코어를 가상화로 제공하는 반면 컨테이너 기술의 기본은 제한과 격리만 가능하기 때문에 물리 CPU 코어 이상으로 서비스 제공하기 어렵습니다-물론 요즘에는 다른 방법들이 있을 순 있지만 적어도 초기 컨테이너 서비스들은 CPU코어를 물리 코어 이상으로 제공하는 것은 힘들었습니다), 운영체제도 가상화 기반의 컴퓨터와 다르게 OS를 선택하는 것에 제약이 따릅니다.

 

컨테이너 기술은 가상화 솔루션 없이 기본적인 컴퓨터에서 커널의 기능을 활용하여 격리되고 제한적인 즉 독립된 컴퓨트 환경을 제공하는 것으로 가상화와 다르다 할 수 있습니다. 또한 컨테이너 기술은 리눅스에 기본적으로 제공되는 기능으로 본다면 가상화 서버에 설치된 리눅스에서도 해당 기능을 활용할 수 있기 때문에 LXC, Docker등을 Virtual Machine(VM)에 설치하고 관리하는 기술들까지 제공할 수있게 되었습니다(이렇게 제공되는 컨테이너는 VM에서 동작함으로 물리적인 CPU코어 이상으로 제공하는 것이 가능해 집니다).

 


인용 참고 자료

 

SamJohnston. (2008). Infrastructure as a service. 검색: Wikipedia: https://en.wikipedia.org/wiki/Infrastructure_as_a_service

Microsoft. IaaS ? 검색: Microsoft Azure: https://azure.microsoft.com/ko-kr/overview/what-is-iaas/

Red Hat. IaaS ? 검색: Red Hat Enterprise: https://www.redhat.com/ko/topics/cloud-computing/what-is-iaas

Insoft. Open SDDC High Concept. 검색: Open SDDC: http://www.in-soft.co.kr/en/sddc/

AnthonyChow. (2014.08). Destiny - The Cloud. 검색: Bloger: http://cloudn1n3.blogspot.com/2014/08/is-vmwares-nsx-sdn-nfv-or-nv.html