주 메뉴 바로가기본문 내용 바로가기
메뉴 넘어가기
HOT ISSUE.2

클라우드의 핵심,
네트워크 가상화

고려대학교 정보대학 컴퓨터학과 유혁 교수

시작하는 말

언젠가부터 우리는 IT 서비스의 도움을 받지 않는 삶을 도저히 상상할 수 없게 되었다. 이미 휴대폰을 비롯한 IT 서비스는 생활 곳곳에 스며들어 일상을 윤택하게 만들어주고 있다. 만약 카카오톡과 같은 어플이 몽땅 사라진다면 어떻게 친구들과 단체 채팅을 할 수 있을까? 유튜브나 넷플릭스가 사라진다면 버스나 지하철에서 그 지루한 시간을 어떻게 버틸 것인가? 그런데 이러한 IT 서비스, 생겨난 지 고작 10년, 길어야 20년도 되지 않았다. 카카오톡은 2010년에 처음 출시되었고, 유튜브와 넷플릭스는 각각 2008년, 2015년에야 한국에 들어왔다. 과연 IT 서비스는 어떻게 이렇게 빠른 시간 내에 삶에 큰 영향을 미칠 수 있었을까? 이러한 IT 서비스의 폭발적인 발전을 이끌어낸 기술은 클라우드 이다. 이 글에서는 먼저 클라우드에 대하여 설명하고, 그 중심에 있는 가상화와 최신 가상화 기술인 네트워크 가상화를 알기 쉽게 설명한다.

1. 클라우드란?

카카오톡이나 유튜브, 넷플릭스와 같은 서비스를 운영하려면 어딘가에 연산(computation)과 데이터를 저장해야 한다. 가령 카카오톡은 새로운 메시지를 상대방의 계정과 장치를 구분하여 적절히 전달해주어야 한다. 유튜브나 넷플릭스는 어딘가에 영상들을 저장해두고, 사용자가 영상을 재생할 때마다 최대한 낮은 지연으로 끊김없이 볼 수 있도록 해야 한다. 이때 IT 서비스마다 연산과 데이터를 저장하기 위해 필요로 하는 자원이 있는데, 이를 인프라(infra)라고 한다. 인프라는 자료를 보관하기 위한 저장 장치(스토리지), 연산을 수행하는 고성능 컴퓨터(서버), 인프라 장치 간의 통신을 위한 네트워크로 구성된다.

이때 중요한 것은, 인프라를 얼마나 구축해 두어야 원하는 IT 서비스를 문제없이 제공할 수 있느냐는 것이다. 가령, 넷플릭스에서 영상을 저장하고 사용자에게 보내기 위한 인프라를 꾸린다고 해보자. 이러할 경우 사용자가 언제든 영상을 시청하기에 지장이 없도록 매끄럽게 재생해줄 수 있을 만큼 인프라를 제공하면 충분할 것이다. 그런데 "오징어 게임"이나 "지금 우리 학교는?"처럼 새로운 드라마가 엄청난 인기를 끌어버려서 사용자의 요청이 엄청나게 급증한다고 가정해보자. 당연히 서비스를 제공하기 위한 서버 자원이 훨씬 많이 필요하게 될 것이다. 반면, 인기 드라마가 출시된 지 한참 지나서 사용자의 요청이 이전보다 훨씬 줄어든 상황을 상상해보자. 그러면 미리 준비한 서버 자원 등이 거의 사용되지 않고 놀게 될 것이다. IT 서비스마다 얼마만큼의 인프라 자원을 할당하는 것이 1)인프라 구축의 비용 면에서, 또 2)할당된 자원의 사용률(utilization) 측면에서 적정한지 결정해야 하는데 이것을 자원 할당(resource provisioning)의 문제라고 부른다(그림1).

그림1 자원 할당과 격리 자원 할당과 격리

자원 할당을 통하여 적절한 수의 서버들을 설치하고 운영만 한다고 모든 문제가 해결되는 것이 아니다. 대부분의 IT 서비스는 무수히 많은 연산 기능이 함께 존재한다. 가령 넷플릭스는 새로운 동영상을 저장(업로드)하는 기능, 영상의 화질을 변환하는 기능, 영상을 보내는 기능, 영상이 끊기지 않도록 적절한 코덱(codec)을 선택하고 통신의 품질을 제어하는 기술 등이 쓰인다. 이렇게 다양한 기능 중 동영상 저장 기능이 갑자기 문제를 일으켜 종료되었다고 해보자. 새로운 동영상의 저장이 멈추더라도, 사용자에게는 다른 기능들은 끊임없이 제공되어야 한다. 이렇게 여러 서비스들이 공존하는 상황에서, 하나의 서비스에 발생한 문제가 다른 서비스에 문제를 야기하지 않아야 하는데, 이것을 격리(isolation)라고 부른다(그림1). 이 격리가 제대로 지켜지지 않으면 서비스들이 서로 간섭(interference) 현상을 일으키게 된다.

실제 IT 서비스를 운영하는 데에 있어 인프라의 자원 할당과 서비스 간의 격리 보장은 큰 기술적인 도전(challenge)에 해당한다. 항상 가장 많은 사용자의 요청에 대비하여 인프라를 꾸리기에는 너무 많은 비용이 들고, 그렇다고 적게 구축하면 서비스의 품질이 저하된다. 이러한 도전들로 인해 기업은 서비스를 제공하기 위한 인프라의 구축 및 운용에 큰 시간과 비용을 소모한다.

클라우드 서비스 이미지

위와 같은 도전을 해결해 주는 것이 클라우드 이다. 클라우드는 서비스에 필요한 인프라를 필요할 때 빌려서 쓸 수 있게 한다. 즉, 클라우드 컴퓨팅 개념 하에서 인프라는 빌려 쓰는 유연한 자원이 된다. 구글이나 마이크로소프트, 아마존과 같은 대형 IT 업체는 서버나 스토리지, 네트워크 등을 세계 각지에 미리 구축해 둔다. 구축된 인프라를 데이터 센터라고 부른다. IT 서비스 업체는 필요한 인프라의 양을 데이터 센터에 요청해 즉각적으로 인프라를 받아 사용할 수 있게 된다. 즉 사용자의 요청이 급증한다면 인프라를 추가로 요청하여 바로 사용하고, 요청이 줄어들어 더 이상 인프라가 필요 없게 되면 그 즉시 반납하게 되는 것이다.

클라우드 컴퓨팅을 통해 IT 서비스 업체는 더 이상 인프라를 자체적으로 구축하거나 운용할 필요가 없게 되었다. 이렇게 IT 서비스의 운용 방식이 점차 클라우드 중심으로 변화함에 따라, 새로운 IT 서비스가 더 신속하고 안정적으로 제공되게 되었다.

2. 가상화란?

그렇다면 데이터 센터 내의 인프라 자원이 어떻게 여러 사용자에게 손쉽게 제공되는 것일까? 여기엔 "가상화"(virtualization)라는 기술이 열쇠가 된다. 가상화란 한정된 자원(물리 자원)을 기반으로 각 사용자가 독립적으로 사용할 수 있는 가상의 컴퓨터(서버)를 생성하여 제공하는 기술을 의미한다. 하나의 컴퓨터는 CPU, 메인 메모리(RAM 등), 스토리지(하드디스크 또는 SSD 등)와 같은 여러 자원으로 구성된다. 가상화는 주어진 물리 자원을 쪼개어 여러 개의 가상 컴퓨터를 만들어낸다. 가령 나에게 CPU 코어 총 20개, 메모리 64 GB, SSD 1 TB의 컴퓨터가 1대 있다고 하자. 이때 가상화를 통해 CPU 코어 5개, 16 GB 메모리, 그리고 250 GB의 SSD를 제공받은 가상 컴퓨터 4대를 만들어낼 수 있다. 쪼개진 자원들로 구성된 가상 컴퓨터 내에서 사용자는 자유롭게 운영 체제(윈도우, 안드로이드, 리눅스 등)와 응용 프로그램(메일, 동영상 서비스, 웹 서버 등)을 구동할 수 있다. 따라서, 클라우드를 제공하는 업체(예: 아마존)는 인프라를 잘게 쪼개어 여러 서비스를 유연하게 이용할 수 있게 해주게 된다

그림3 가상화 가상화

가상화 기술은 1960년대부터 연구되어 왔지만, 주어진 컴퓨터를 쪼개서 사용한다는 특성상 성능이 매우 떨어진다는 한계를 가져 한동안 상용화되지 못했다. 이는 가상화 시 단순히 자원을 쪼개서 제공만 해서는 사용자 간의 격리가 이루어지지 못하기 때문이다. 예를 들어, 위에서 생성한 가상 컴퓨터 4대를 생각해보자. 만약 4대 중 1대가 자신이 사용할 수 있는 메모리 영역 외에 다른 가상 컴퓨터에게 제공된 메모리 영역에 접근한다고 하자. 이를 막기 위해서는 각 가상 컴퓨터가 메모리에서 정보를 읽거나 쓸 때마다 해당 가상 컴퓨터에게 허용된 메모리 영역인지에 대한 계속적인 확인이 필요하다면, 이는 메모리 입출력 속도가 증가하는 오버헤드를 동반하여 가상컴퓨터 성능을 저하시킨다. 가상화는 자원을 쪼개어 제공할 뿐만 아니라 가상컴퓨터 성능이 저하되지 않도록 하는 기술이다. 또한 가상화는 자원이 사용될 때마다 사용자의 격리를 보장한다.

가상화는 한동안 학계에서만 연구되는 영역에 남아 있다가, 2000년대 초에 이르러 반가상화 등 성능 저하를 줄일 수 있는 기술이 도입되면서 비약적인 발전이 이루어졌다. 이를 기점으로 가상화되지 않은 컴퓨터와 가상 컴퓨터가 어느 정도 유사한 성능에 도달할 수 있었고1), 그제야 가상화 기술이 상용화되고 더 나아가 클라우드 컴퓨팅이 활성화되었다. 가상화에서 핵심적인 기술을 "하이퍼바이저"라고 한다(그림3).

3. 한 발 더 도약한 네트워크 가상화

하이퍼바이저 기반의 가상화 기술은 클라우드를 사용하는 IT 서비스가 원하는 양의 인프라 자원을 실시간으로 요구하고 제공받을 수 있도록 하였다. 가령 현재 구글이나 아마존 클라우드를 이용하게 되면 CPU 코어의 개수, 메모리 크기, 저장 장치의 크기 등을 지정하여 가상 컴퓨터를 생성하고 바로 사용할 수 있다. 그러나 한 가지 큰 문제점은 가상 머신들 간의 네트워크 자원은 가상화할 수 없다는 것이다. IT 서비스를 제공하기 위한 인프라는 앞서 언급했듯이 서버, 스토리지, 그리고 네트워크로 구성된다. 네트워크는 서로 떨어진 (가상 컴퓨터를 포함하여) 서버들 간에 통신을 제공하는 데 사용된다. 가령 동영상 스트리밍 서비스를 클라우드에서 운용한다고 하자. 그러면 동영상을 저장하기 위한 스토리지, 스토리지에서 동영상을 읽어와 사용자에게 보내는 서버, 또 동영상의 화질을 여러 단계로 변경하고 제공하는 서버 등 다양한 서버가 각각 존재하게 된다.

이때 서버들 간에 전송할 영상을 보내거나, 화질을 변경한 영상을 전달하는 등 통신이 필요하며 여기에 네트워크가 사용된다. 그러나 지금까지의 기술적 문제점은 서버나 스토리지 자원에 대한 가상화는 충분히 제공되고 있어서 클라우드 사용자는 서버와 스토리지에 원하는 자원의 양을 요청하거나 임의로 생성하고 삭제하는 등 유연하게 사용할 수 있게 되었다. 그러나, 네트워크 자원에 대해서는 가상화 기술이 적용되지 못하고 있다. 즉, 네트워크를 사용하는 서비스 간 격리되지 못한 상태로 네트워크가 사용되고 있다. 따라서, 서버들 간에 통신할 때 간섭의 문제가 발생하여 네트워크 성능이 저하되기도 하며, 네트워크의 어딘가에서 문제가 발생하고 있을 때, 사용자 입장에서는 네트워크 자원이 가상화되고 격리되지 않기 때문에 네트워크에서 문제가 발생했는지 알 방법이 없다.

그림4 네트워크 가상화 네트워크 가상화
(좌) 네트워크 가상화의 개념도
(우) 본 연구진이 개발한 네트워크 하이퍼바이저의 구조도2)

네트워크 가상화가 부재하다는 것은 클라우드 인프라에 있어 매우 심각한 문제이다. 앞서 예로 들었던 동영상 스트리밍뿐만 아니라 최근에는 인공지능이나 블록체인 등 소위 4차 산업혁명의 핵심 기술로 간주되는 IT 기술이 모두 클라우드를 기반으로 운용된다. 인공지능 모델은 최근 그 규모가 매우 커지고 있어 모델 하나를 학습하는 데 GPU 수십 장과 수십 대의 서버가 필요하며, 모델을 학습하기 위해 서버들이 끊임없이 네트워크 통신을 수행해야 한다. 또한 블록체인은 그 기술 자체가 분산되어 있는 컴퓨터 간의 통신을 전제로 하고 있기에 가상화되지 않고 격리되지 않은 네트워크는 서비스의 운용 자체를 어렵게 만든다.

이를 해결하기 위해 필자와 연구진은 "네트워크 가상화"라는 개념 및 기술을 개발했다. 네트워크 가상화는 (그림3)에서 CPU, 메모리, 스토리지 등에 대해 하이퍼바이저를 통해 가상 컴퓨터를 만든 것처럼, 네트워크 자원인 네트워크 스위치, 라우터, 방화벽 등에 대해 가상화를 수행하는 "네트워크 하이퍼바이저"를 통해 이루어진다. 네트워크 하이퍼바이저는 한정된 네트워크 자원을 다수의 가상 네트워크가 공유하면서도 상호 간에 격리시킨다. 특히 각 사용자가 원하는 형태로 네트워크가 연결될 수 있게 하고, 마치 CPU나 메모리에 대해 원하는 프로그램을 실행하듯이 네트워크 스위치나 라우터에서 원하는 대로 통신을 제어하고 통제할 수 있도록 한다. 또한 네트워크 특정 지점에서 얼마나 많은 통신이 수행되었는지 등을 확인하고(모니터링), 가상 컴퓨터 간 통신의 성능(대역폭)을 고립하고 보장할 수 있도록 하였다. 네트워크 하이퍼바이저는 세계 유수의 최고 학술지와 학술 대회에 발표되었고2~4), 2021년 국가 R&D 연구과제 중 최우수 기술로 선정되었다. 최근에는 네트워크 하이퍼바이저의 오버헤드가 성능 측면에서 큰 저하를 발생시키지 않는다는 것을 입증하였다5). 이로서, 가상화가 클라우드 핵심기술이 되었던 것처럼, 네트워크 가상화가 미래 IT서비스의 핵심적인 역할을 담당하게 될 것이다.

4. 컴퓨팅 인프라 기술의 미래

최근에는 클라우드 컴퓨팅 기술이 더 개선된 성능, 유연한 인프라의 제공을 위해 발전하고 있다. 가령, 데이터 센터를 사용자에게 근처에 두고, 영상 스트리밍이나 스마트 팩토리, 사회 안전 유지 등의 서비스가 지연되지 않고 제공될 수 있도록 하는 엣지(edge) 컴퓨팅과 포그(fog) 컴퓨팅이 대표적인 예이다. 이러한 클라우드에서도 핵심 기술은 가상화이며, 그 중에서도 네트워크 가상화가 서비스의 품질과 사용자의 만족도를 좌우하는 핵심 지표로 간주된다.

더 나아가 5G와 그 이후의 기술을 다루는 B5G(Beyond 5G) 등에서는 이제 네트워크와 서버의 경계가 사라지고, 네트워크를 구성하는 스위치나 라우터가 통신을 수행하는 중간에 성능을 올리기 위한 일부 연산을 수행하는 네트워크 내부 컴퓨팅(In-network computing)이 핵심적인 기술로 여겨지고 있다. 이러한 상황에서 네트워크 가상화는 클라우드가 제공하는 가상화의 범주를 네트워크까지 넓혀 사용자가 네트워크 자원까지 자유롭게 사용할 수 있다는 점에서 더욱 주목받을 수 있으리라 기대한다.

본 기고를 통해 미래 과학, 공학기술을 이끌어나갈 인재들이 IT 서비스의 신속한 개발과 안정적인 제공을 가능케 하는 인프라 기술에 관심을 가지게 되었기를 바라며, 더욱 혁신적이고 선도적인 인프라 기술이 우리나라에서 탄생할 수 있기를 기대한다.

* 더 자세한 기술적 내용들은 아래 논문들을 참고하기 바란다.
  • 1) "Xen and the art of virtualization." ACM SIGOPS operating systems review 37.5 (2003): 164-177.

  • 2) "Libera for Programmable Network Virtualization," in IEEE Communications Magazine, vol. 58, no. 4, pp. 38-44, April 2020.

  • 3) "Network Monitoring for SDN Virtual Networks," IEEE INFOCOM 2020 - IEEE Conference on Computer Communications, 2020, pp. 1261-1270.

  • 4) "Bandwidth Isolation Guarantee for SDN Virtual Networks," IEEE INFOCOM 2021 - IEEE Conference on Computer Communications, 2021, pp. 1-10.

  • 5) "A Case for SDN-based Network Virtualization," 2021 29th International Symposium on Modeling, Analysis, and Simulation of Computer and Telecommunication Systems (MASCOTS), 2021, pp. 1-8.